diff options
590 files changed, 35381 insertions, 9996 deletions
@@ -88,6 +88,7 @@ Pieter-Jan Briers <pieterjan.briers+git@gmail.com> Pieter-Jan Briers <pieterjan.briers+git@gmail.com> <pieterjan.briers@gmail.com> Poommetee Ketson <poommetee@protonmail.com> PrzemysÅ‚aw Gołąb (n-pigeon) <golab.przemyslaw@gmail.com> +RafaÅ‚ Mikrut <mikrutrafal54@gmail.com> Ralf Hölzemer <r.hoelzemer@posteo.de> <rollenrolm@posteo.de> Ralf Hölzemer <r.hoelzemer@posteo.de> <rollenrolm@users.noreply.github.com> Ramesh Ravone <ramesh.maran443@gmail.com> @@ -112,4 +113,5 @@ Wilhem Barbier <nounoursheureux@openmailbox.org> <wilhem.b@free.fr> Wilhem Barbier <nounoursheureux@openmailbox.org> <schtroumps31@gmail.com> Will Nations <willnationsdev@gmail.com> yg2f <yoann@terminajones.com> +Zak Stam <zakscomputers@hotmail.com> Zher Huei Lee <lee.zh.92@gmail.com> diff --git a/.travis.yml b/.travis.yml index 7bf968ba4c..7350849d6a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ cache: matrix: include: - - name: Static checks (clang-format) + - name: Static checks (clang-format) + Documentation checks stage: check env: STATIC_CHECKS=yes os: linux @@ -128,7 +128,8 @@ before_script: script: - if [ "$STATIC_CHECKS" = "yes" ]; then - sh ./misc/travis/clang-format.sh; + sh ./misc/travis/clang-format.sh && + doc/tools/makerst.py --dry-run doc/classes modules; else scons -j2 CC=$CC CXX=$CXX platform=$PLATFORM tools=$TOOLS target=$TARGET $OPTIONS $EXTRA_ARGS && if [ "$TEST_PROJECT" = "yes" ]; then diff --git a/AUTHORS.md b/AUTHORS.md index e9d095aae3..4dfb97641a 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -29,6 +29,7 @@ name is available. Aaron Franke (aaronfranke) Alexander Holland (AlexHolly) + Alexey Khoroshavin (allkhor) Alket Rexhepi (alketii) Andrea Catania (AndreaCatania) Andreas Haas (Hinsbart) @@ -61,6 +62,7 @@ name is available. DualMatrix Emmanuel Barroga (codecustard) Emmanuel Leblond (touilleMan) + Eoin O'Neill (Eoin-ONeill-Yokai) Eric Lasota (elasota) Erik Selecký (rxlecky) est31 @@ -76,6 +78,7 @@ name is available. Gordon MacPherson (RevoluPowered) Guilherme Felipe de C. G. da Silva (guilhermefelipecgs) Hanif Bin Ariffin (hbina) + Haoyu Qiu (timothyqiu) Hein-Pieter van Braam-Stewart (hpvb) Hiroshi Ogawa (hi-ogawa) homer666 @@ -101,6 +104,7 @@ name is available. Leon Krause (eska014) Lucien Menassol (Kanabenki) m4nu3lf + Marcel Admiraal (madmiraal) Marcelo Fernandez (marcelofg55) Marc Gilleron (Zylann) Marcin Zawiejski (dragmz) @@ -164,5 +168,6 @@ name is available. Xavier Cho (mysticfall) yg2f (SuperUserNameMan) Yuri Roubinsky (Chaosus) + Zak Stam (zaksnet) Zher Huei Lee (leezh) ZuBsPaCe diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..f10438769d --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,4 @@ +# Code of Conduct + +By participating in this repository, you agree to abide by the +[Godot Engine Code of Conduct](https://godotengine.org/code-of-conduct). diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt index f86b8563ef..213eafdeb5 100644 --- a/COPYRIGHT.txt +++ b/COPYRIGHT.txt @@ -115,12 +115,6 @@ Comment: Open Asset Import Library (assimp) Copyright: 2006-2016, assimp team License: BSD-3-clause -Files: ./thirdparty/b2d_convexdecomp/ -Comment: Box2D (ConvexDecomp) -Copyright: 2007, Eric Jordan - 2006-2009, Erin Catto -License: Zlib - Files: ./thirdparty/bullet/ Comment: Bullet Continuous Collision Detection and Physics Library Copyright: 2003-2013, Erwin Coumans @@ -12,27 +12,23 @@ generous deed immortalized in the next stable release of Godot Engine. ## Platinum sponsors - Enjin Coin <https://enjincoin.io> Heroic Labs <https://heroiclabs.com> Interblock <http://interblockgaming.com> ## Gold sponsors Gamblify <https://www.gamblify.com> - Image Campus <https://www.imagecampus.edu.ar> Moonwards <https://www.moonwards.com> ## Mini sponsors AD Ford Alan Beauchamp - Anandarup Mallik + Anand Mallik Andrew Dunai Brandon Lamb Christopher Montesano - Christoph Woinke Darkhan Baimyrza - Denis Malyavin Edward Flick Gamechuck GameDev.net @@ -54,7 +50,6 @@ generous deed immortalized in the next stable release of Godot Engine. Mike King Nathan Warden Neal Gompa (Conan Kudo) - ScottMakesGames Slobodan Milnovic Stephan Lanfermann Steve @@ -64,7 +59,6 @@ generous deed immortalized in the next stable release of Godot Engine. ## Gold donors Andrei - cheese65536 Dave David Gehrig David Snopek @@ -73,7 +67,6 @@ generous deed immortalized in the next stable release of Godot Engine. Florian Rämisch GiulianoB Jakub Grzesik - K9Kraken Manuele Finocchiaro Officine Pixel S.n.c. Retro Village @@ -95,7 +88,6 @@ generous deed immortalized in the next stable release of Godot Engine. Default Name Florian Breisch Gamejunkey - Gero Javier Roman Jay Horton Joel Höglund @@ -107,22 +99,22 @@ generous deed immortalized in the next stable release of Godot Engine. Luke Maciej Pendolski Matthew Hillier + Mohamed Ikbel Boulabiar Mored1984 - Paul LaMotte Péter Magyar Rob Messick Ryan Badour Scott Wadden Sergey Shawn Yu - The Architect thechris Tom Langwaldt tukon Unseen Domains + William Wold Alex Khayrullin - Branwyn Tylwyth + Branwyn “Bee†Tylwyth Chris Goddard Chris Serino Christian Padilla @@ -144,6 +136,7 @@ generous deed immortalized in the next stable release of Godot Engine. Robert Willes Ronnie Ashlock Thomas Bjarnelöf + Valryia Vincent Henderson Wojciech Chojnacki Xavier PATRICELLI @@ -153,7 +146,6 @@ generous deed immortalized in the next stable release of Godot Engine. Alexey Dyadchenko Andreas Funke André Frélicot - andres eduardo lopez Andrew Bowen aoshiwik Ben Botwin @@ -178,17 +170,16 @@ generous deed immortalized in the next stable release of Godot Engine. Hysteria Idzard Kwadijk Jared White + Jeff Nyte Jeremy Sims Jerry Ling Joe Flood Jose Malheiro Joshua Lesperance - Juan T Chen Juan Velandia Juraj Móza Kasper Jeppesen kinfox - Maarten Elings Marcelo Dornbusch Lopes Markus Fehr Markus Wiesner @@ -220,6 +211,7 @@ generous deed immortalized in the next stable release of Godot Engine. Tobias Bocanegra Urho Zie Weaver + è•æƒŸå… ## Silver donors @@ -232,6 +224,7 @@ generous deed immortalized in the next stable release of Godot Engine. Adam Nakonieczny Adam N Webber Adam Smeltzer + Adam SzymaÅ„ski Adisibio Adrian Demetrescu Agustinus Arya @@ -240,7 +233,6 @@ generous deed immortalized in the next stable release of Godot Engine. Albin Jonasson Svärdsby Alder Stefano Alessandro Senese - Alexandre Alex Davies-Moore Allen Schade Andreas Evers @@ -252,11 +244,11 @@ generous deed immortalized in the next stable release of Godot Engine. Angelos Arnaoutis Anthony Bongiovanni Anthony Staunton - Anton Kurkin AP Condomines Arda Erol Arseniy M Arthur S. Muszynski + Asger Atilla Kiran Aubrey Falconer Avencherus @@ -281,6 +273,7 @@ generous deed immortalized in the next stable release of Godot Engine. Christian Winter Christoffer Sundbom Christopher Schmitt + Christoph Woinke Clay Heaton Collin Shooltz Daniel Johnson @@ -291,6 +284,7 @@ generous deed immortalized in the next stable release of Godot Engine. David May David Rapisarda David Woodard + Dennis Idzikowsky Dominic Cooney Dominik Wetzel Donn Eddy @@ -304,23 +298,22 @@ generous deed immortalized in the next stable release of Godot Engine. Ellen Marie Dash Elmeri '- Duy Kevin Nguyen Emanuel Kotzayan - Ennemoser Ernst Eric Ellingson - Eric Martini Eric Williams Erkki Seppälä - EugeneTel Evan Rose + Fancy Ants Studios + Fekinox Felix Kollmann + fengjiongmax Flaredown - Florian Richer + Forty Doubleu FuDiggity G3Dev sà rl Gadzhi Kharkharov gamedev by Celio Gary Hulst George Marques - gmmath Greg Olson GREGORY C FEIN Greg P @@ -334,16 +327,13 @@ generous deed immortalized in the next stable release of Godot Engine. Iiari IndustrialRobot Isaac Morton - Jack Newley Jaiden Gerig Jaime Ruiz-Borau Vizárraga Jako Danar James A F Manley Jannik Gröger Jax - Jed Jeff Hungerford - Jeff Nyte Jennifer Graves Jeremy Kahn Jesse Dubay @@ -360,7 +350,6 @@ generous deed immortalized in the next stable release of Godot Engine. Jon Bonazza Jon Sully Jose Aleman - Jose Andrés Mejias Rojas Jose C. Rubio Joseph Catrambone Juanfran @@ -369,7 +358,6 @@ generous deed immortalized in the next stable release of Godot Engine. JungleRobba Justin Spedding Kaiser Bald0 - Kamuna Kauzig KC Chan Keedong Park @@ -389,7 +377,6 @@ generous deed immortalized in the next stable release of Godot Engine. Lionel Gaillard LunaticInAHat Lurkars - Macil Major Haul Malcolm Malik Ahmed @@ -422,7 +409,6 @@ generous deed immortalized in the next stable release of Godot Engine. Neil Blakey-Milner Nerdforge Nicholas - Nicholas Bettencourt Nick Macholl Niclas Eriksen Nicolás Montaña @@ -439,6 +425,7 @@ generous deed immortalized in the next stable release of Godot Engine. Paul Gieske Paul Mason PaweÅ‚ Kowal + Pedro Assuncao Penguin Petrus Prinsloo Philip Cohoe @@ -451,7 +438,6 @@ generous deed immortalized in the next stable release of Godot Engine. Raphael Leroux Remi Rampin Rémi Verschelde - Rezgi Ricardo Alcantara Richard Diss Richard Ivánek @@ -476,11 +462,10 @@ generous deed immortalized in the next stable release of Godot Engine. Shane Shane Sicienski Shane Spoor - Simon Ledam Simon Wenner SK smbe19 - Sootstone + Stonepyre Svenne Krap tezuvholovdr thomas @@ -489,7 +474,6 @@ generous deed immortalized in the next stable release of Godot Engine. tiansheng li Tim Drumheller Timothy B. MacDonald - TJRHTK Tobbun Tom Fulp Tom Glenn @@ -499,9 +483,11 @@ generous deed immortalized in the next stable release of Godot Engine. Troy Bonneau Tryggve Sollid Turgut Temucin + Tyler Compton Tyler Stafos UltyX Vaiktorg + Vaughan Ling Victor Vigilant Watch Vincent Cloutier @@ -514,7 +500,7 @@ generous deed immortalized in the next stable release of Godot Engine. Wout Standaert Wyatt Goodin Yegor - è•æƒŸå… + Yuri Sizov ## Bronze donors diff --git a/SConstruct b/SConstruct index 0e282a1f12..ce13c8bd2e 100644 --- a/SConstruct +++ b/SConstruct @@ -68,8 +68,6 @@ env_base.AppendENVPath('PATH', os.getenv('PATH')) env_base.AppendENVPath('PKG_CONFIG_PATH', os.getenv('PKG_CONFIG_PATH')) env_base.disabled_modules = [] env_base.use_ptrcall = False -env_base.split_drivers = False -env_base.split_modules = False env_base.module_version_string = "" env_base.msvc = False @@ -129,6 +127,7 @@ opts.Add(BoolVariable('dev', "If yes, alias for verbose=yes warnings=extra werro opts.Add('extra_suffix', "Custom extra suffix added to the base filename of all generated binary files", '') opts.Add(BoolVariable('vsproj', "Generate a Visual Studio solution", False)) opts.Add(EnumVariable('macports_clang', "Build using Clang from MacPorts", 'no', ('no', '5.0', 'devel'))) +opts.Add(BoolVariable('split_libmodules', "Split intermediate libmodules.a in smaller chunks to prevent exceeding linker command line size (forced to True when using MinGW)", False)) opts.Add(BoolVariable('disable_3d', "Disable 3D nodes for a smaller executable", False)) opts.Add(BoolVariable('disable_advanced_gui', "Disable advanced GUI nodes and behaviors", False)) opts.Add(BoolVariable('no_editor_splash', "Don't use the custom splash screen for the editor", False)) diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index 1544503045..4c8dcc20ea 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -584,6 +584,15 @@ bool _OS::is_vsync_enabled() const { return OS::get_singleton()->is_vsync_enabled(); } +void _OS::set_vsync_via_compositor(bool p_enable) { + OS::get_singleton()->set_vsync_via_compositor(p_enable); +} + +bool _OS::is_vsync_via_compositor_enabled() const { + + return OS::get_singleton()->is_vsync_via_compositor_enabled(); +} + _OS::PowerState _OS::get_power_state() { return _OS::PowerState(OS::get_singleton()->get_power_state()); } @@ -1335,6 +1344,9 @@ void _OS::_bind_methods() { ClassDB::bind_method(D_METHOD("set_use_vsync", "enable"), &_OS::set_use_vsync); ClassDB::bind_method(D_METHOD("is_vsync_enabled"), &_OS::is_vsync_enabled); + ClassDB::bind_method(D_METHOD("set_vsync_via_compositor", "enable"), &_OS::set_vsync_via_compositor); + ClassDB::bind_method(D_METHOD("is_vsync_via_compositor_enabled"), &_OS::is_vsync_via_compositor_enabled); + ClassDB::bind_method(D_METHOD("has_feature", "tag_name"), &_OS::has_feature); ClassDB::bind_method(D_METHOD("get_power_state"), &_OS::get_power_state); @@ -1349,6 +1361,7 @@ void _OS::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "current_screen"), "set_current_screen", "get_current_screen"); ADD_PROPERTY(PropertyInfo(Variant::INT, "exit_code"), "set_exit_code", "get_exit_code"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "vsync_enabled"), "set_use_vsync", "is_vsync_enabled"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "vsync_via_compositor"), "set_vsync_via_compositor", "is_vsync_via_compositor_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "low_processor_usage_mode"), "set_low_processor_usage_mode", "is_in_low_processor_usage_mode"); ADD_PROPERTY(PropertyInfo(Variant::INT, "low_processor_usage_mode_sleep_usec"), "set_low_processor_usage_mode_sleep_usec", "get_low_processor_usage_mode_sleep_usec"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "keep_screen_on"), "set_keep_screen_on", "is_keep_screen_on"); @@ -1371,6 +1384,7 @@ void _OS::_bind_methods() { ADD_PROPERTY_DEFAULT("current_screen", 0); ADD_PROPERTY_DEFAULT("exit_code", 0); ADD_PROPERTY_DEFAULT("vsync_enabled", true); + ADD_PROPERTY_DEFAULT("vsync_via_compositor", false); ADD_PROPERTY_DEFAULT("low_processor_usage_mode", false); ADD_PROPERTY_DEFAULT("low_processor_usage_mode_sleep_usec", 6900); ADD_PROPERTY_DEFAULT("keep_screen_on", true); diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index 18182860c6..d57da36ca5 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -345,6 +345,9 @@ public: void set_use_vsync(bool p_enable); bool is_vsync_enabled() const; + void set_vsync_via_compositor(bool p_enable); + bool is_vsync_via_compositor_enabled() const; + PowerState get_power_state(); int get_power_seconds_left(); int get_power_percent_left(); diff --git a/core/class_db.h b/core/class_db.h index 092469beb7..5df425e662 100644 --- a/core/class_db.h +++ b/core/class_db.h @@ -284,6 +284,15 @@ public: return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 6); } + template <class N, class M> + static MethodBind *bind_method(N p_method_name, M p_method, const Variant &p_def1, const Variant &p_def2, const Variant &p_def3, const Variant &p_def4, const Variant &p_def5, const Variant &p_def6, const Variant &p_def7) { + + MethodBind *bind = create_method_bind(p_method); + const Variant *ptr[7] = { &p_def1, &p_def2, &p_def3, &p_def4, &p_def5, &p_def6, &p_def7 }; + + return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 7); + } + template <class M> static MethodBind *bind_vararg_method(uint32_t p_flags, StringName p_name, M p_method, const MethodInfo &p_info = MethodInfo(), const Vector<Variant> &p_default_args = Vector<Variant>()) { diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp index 1904c70f42..bfa272e859 100644 --- a/core/io/http_client.cpp +++ b/core/io/http_client.cpp @@ -173,6 +173,7 @@ Error HTTPClient::request_raw(Method p_method, const String &p_url, const Vector } status = STATUS_REQUESTING; + head_request = p_method == METHOD_HEAD; return OK; } @@ -228,6 +229,7 @@ Error HTTPClient::request(Method p_method, const String &p_url, const Vector<Str } status = STATUS_REQUESTING; + head_request = p_method == METHOD_HEAD; return OK; } @@ -269,6 +271,7 @@ void HTTPClient::close() { connection.unref(); status = STATUS_DISCONNECTED; + head_request = false; if (resolving != IP::RESOLVER_INVALID_ID) { IP::get_singleton()->erase_resolve_item(resolving); @@ -470,6 +473,12 @@ Error HTTPClient::poll() { } } + // This is a HEAD request, we wont receive anything. + if (head_request) { + body_size = 0; + body_left = 0; + } + if (body_size != -1 || chunked) { status = STATUS_BODY; @@ -724,6 +733,7 @@ HTTPClient::HTTPClient() { tcp_connection.instance(); resolving = IP::RESOLVER_INVALID_ID; status = STATUS_DISCONNECTED; + head_request = false; conn_port = -1; body_size = -1; chunked = false; diff --git a/core/io/http_client.h b/core/io/http_client.h index ce7fe0491b..27c6711bcf 100644 --- a/core/io/http_client.h +++ b/core/io/http_client.h @@ -166,6 +166,7 @@ private: bool ssl_verify_host; bool blocking; bool handshaking; + bool head_request; Vector<uint8_t> response_str; diff --git a/core/io/net_socket.h b/core/io/net_socket.h index 3bc1369487..914e243b65 100644 --- a/core/io/net_socket.h +++ b/core/io/net_socket.h @@ -69,7 +69,7 @@ public: virtual bool is_open() const = 0; virtual int get_available_bytes() const = 0; - virtual void set_broadcasting_enabled(bool p_enabled) = 0; + virtual Error set_broadcasting_enabled(bool p_enabled) = 0; // Returns OK if the socket option has been set successfully. virtual void set_blocking_enabled(bool p_enabled) = 0; virtual void set_ipv6_only_enabled(bool p_enabled) = 0; virtual void set_tcp_no_delay_enabled(bool p_enabled) = 0; diff --git a/core/io/packet_peer.cpp b/core/io/packet_peer.cpp index 23dfc58385..03bc4d453a 100644 --- a/core/io/packet_peer.cpp +++ b/core/io/packet_peer.cpp @@ -282,7 +282,7 @@ void PacketPeerStream::set_input_buffer_max_size(int p_max_size) { ERR_FAIL_COND_MSG(p_max_size < 0, "Max size of input buffer size cannot be smaller than 0."); //warning may lose packets ERR_FAIL_COND_MSG(ring_buffer.data_left(), "Buffer in use, resizing would cause loss of data."); - ring_buffer.resize(nearest_shift(p_max_size + 4)); + ring_buffer.resize(nearest_shift(next_power_of_2(p_max_size + 4)) - 1); input_buffer.resize(next_power_of_2(p_max_size + 4)); } diff --git a/core/io/packet_peer_udp.cpp b/core/io/packet_peer_udp.cpp index 7e9471c053..80a070cf1c 100644 --- a/core/io/packet_peer_udp.cpp +++ b/core/io/packet_peer_udp.cpp @@ -37,6 +37,12 @@ void PacketPeerUDP::set_blocking_mode(bool p_enable) { blocking = p_enable; } +void PacketPeerUDP::set_broadcast_enabled(bool p_enabled) { + broadcast = p_enabled; + if (_sock.is_valid() && _sock->is_open()) + _sock->set_broadcasting_enabled(p_enabled); +} + Error PacketPeerUDP::join_multicast_group(IP_Address p_multi_address, String p_if_name) { ERR_FAIL_COND_V(!_sock.is_valid(), ERR_UNAVAILABLE); @@ -47,6 +53,7 @@ Error PacketPeerUDP::join_multicast_group(IP_Address p_multi_address, String p_i Error err = _sock->open(NetSocket::TYPE_UDP, ip_type); ERR_FAIL_COND_V(err != OK, err); _sock->set_blocking_enabled(false); + _sock->set_broadcasting_enabled(broadcast); } return _sock->join_multicast_group(p_multi_address, p_if_name); } @@ -122,6 +129,7 @@ Error PacketPeerUDP::put_packet(const uint8_t *p_buffer, int p_buffer_size) { err = _sock->open(NetSocket::TYPE_UDP, ip_type); ERR_FAIL_COND_V(err != OK, err); _sock->set_blocking_enabled(false); + _sock->set_broadcasting_enabled(broadcast); } do { @@ -165,6 +173,7 @@ Error PacketPeerUDP::listen(int p_port, const IP_Address &p_bind_address, int p_ _sock->set_blocking_enabled(false); _sock->set_reuse_address_enabled(true); + _sock->set_broadcasting_enabled(broadcast); err = _sock->bind(p_bind_address, p_port); if (err != OK) { @@ -258,6 +267,7 @@ void PacketPeerUDP::_bind_methods() { ClassDB::bind_method(D_METHOD("get_packet_ip"), &PacketPeerUDP::_get_packet_ip); ClassDB::bind_method(D_METHOD("get_packet_port"), &PacketPeerUDP::get_packet_port); ClassDB::bind_method(D_METHOD("set_dest_address", "host", "port"), &PacketPeerUDP::_set_dest_address); + ClassDB::bind_method(D_METHOD("set_broadcast_enabled", "enabled"), &PacketPeerUDP::set_broadcast_enabled); ClassDB::bind_method(D_METHOD("join_multicast_group", "multicast_address", "interface_name"), &PacketPeerUDP::join_multicast_group); ClassDB::bind_method(D_METHOD("leave_multicast_group", "multicast_address", "interface_name"), &PacketPeerUDP::leave_multicast_group); } @@ -267,6 +277,7 @@ PacketPeerUDP::PacketPeerUDP() : queue_count(0), peer_port(0), blocking(true), + broadcast(false), _sock(Ref<NetSocket>(NetSocket::create())) { rb.resize(16); } diff --git a/core/io/packet_peer_udp.h b/core/io/packet_peer_udp.h index 068bd5cd5a..dc89e129dd 100644 --- a/core/io/packet_peer_udp.h +++ b/core/io/packet_peer_udp.h @@ -53,6 +53,7 @@ protected: IP_Address peer_addr; int peer_port; bool blocking; + bool broadcast; Ref<NetSocket> _sock; static void _bind_methods(); @@ -77,6 +78,7 @@ public: Error get_packet(const uint8_t **r_buffer, int &r_buffer_size); int get_available_packet_count() const; int get_max_packet_size() const; + void set_broadcast_enabled(bool p_enabled); Error join_multicast_group(IP_Address p_multi_address, String p_if_name); Error leave_multicast_group(IP_Address p_multi_address, String p_if_name); diff --git a/core/io/pck_packer.cpp b/core/io/pck_packer.cpp index 443f390bb7..011ebb1812 100644 --- a/core/io/pck_packer.cpp +++ b/core/io/pck_packer.cpp @@ -55,9 +55,9 @@ static void _pad(FileAccess *p_file, int p_bytes) { void PCKPacker::_bind_methods() { - ClassDB::bind_method(D_METHOD("pck_start", "pck_name", "alignment"), &PCKPacker::pck_start); + ClassDB::bind_method(D_METHOD("pck_start", "pck_name", "alignment"), &PCKPacker::pck_start, DEFVAL(0)); ClassDB::bind_method(D_METHOD("add_file", "pck_path", "source_path"), &PCKPacker::add_file); - ClassDB::bind_method(D_METHOD("flush", "verbose"), &PCKPacker::flush); + ClassDB::bind_method(D_METHOD("flush", "verbose"), &PCKPacker::flush, DEFVAL(false)); }; Error PCKPacker::pck_start(const String &p_file, int p_alignment) { diff --git a/core/io/pck_packer.h b/core/io/pck_packer.h index 4df495b11f..f5661c55a1 100644 --- a/core/io/pck_packer.h +++ b/core/io/pck_packer.h @@ -54,7 +54,7 @@ class PCKPacker : public Reference { Vector<File> files; public: - Error pck_start(const String &p_file, int p_alignment); + Error pck_start(const String &p_file, int p_alignment = 0); Error add_file(const String &p_file, const String &p_src); Error flush(bool p_verbose = false); diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index f3eba44973..6f64543b3e 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -734,26 +734,49 @@ String ResourceLoader::_path_remap(const String &p_path, bool *r_translation_rem String new_path = p_path; - if (translation_remaps.has(new_path)) { + if (translation_remaps.has(p_path)) { + // translation_remaps has the following format: + // { "res://path.png": PoolStringArray( "res://path-ru.png:ru", "res://path-de.png:de" ) } + + // To find the path of the remapped resource, we extract the locale name after + // the last ':' to match the project locale. + // We also fall back in case of regional locales as done in TranslationServer::translate + // (e.g. 'ru_RU' -> 'ru' if the former has no specific mapping). - Vector<String> &v = *translation_remaps.getptr(new_path); String locale = TranslationServer::get_singleton()->get_locale(); - if (r_translation_remapped) { - *r_translation_remapped = true; - } - for (int i = 0; i < v.size(); i++) { + ERR_FAIL_COND_V_MSG(locale.length() < 2, p_path, "Could not remap path '" + p_path + "' for translation as configured locale '" + locale + "' is invalid."); + String lang = TranslationServer::get_language_code(locale); - int split = v[i].find_last(":"); - if (split == -1) - continue; - String l = v[i].right(split + 1).strip_edges(); - if (l == String()) + Vector<String> &res_remaps = *translation_remaps.getptr(new_path); + bool near_match = false; + + for (int i = 0; i < res_remaps.size(); i++) { + int split = res_remaps[i].find_last(":"); + if (split == -1) { continue; + } - if (l.begins_with(locale)) { - new_path = v[i].left(split); + String l = res_remaps[i].right(split + 1).strip_edges(); + if (l == locale) { // Exact match. + new_path = res_remaps[i].left(split); break; + } else if (near_match) { + continue; // Already found near match, keep going for potential exact match. } + + // No exact match (e.g. locale 'ru_RU' but remap is 'ru'), let's look further + // for a near match (same language code, i.e. first 2 or 3 letters before + // regional code, if included). + if (TranslationServer::get_language_code(l) == lang) { + // Language code matches, that's a near match. Keep looking for exact match. + near_match = true; + new_path = res_remaps[i].left(split); + continue; + } + } + + if (r_translation_remapped) { + *r_translation_remapped = true; } } @@ -761,8 +784,8 @@ String ResourceLoader::_path_remap(const String &p_path, bool *r_translation_rem new_path = path_remaps[new_path]; } - if (new_path == p_path) { //did not remap - //try file remap + if (new_path == p_path) { // Did not remap. + // Try file remap. Error err; FileAccess *f = FileAccess::open(p_path + ".remap", FileAccess::READ, &err); diff --git a/core/math/basis.cpp b/core/math/basis.cpp index d77501c0f6..09d04a8a2a 100644 --- a/core/math/basis.cpp +++ b/core/math/basis.cpp @@ -739,8 +739,8 @@ void Basis::get_axis_angle(Vector3 &r_axis, real_t &r_angle) const { if ((xx > yy) && (xx > zz)) { // elements[0][0] is the largest diagonal term if (xx < epsilon) { x = 0; - y = 0.7071; - z = 0.7071; + y = Math_SQRT12; + z = Math_SQRT12; } else { x = Math::sqrt(xx); y = xy / x; @@ -748,9 +748,9 @@ void Basis::get_axis_angle(Vector3 &r_axis, real_t &r_angle) const { } } else if (yy > zz) { // elements[1][1] is the largest diagonal term if (yy < epsilon) { - x = 0.7071; + x = Math_SQRT12; y = 0; - z = 0.7071; + z = Math_SQRT12; } else { y = Math::sqrt(yy); x = xy / y; @@ -758,8 +758,8 @@ void Basis::get_axis_angle(Vector3 &r_axis, real_t &r_angle) const { } } else { // elements[2][2] is the largest diagonal term so base result on this if (zz < epsilon) { - x = 0.7071; - y = 0.7071; + x = Math_SQRT12; + y = Math_SQRT12; z = 0; } else { z = Math::sqrt(zz); diff --git a/core/math/bsp_tree.cpp b/core/math/bsp_tree.cpp index ece293d036..f1d4505c35 100644 --- a/core/math/bsp_tree.cpp +++ b/core/math/bsp_tree.cpp @@ -192,14 +192,14 @@ int BSP_Tree::get_points_inside(const Vector3 *p_points, int p_point_count) cons #ifdef DEBUG_ENABLED int plane_count = planes.size(); uint16_t plane = nodesptr[idx].plane; - ERR_FAIL_UNSIGNED_INDEX_V(plane, plane_count, false); + ERR_FAIL_UNSIGNED_INDEX_V(plane, plane_count, 0); #endif idx = planesptr[nodesptr[idx].plane].is_point_over(point) ? nodes[idx].over : nodes[idx].under; #ifdef DEBUG_ENABLED - ERR_FAIL_COND_V(idx < MAX_NODES && idx >= node_count, false); + ERR_FAIL_COND_V(idx < MAX_NODES && idx >= node_count, 0); #endif } diff --git a/core/math/geometry.cpp b/core/math/geometry.cpp index e0ead8446f..ee7feba19e 100644 --- a/core/math/geometry.cpp +++ b/core/math/geometry.cpp @@ -97,8 +97,6 @@ void Geometry::MeshData::optimize_vertices() { vertices = new_vertices; } -Vector<Vector<Vector2> > (*Geometry::_decompose_func)(const Vector<Vector2> &p_polygon) = NULL; - struct _FaceClassify { struct _Link { @@ -1158,7 +1156,7 @@ Vector<Vector<Point2> > Geometry::_polypath_offset(const Vector<Point2> &p_polyp case END_SQUARE: et = etOpenSquare; break; case END_ROUND: et = etOpenRound; break; } - ClipperOffset co; + ClipperOffset co(2.0, 0.25 * SCALE_FACTOR); // Defaults from ClipperOffset. Path path; // Need to scale points (Clipper's requirement for robust computation). diff --git a/core/math/geometry.h b/core/math/geometry.h index 8b0a51c651..db4b82e8ce 100644 --- a/core/math/geometry.h +++ b/core/math/geometry.h @@ -853,15 +853,6 @@ public: return triangles; } - static Vector<Vector<Vector2> > (*_decompose_func)(const Vector<Vector2> &p_polygon); - static Vector<Vector<Vector2> > decompose_polygon(const Vector<Vector2> &p_polygon) { - - if (_decompose_func) - return _decompose_func(p_polygon); - - return Vector<Vector<Vector2> >(); - } - static bool is_polygon_clockwise(const Vector<Vector2> &p_polygon) { int c = p_polygon.size(); if (c < 3) diff --git a/core/message_queue.cpp b/core/message_queue.cpp index a76b5167b6..a254da89c6 100644 --- a/core/message_queue.cpp +++ b/core/message_queue.cpp @@ -129,9 +129,6 @@ Error MessageQueue::push_notification(ObjectID p_id, int p_notification) { uint8_t room_needed = sizeof(Message); if ((buffer_end + room_needed) >= buffer_size) { - String type; - if (ObjectDB::get_instance(p_id)) - type = ObjectDB::get_instance(p_id)->get_class(); print_line("Failed notification: " + itos(p_notification) + " target ID: " + itos(p_id)); statistics(); ERR_FAIL_V_MSG(ERR_OUT_OF_MEMORY, "Message queue out of memory. Try increasing 'message_queue_size_kb' in project settings."); diff --git a/core/object.cpp b/core/object.cpp index ed3ae4f25d..b643aecdd8 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -1215,7 +1215,9 @@ Error Object::emit_signal(const StringName &p_name, const Variant **p_args, int MessageQueue::get_singleton()->push_call(target->get_instance_id(), c.method, args, argc, true); } else { Variant::CallError ce; + s->lock++; target->call(c.method, args, argc, ce); + s->lock--; if (ce.error != Variant::CallError::CALL_OK) { #ifdef DEBUG_ENABLED @@ -1517,7 +1519,7 @@ void Object::_disconnect(const StringName &p_signal, Object *p_to_object, const Signal *s = signal_map.getptr(p_signal); ERR_FAIL_COND_MSG(!s, "Nonexistent signal: " + p_signal + "."); - ERR_FAIL_COND_MSG(s->lock > 0, "Attempt to disconnect signal '" + p_signal + "' while emitting (locks: " + itos(s->lock) + ")."); + ERR_FAIL_COND_MSG(s->lock > 0, "Attempt to disconnect signal '" + p_signal + "' while in emission callback. Use CONNECT_DEFERRED (to be able to safely disconnect) or CONNECT_ONESHOT (for automatic disconnection) as connection flags."); Signal::Target target(p_to_object->get_instance_id(), p_to_method); @@ -1948,7 +1950,10 @@ Object::~Object() { Signal *s = &signal_map[*S]; - ERR_CONTINUE_MSG(s->lock > 0, "Attempt to delete an object in the middle of a signal emission from it."); + if (s->lock > 0) { + //@todo this may need to actually reach the debugger prioritarily somehow because it may crash before + ERR_PRINTS("Object was freed or unreferenced while signal '" + String(*S) + "' is being emitted from it. Try connecting to the signal using 'CONNECT_DEFERRED' flag, or use queue_free() to free the object (if this object is a Node) to avoid this error and potential crashes."); + } //brute force disconnect for performance int slot_count = s->slot_map.size(); diff --git a/core/os/midi_driver.cpp b/core/os/midi_driver.cpp index 7cb7ae130f..81871d6c4f 100644 --- a/core/os/midi_driver.cpp +++ b/core/os/midi_driver.cpp @@ -33,6 +33,7 @@ #include "core/os/os.h" #include "main/input_default.h" +uint8_t MIDIDriver::last_received_message = 0x00; MIDIDriver *MIDIDriver::singleton = NULL; MIDIDriver *MIDIDriver::get_singleton() { @@ -48,33 +49,42 @@ void MIDIDriver::receive_input_packet(uint64_t timestamp, uint8_t *data, uint32_ Ref<InputEventMIDI> event; event.instance(); + uint32_t param_position = 1; if (length >= 1) { - event->set_channel(data[0] & 0xF); - event->set_message(data[0] >> 4); + if ((data[0] & 0x80) == 0x00) { + // running status + event->set_channel(last_received_message & 0xF); + event->set_message(last_received_message >> 4); + param_position = 0; + } else { + event->set_channel(data[0] & 0xF); + event->set_message(data[0] >> 4); + param_position = 1; + last_received_message = data[0]; + } } switch (event->get_message()) { case MIDI_MESSAGE_AFTERTOUCH: - if (length >= 3) { - event->set_pitch(data[1]); - event->set_pressure(data[2]); + if (length >= 2 + param_position) { + event->set_pitch(data[param_position]); + event->set_pressure(data[param_position + 1]); } break; case MIDI_MESSAGE_CONTROL_CHANGE: - if (length >= 3) { - event->set_controller_number(data[1]); - event->set_controller_value(data[2]); + if (length >= 2 + param_position) { + event->set_controller_number(data[param_position]); + event->set_controller_value(data[param_position + 1]); } break; case MIDI_MESSAGE_NOTE_ON: case MIDI_MESSAGE_NOTE_OFF: - case MIDI_MESSAGE_PITCH_BEND: - if (length >= 3) { - event->set_pitch(data[1]); - event->set_velocity(data[2]); + if (length >= 2 + param_position) { + event->set_pitch(data[param_position]); + event->set_velocity(data[param_position + 1]); if (event->get_message() == MIDI_MESSAGE_NOTE_ON && event->get_velocity() == 0) { // https://www.midi.org/forum/228-writing-midi-software-send-note-off,-or-zero-velocity-note-on @@ -83,15 +93,21 @@ void MIDIDriver::receive_input_packet(uint64_t timestamp, uint8_t *data, uint32_ } break; + case MIDI_MESSAGE_PITCH_BEND: + if (length >= 2 + param_position) { + event->set_pitch((data[param_position + 1] << 7) | data[param_position]); + } + break; + case MIDI_MESSAGE_PROGRAM_CHANGE: - if (length >= 2) { - event->set_instrument(data[1]); + if (length >= 1 + param_position) { + event->set_instrument(data[param_position]); } break; case MIDI_MESSAGE_CHANNEL_PRESSURE: - if (length >= 2) { - event->set_pressure(data[1]); + if (length >= 1 + param_position) { + event->set_pressure(data[param_position]); } break; } diff --git a/core/os/midi_driver.h b/core/os/midi_driver.h index e0e5e2be67..33f49d19f5 100644 --- a/core/os/midi_driver.h +++ b/core/os/midi_driver.h @@ -41,6 +41,7 @@ class MIDIDriver { static MIDIDriver *singleton; + static uint8_t last_received_message; public: static MIDIDriver *get_singleton(); diff --git a/core/os/os.cpp b/core/os/os.cpp index 25889de1b3..2d61417b4f 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -572,6 +572,14 @@ bool OS::is_vsync_enabled() const { return _use_vsync; } +void OS::set_vsync_via_compositor(bool p_enable) { + _vsync_via_compositor = p_enable; +} + +bool OS::is_vsync_via_compositor_enabled() const { + return _vsync_via_compositor; +} + OS::PowerState OS::get_power_state() { return POWERSTATE_UNKNOWN; } diff --git a/core/os/os.h b/core/os/os.h index 687ccaaba5..26db629d7c 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -60,6 +60,9 @@ class OS { bool _allow_hidpi; bool _allow_layered; bool _use_vsync; + bool _vsync_via_compositor; + + char *last_error; void *_stack_bottom; @@ -98,9 +101,10 @@ public: bool maximized; bool always_on_top; bool use_vsync; + bool vsync_via_compositor; bool layered; float get_aspect() const { return (float)width / (float)height; } - VideoMode(int p_width = 1024, int p_height = 600, bool p_fullscreen = false, bool p_resizable = true, bool p_borderless_window = false, bool p_maximized = false, bool p_always_on_top = false, bool p_use_vsync = false) { + VideoMode(int p_width = 1024, int p_height = 600, bool p_fullscreen = false, bool p_resizable = true, bool p_borderless_window = false, bool p_maximized = false, bool p_always_on_top = false, bool p_use_vsync = false, bool p_vsync_via_compositor = false) { width = p_width; height = p_height; fullscreen = p_fullscreen; @@ -109,6 +113,7 @@ public: maximized = p_maximized; always_on_top = p_always_on_top; use_vsync = p_use_vsync; + vsync_via_compositor = p_vsync_via_compositor; layered = false; } }; @@ -507,6 +512,9 @@ public: //real, actual overridable function to switch vsync, which needs to be called from graphics thread if needed virtual void _set_use_vsync(bool p_enable) {} + void set_vsync_via_compositor(bool p_enable); + bool is_vsync_via_compositor_enabled() const; + virtual OS::PowerState get_power_state(); virtual int get_power_seconds_left(); virtual int get_power_percent_left(); diff --git a/core/project_settings.cpp b/core/project_settings.cpp index 067578e354..52087df548 100644 --- a/core/project_settings.cpp +++ b/core/project_settings.cpp @@ -769,10 +769,7 @@ Error ProjectSettings::_save_settings_text(const String &p_file, const Map<Strin String vstr; VariantWriter::write_to_string(value, vstr); - if (F->get().find(" ") != -1) - file->store_string(F->get().quote() + "=" + vstr + "\n"); - else - file->store_string(F->get() + "=" + vstr + "\n"); + file->store_string(F->get().property_name_encode() + "=" + vstr + "\n"); } } diff --git a/core/translation.cpp b/core/translation.cpp index 4a1ac26433..4a662b2590 100644 --- a/core/translation.cpp +++ b/core/translation.cpp @@ -792,11 +792,6 @@ static const char *locale_renames[][2] = { { NULL, NULL } }; -static String get_trimmed_locale(const String &p_locale) { - - return p_locale.substr(0, 2); -} - /////////////////////////////////////////////// PoolVector<String> Translation::_get_messages() const { @@ -846,7 +841,7 @@ void Translation::set_locale(const String &p_locale) { String univ_locale = TranslationServer::standardize_locale(p_locale); if (!TranslationServer::is_locale_valid(univ_locale)) { - String trimmed_locale = get_trimmed_locale(univ_locale); + String trimmed_locale = TranslationServer::get_language_code(univ_locale); ERR_FAIL_COND_MSG(!TranslationServer::is_locale_valid(trimmed_locale), "Invalid locale: " + trimmed_locale + "."); @@ -945,12 +940,29 @@ String TranslationServer::standardize_locale(const String &p_locale) { return univ_locale; } +String TranslationServer::get_language_code(const String &p_locale) { + + ERR_FAIL_COND_V_MSG(p_locale.length() < 2, p_locale, "Invalid locale '" + p_locale + "'."); + // Most language codes are two letters, but some are three, + // so we have to look for a regional code separator ('_' or '-') + // to extract the left part. + // For example we get 'nah_MX' as input and should return 'nah'. + int split = p_locale.find("_"); + if (split == -1) { + split = p_locale.find("-"); + } + if (split == -1) { // No separator, so the locale is already only a language code. + return p_locale; + } + return p_locale.left(split); +} + void TranslationServer::set_locale(const String &p_locale) { String univ_locale = standardize_locale(p_locale); if (!is_locale_valid(univ_locale)) { - String trimmed_locale = get_trimmed_locale(univ_locale); + String trimmed_locale = get_language_code(univ_locale); print_verbose(vformat("Unsupported locale '%s', falling back to '%s'.", p_locale, trimmed_locale)); if (!is_locale_valid(trimmed_locale)) { @@ -1039,11 +1051,13 @@ void TranslationServer::clear() { StringName TranslationServer::translate(const StringName &p_message) const { - //translate using locale + // Match given message against the translation catalog for the project locale. if (!enabled) return p_message; + ERR_FAIL_COND_V_MSG(locale.length() < 2, p_message, "Could not translate message as configured locale '" + locale + "' is invalid."); + // Locale can be of the form 'll_CC', i.e. language code and regional code, // e.g. 'en_US', 'en_GB', etc. It might also be simply 'll', e.g. 'en'. // To find the relevant translation, we look for those with locale starting @@ -1051,67 +1065,78 @@ StringName TranslationServer::translate(const StringName &p_message) const { // form. If not found, we fall back to a near match (another locale with // same language code). + // Note: ResourceLoader::_path_remap reproduces this locale near matching + // logic, so be sure to propagate changes there when changing things here. + StringName res; + String lang = get_language_code(locale); bool near_match = false; - const CharType *lptr = &locale[0]; for (const Set<Ref<Translation> >::Element *E = translations.front(); E; E = E->next()) { - const Ref<Translation> &t = E->get(); - ERR_FAIL_COND_V(t.is_null(), StringName("")); + ERR_FAIL_COND_V(t.is_null(), p_message); String l = t->get_locale(); - if (lptr[0] != l[0] || lptr[1] != l[1]) - continue; // Language code does not match. bool exact_match = (l == locale); - if (!exact_match && near_match) - continue; // Only near-match once, but keep looking for exact matches. + if (!exact_match) { + if (near_match) { + continue; // Only near-match once, but keep looking for exact matches. + } + if (get_language_code(l) != lang) { + continue; // Language code does not match. + } + } StringName r = t->get_message(p_message); - - if (!r) + if (!r) { continue; - + } res = r; - if (exact_match) + if (exact_match) { break; - else + } else { near_match = true; + } } if (!res && fallback.length() >= 2) { // Try again with the fallback locale. - const CharType *fptr = &fallback[0]; + String fallback_lang = get_language_code(fallback); near_match = false; - for (const Set<Ref<Translation> >::Element *E = translations.front(); E; E = E->next()) { + for (const Set<Ref<Translation> >::Element *E = translations.front(); E; E = E->next()) { const Ref<Translation> &t = E->get(); - ERR_FAIL_COND_V(t.is_null(), StringName("")); + ERR_FAIL_COND_V(t.is_null(), p_message); String l = t->get_locale(); - if (fptr[0] != l[0] || fptr[1] != l[1]) - continue; // Language code does not match. bool exact_match = (l == fallback); - if (!exact_match && near_match) - continue; // Only near-match once, but keep looking for exact matches. + if (!exact_match) { + if (near_match) { + continue; // Only near-match once, but keep looking for exact matches. + } + if (get_language_code(l) != fallback_lang) { + continue; // Language code does not match. + } + } StringName r = t->get_message(p_message); - - if (!r) + if (!r) { continue; - + } res = r; - if (exact_match) + if (exact_match) { break; - else + } else { near_match = true; + } } } - if (!res) + if (!res) { return p_message; + } return res; } diff --git a/core/translation.h b/core/translation.h index d172b9ecf2..834374bda6 100644 --- a/core/translation.h +++ b/core/translation.h @@ -105,6 +105,7 @@ public: static Vector<String> get_all_locale_names(); static bool is_locale_valid(const String &p_locale); static String standardize_locale(const String &p_locale); + static String get_language_code(const String &p_locale); void set_tool_translation(const Ref<Translation> &p_translation); StringName tool_translate(const StringName &p_message) const; diff --git a/core/ustring.cpp b/core/ustring.cpp index 25930db201..09a02a09be 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -28,6 +28,10 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ +#ifdef _MSC_VER +#define _CRT_SECURE_NO_WARNINGS // to disable build-time warning which suggested to use strcpy_s instead strcpy +#endif + #include "ustring.h" #include "core/color.h" @@ -1917,7 +1921,7 @@ static double built_in_strtod(const C *string, /* A decimal ASCII floating-point 1.0e256 }; - int sign, expSign = false; + bool sign, expSign = false; double fraction, dblExp; const double *d; const C *p; @@ -3792,7 +3796,8 @@ bool String::is_valid_float() const { String String::path_to_file(const String &p_path) const { - String src = this->replace("\\", "/").get_base_dir(); + // Don't get base dir for src, this is expected to be a dir already. + String src = this->replace("\\", "/"); String dst = p_path.replace("\\", "/").get_base_dir(); String rel = src.path_to(dst); if (rel == dst) // failed @@ -4054,6 +4059,19 @@ String String::percent_decode() const { return String::utf8(pe.ptr()); } +String String::property_name_encode() const { + // Escape and quote strings with extended ASCII or further Unicode characters + // as well as '"', '=' or ' ' (32) + const CharType *cstr = c_str(); + for (int i = 0; cstr[i]; i++) { + if (cstr[i] == '=' || cstr[i] == '"' || cstr[i] < 33 || cstr[i] > 126) { + return "\"" + c_escape_multiline() + "\""; + } + } + // Keep as is + return *this; +} + String String::get_basename() const { int pos = find_last("."); diff --git a/core/ustring.h b/core/ustring.h index dfc5044942..c20f659c59 100644 --- a/core/ustring.h +++ b/core/ustring.h @@ -338,6 +338,8 @@ public: String percent_encode() const; String percent_decode() const; + String property_name_encode() const; + bool is_valid_identifier() const; bool is_valid_integer() const; bool is_valid_float() const; diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 6e593a308d..8aae2d8490 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -1187,31 +1187,6 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i default: return Variant(); } - } else if (p_argcount > 1) { - - _VariantCall::ConstructFunc &c = _VariantCall::construct_funcs[p_type]; - - for (List<_VariantCall::ConstructData>::Element *E = c.constructors.front(); E; E = E->next()) { - const _VariantCall::ConstructData &cd = E->get(); - - if (cd.arg_count != p_argcount) - continue; - - //validate parameters - for (int i = 0; i < cd.arg_count; i++) { - if (!Variant::can_convert(p_args[i]->type, cd.arg_types[i])) { - r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; //no such constructor - r_error.argument = i; - r_error.expected = cd.arg_types[i]; - return Variant(); - } - } - - Variant v; - cd.func(v, p_args); - return v; - } - } else if (p_argcount == 1 && p_args[0]->type == p_type) { return *p_args[0]; //copy construct } else if (p_argcount == 1 && (!p_strict || Variant::can_convert(p_args[0]->type, p_type))) { @@ -1268,6 +1243,30 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i case POOL_COLOR_ARRAY: return (PoolColorArray(*p_args[0])); default: return Variant(); } + } else if (p_argcount >= 1) { + + _VariantCall::ConstructFunc &c = _VariantCall::construct_funcs[p_type]; + + for (List<_VariantCall::ConstructData>::Element *E = c.constructors.front(); E; E = E->next()) { + const _VariantCall::ConstructData &cd = E->get(); + + if (cd.arg_count != p_argcount) + continue; + + //validate parameters + for (int i = 0; i < cd.arg_count; i++) { + if (!Variant::can_convert(p_args[i]->type, cd.arg_types[i])) { + r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; //no such constructor + r_error.argument = i; + r_error.expected = cd.arg_types[i]; + return Variant(); + } + } + + Variant v; + cd.func(v, p_args); + return v; + } } r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD; //no such constructor return Variant(); @@ -1951,7 +1950,7 @@ void register_variant_methods() { ADDFUNC0R(TRANSFORM, TRANSFORM, Transform, orthonormalized, varray()); ADDFUNC2R(TRANSFORM, TRANSFORM, Transform, rotated, VECTOR3, "axis", REAL, "phi", varray()); ADDFUNC1R(TRANSFORM, TRANSFORM, Transform, scaled, VECTOR3, "scale", varray()); - ADDFUNC1R(TRANSFORM, TRANSFORM, Transform, translated, VECTOR3, "ofs", varray()); + ADDFUNC1R(TRANSFORM, TRANSFORM, Transform, translated, VECTOR3, "offset", varray()); ADDFUNC2R(TRANSFORM, TRANSFORM, Transform, looking_at, VECTOR3, "target", VECTOR3, "up", varray()); ADDFUNC2R(TRANSFORM, TRANSFORM, Transform, interpolate_with, TRANSFORM, "transform", REAL, "weight", varray()); ADDFUNC1R(TRANSFORM, BOOL, Transform, is_equal_approx, TRANSFORM, "transform", varray()); diff --git a/core/variant_op.cpp b/core/variant_op.cpp index ea9e29e744..ae47397558 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -1118,6 +1118,8 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a, CASE_TYPE(math, OP_SHIFT_LEFT, INT) { if (p_b.type != INT) _RETURN_FAIL; + if (p_b._data._int < 0 || p_b._data._int >= 64) + _RETURN_FAIL; _RETURN(p_a._data._int << p_b._data._int); } @@ -1129,6 +1131,8 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a, CASE_TYPE(math, OP_SHIFT_RIGHT, INT) { if (p_b.type != INT) _RETURN_FAIL; + if (p_b._data._int < 0 || p_b._data._int >= 64) + _RETURN_FAIL; _RETURN(p_a._data._int >> p_b._data._int); } diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp index fe2c981c3c..9a5f9c9ede 100644 --- a/core/variant_parser.cpp +++ b/core/variant_parser.cpp @@ -1530,9 +1530,6 @@ Error VariantParser::parse_tag_assign_eof(Stream *p_stream, int &line, String &r } else if (c != '=') { what += String::chr(c); } else { - if (p_stream->is_utf8()) { - what.parse_utf8(what.ascii(true).get_data()); - } r_assign = what; Token token; get_token(p_stream, token, line, r_err_str); diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index b25de3cf99..e84e265983 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -879,7 +879,7 @@ Ctrl key mask. </constant> <constant name="KEY_MASK_CMD" value="268435456" enum="KeyModifierMask"> - Cmd key mask. + Command key mask. On macOS, this is equivalent to [constant KEY_MASK_META]. On other platforms, this is equivalent to [constant KEY_MASK_CTRL]. This mask should be preferred to [constant KEY_MASK_META] or [constant KEY_MASK_CTRL] for system shortcuts as it handles all platforms correctly. </constant> <constant name="KEY_MASK_KPAD" value="536870912" enum="KeyModifierMask"> Keypad key mask. diff --git a/doc/classes/AABB.xml b/doc/classes/AABB.xml index 61e1ea9b8d..af5598f126 100644 --- a/doc/classes/AABB.xml +++ b/doc/classes/AABB.xml @@ -43,7 +43,7 @@ <return type="float"> </return> <description> - Gets the area of the [AABB]. + Returns the volume of the [AABB]. </description> </method> <method name="get_endpoint"> @@ -66,7 +66,7 @@ <return type="int"> </return> <description> - Returns the index of the longest axis of the [AABB] (according to [Vector3]::AXIS* enum). + Returns the index of the longest axis of the [AABB] (according to [Vector3]'s [code]AXIS_*[/code] constants). </description> </method> <method name="get_longest_axis_size"> @@ -182,6 +182,7 @@ <argument index="0" name="aabb" type="AABB"> </argument> <description> + Returns [code]true[/code] if this [AABB] and [code]aabb[/code] are approximately equal, by calling [method @GDScript.is_equal_approx] on each component. </description> </method> <method name="merge"> @@ -190,13 +191,13 @@ <argument index="0" name="with" type="AABB"> </argument> <description> - Returns a larger AABB that contains this AABB and [code]with[/code]. + Returns a larger [AABB] that contains both this [AABB] and [code]with[/code]. </description> </method> </methods> <members> <member name="end" type="Vector3" setter="" getter="" default="Vector3( 0, 0, 0 )"> - Ending corner. + Ending corner. This is calculated as [code]position + size[/code]. Changing this property changes [member size] accordingly. </member> <member name="position" type="Vector3" setter="" getter="" default="Vector3( 0, 0, 0 )"> Beginning corner. diff --git a/doc/classes/ARVRController.xml b/doc/classes/ARVRController.xml index 9c6cfc1d7d..24d8b48077 100644 --- a/doc/classes/ARVRController.xml +++ b/doc/classes/ARVRController.xml @@ -22,7 +22,7 @@ <return type="int" enum="ARVRPositionalTracker.TrackerHand"> </return> <description> - Returns the hand holding this controller, if known. See [code]TRACKER_*[/code] constants in [ARVRPositionalTracker]. + Returns the hand holding this controller, if known. See [enum ARVRPositionalTracker.TrackerHand]. </description> </method> <method name="get_is_active" qualifiers="const"> @@ -61,7 +61,7 @@ <argument index="0" name="button" type="int"> </argument> <description> - Returns [code]true[/code] if the button at index [code]button[/code] is pressed. + Returns [code]true[/code] if the button at index [code]button[/code] is pressed. See [enum JoystickList], in particular the [code]JOY_VR_*[/code] constants. </description> </method> </methods> @@ -73,7 +73,8 @@ When a controller is turned off, its slot is freed. This ensures controllers will keep the same ID even when controllers with lower IDs are turned off. </member> <member name="rumble" type="float" setter="set_rumble" getter="get_rumble" default="0.0"> - The degree to which the tracker rumbles. Ranges from [code]0.0[/code] to [code]1.0[/code] with precision [code].01[/code]. If changed, updates [member ARVRPositionalTracker.rumble] accordingly. + The degree to which the controller vibrates. Ranges from [code]0.0[/code] to [code]1.0[/code] with precision [code].01[/code]. If changed, updates [member ARVRPositionalTracker.rumble] accordingly. + This is a useful property to animate if you want the controller to vibrate for a limited duration. </member> </members> <signals> diff --git a/doc/classes/ARVRInterface.xml b/doc/classes/ARVRInterface.xml index 1da1351e49..41effcaecb 100644 --- a/doc/classes/ARVRInterface.xml +++ b/doc/classes/ARVRInterface.xml @@ -21,7 +21,7 @@ <return type="int"> </return> <description> - Returns a combination of flags providing information about the capabilities of this interface. + Returns a combination of [enum Capabilities] flags providing information about the capabilities of this interface. </description> </method> <method name="get_name" qualifiers="const"> @@ -51,9 +51,9 @@ <description> Call this to initialize this interface. The first interface that is initialized is identified as the primary interface and it will be used for rendering output. After initializing the interface you want to use you then need to enable the AR/VR mode of a viewport and rendering should commence. - [b]Note:[/b] You must enable the AR/VR mode on the main viewport for any device that uses the main output of Godot such as for mobile VR. - If you do this for a platform that handles its own output (such as OpenVR) Godot will show just one eye without distortion on screen. Alternatively, you can add a separate viewport node to your scene and enable AR/VR on that viewport and it will be used to output to the HMD leaving you free to do anything you like in the main window such as using a separate camera as a spectator camera or render out something completely different. - While currently not used you can activate additional interfaces, you may wish to do this if you want to track controllers from other platforms. However, at this point in time only one interface can render to an HMD. + [b]Note:[/b] You must enable the AR/VR mode on the main viewport for any device that uses the main output of Godot, such as for mobile VR. + If you do this for a platform that handles its own output (such as OpenVR) Godot will show just one eye without distortion on screen. Alternatively, you can add a separate viewport node to your scene and enable AR/VR on that viewport. It will be used to output to the HMD, leaving you free to do anything you like in the main window, such as using a separate camera as a spectator camera or rendering something completely different. + While currently not used, you can activate additional interfaces. You may wish to do this if you want to track controllers from other platforms. However, at this point in time only one interface can render to an HMD. </description> </method> <method name="is_stereo"> @@ -73,13 +73,13 @@ </methods> <members> <member name="ar_is_anchor_detection_enabled" type="bool" setter="set_anchor_detection_is_enabled" getter="get_anchor_detection_is_enabled" default="false"> - On an AR interface, is our anchor detection enabled? + On an AR interface, [code]true[/code] if anchor detection is enabled. </member> <member name="interface_is_initialized" type="bool" setter="set_is_initialized" getter="is_initialized" default="false"> - Has this interface been initialized? + [code]true[/code] if this interface been initialized. </member> <member name="interface_is_primary" type="bool" setter="set_is_primary" getter="is_primary" default="false"> - Is this our primary interface? + [code]true[/code] if this is the primary interface. </member> </members> <constants> @@ -93,10 +93,10 @@ This interface supports stereoscopic rendering. </constant> <constant name="ARVR_AR" value="4" enum="Capabilities"> - This interface support AR (video background and real world tracking). + This interface supports AR (video background and real world tracking). </constant> <constant name="ARVR_EXTERNAL" value="8" enum="Capabilities"> - This interface outputs to an external device, if the main viewport is used the on screen output is an unmodified buffer of either the left or right eye (stretched if the viewport size is not changed to the same aspect ratio of [method get_render_targetsize]). Using a separate viewport node frees up the main viewport for other purposes. + This interface outputs to an external device. If the main viewport is used, the on screen output is an unmodified buffer of either the left or right eye (stretched if the viewport size is not changed to the same aspect ratio of [method get_render_targetsize]). Using a separate viewport node frees up the main viewport for other purposes. </constant> <constant name="EYE_MONO" value="0" enum="Eyes"> Mono output, this is mostly used internally when retrieving positioning information for our camera node or when stereo scopic rendering is not supported. @@ -111,7 +111,7 @@ Tracking is behaving as expected. </constant> <constant name="ARVR_EXCESSIVE_MOTION" value="1" enum="Tracking_status"> - Tracking is hindered by excessive motion, player is moving faster than tracking can keep up. + Tracking is hindered by excessive motion (the player is moving faster than tracking can keep up). </constant> <constant name="ARVR_INSUFFICIENT_FEATURES" value="2" enum="Tracking_status"> Tracking is hindered by insufficient features, it's too dark (for camera-based tracking), player is blocked, etc. diff --git a/doc/classes/ARVRPositionalTracker.xml b/doc/classes/ARVRPositionalTracker.xml index 5551d48a08..c4acfd3b51 100644 --- a/doc/classes/ARVRPositionalTracker.xml +++ b/doc/classes/ARVRPositionalTracker.xml @@ -15,7 +15,7 @@ <return type="int" enum="ARVRPositionalTracker.TrackerHand"> </return> <description> - Returns the hand holding this tracker, if known. See [code]TRACKER_*[/code] constants. + Returns the hand holding this tracker, if known. See [enum TrackerHand] constants. </description> </method> <method name="get_joy_id" qualifiers="const"> diff --git a/doc/classes/Animation.xml b/doc/classes/Animation.xml index 97da8c9980..9924f75289 100644 --- a/doc/classes/Animation.xml +++ b/doc/classes/Animation.xml @@ -656,7 +656,7 @@ <argument index="1" name="mode" type="int" enum="Animation.UpdateMode"> </argument> <description> - Sets the update mode ([code]UPDATE_*[/code]) of a value track. + Sets the update mode (see [enum UpdateMode]) of a value track. </description> </method> </methods> diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml index 60d04649a8..a47b4a590e 100644 --- a/doc/classes/AnimationPlayer.xml +++ b/doc/classes/AnimationPlayer.xml @@ -106,7 +106,7 @@ <return type="float"> </return> <description> - Gets the actual playing speed of current animation or 0 if not playing. This speed is the [code]playback_speed[/code] property multiplied by [code]custom_speed[/code] argument specified when calling the [code]play[/code] method. + Gets the actual playing speed of current animation or 0 if not playing. This speed is the [member playback_speed] property multiplied by [code]custom_speed[/code] argument specified when calling the [method play] method. </description> </method> <method name="get_queue"> @@ -144,9 +144,9 @@ <argument index="3" name="from_end" type="bool" default="false"> </argument> <description> - Plays the animation with key [code]name[/code]. Custom speed and blend times can be set. If [code]custom_speed[/code] is negative and [code]from_end[/code] is [code]true[/code], the animation will play backwards. - If the animation has been paused by [method stop], it will be resumed. Calling [method play] without arguments will also resume the animation. - [b]Note:[/b] The animation will be updated the next time the AnimationPlayer is processed. If other variables are updated at the same time this is called, they may be updated too early. To perform the update immediately, call [code]advance(0)[/code]. + Plays the animation with key [code]name[/code]. Custom blend times and speed can be set. If [code]custom_speed[/code] is negative and [code]from_end[/code] is [code]true[/code], the animation will play backwards (which is equivalent to calling [method play_backwards]). + The [AnimationPlayer] keeps track of its current or last played animation with [member assigned_animation]. If this method is called with that same animation [code]name[/code], or with no [code]name[/code] parameter, the assigned animation will resume playing if it was paused, or restart if it was stopped (see [method stop] for both pause and stop). If the animation was already playing, it will keep playing. + [b]Note:[/b] The animation will be updated the next time the [AnimationPlayer] is processed. If other variables are updated at the same time this is called, they may be updated too early. To perform the update immediately, call [code]advance(0)[/code]. </description> </method> <method name="play_backwards"> @@ -158,8 +158,7 @@ </argument> <description> Plays the animation with key [code]name[/code] in reverse. - If the animation has been paused by [code]stop(true)[/code], it will be resumed backwards. Calling [code]play_backwards()[/code] without arguments will also resume the animation backwards. - [b]Note:[/b] This is the same as [code]play[/code] in regards to process/update behavior. + This method is a shorthand for [method play] with [code]custom_speed = -1.0[/code] and [code]from_end = true[/code], so see its description for more information. </description> </method> <method name="queue"> @@ -222,8 +221,8 @@ <argument index="0" name="reset" type="bool" default="true"> </argument> <description> - Stops the currently playing animation. If [code]reset[/code] is [code]true[/code], the animation position is reset to [code]0[/code] and the playback speed is reset to [code]1.0[/code]. - If [code]reset[/code] is [code]false[/code], then calling [method play] without arguments or [code]play("same_as_before")[/code] will resume the animation. Works the same for the [method play_backwards]. + Stops or pauses the currently playing animation. If [code]reset[/code] is [code]true[/code], the animation position is reset to [code]0[/code] and the playback speed is reset to [code]1.0[/code]. + If [code]reset[/code] is [code]false[/code], the [member current_animation_position] will be kept and calling [method play] or [method play_backwards] without arguments or with the same animation name as [member assigned_animation] will resume the animation. </description> </method> </methods> diff --git a/doc/classes/AnimationTreePlayer.xml b/doc/classes/AnimationTreePlayer.xml index 3b6003b478..0d7a34b179 100644 --- a/doc/classes/AnimationTreePlayer.xml +++ b/doc/classes/AnimationTreePlayer.xml @@ -285,7 +285,7 @@ <argument index="0" name="id" type="String"> </argument> <description> - Gets the node type, will return from [code]NODE_*[/code] enum. + Gets the node type, will return from [enum NodeType] enum. </description> </method> <method name="node_rename"> diff --git a/doc/classes/Area.xml b/doc/classes/Area.xml index 6bd1382488..4b0858935d 100644 --- a/doc/classes/Area.xml +++ b/doc/classes/Area.xml @@ -166,7 +166,7 @@ <argument index="3" name="self_shape" type="int"> </argument> <description> - Emitted when another area enters, reporting which areas overlapped. + Emitted when another area enters, reporting which areas overlapped. [code]shape_owner_get_owner(shape_find_owner(shape))[/code] returns the parent object of the owner of the [code]shape[/code]. </description> </signal> <signal name="area_shape_exited"> diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml index 9a5870c73d..be3acee9ef 100644 --- a/doc/classes/Area2D.xml +++ b/doc/classes/Area2D.xml @@ -155,7 +155,7 @@ <argument index="3" name="self_shape" type="int"> </argument> <description> - Emitted when another area enters, reporting which shapes overlapped. + Emitted when another area enters, reporting which shapes overlapped. [code]shape_owner_get_owner(shape_find_owner(shape))[/code] returns the parent object of the owner of the [code]shape[/code]. </description> </signal> <signal name="area_shape_exited"> diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml index e09c1f4b08..2d330fc935 100644 --- a/doc/classes/Array.xml +++ b/doc/classes/Array.xml @@ -93,7 +93,7 @@ <return type="Variant"> </return> <description> - Returns the last element of the array if the array is not empty. + Returns the last element of the array, or [code]null[/code] if the array is empty. </description> </method> <method name="bsearch"> @@ -186,7 +186,7 @@ <return type="Variant"> </return> <description> - Returns the first element of the array if the array is not empty. + Returns the first element of the array, or [code]null[/code] if the array is empty. </description> </method> <method name="has"> @@ -243,14 +243,14 @@ <return type="Variant"> </return> <description> - Removes the last element of the array. + Removes and returns the last element of the array. Returns [code]null[/code] if the array is empty. </description> </method> <method name="pop_front"> <return type="Variant"> </return> <description> - Removes the first element of the array. + Removes and returns the first element of the array. Returns [code]null[/code] if the array is empty. </description> </method> <method name="push_back"> diff --git a/doc/classes/ArrayMesh.xml b/doc/classes/ArrayMesh.xml index 9f32691e57..62ff0edbd2 100644 --- a/doc/classes/ArrayMesh.xml +++ b/doc/classes/ArrayMesh.xml @@ -47,7 +47,7 @@ </argument> <description> Creates a new surface. - Surfaces are created to be rendered using a "primitive", which may be PRIMITIVE_POINTS, PRIMITIVE_LINES, PRIMITIVE_LINE_STRIP, PRIMITIVE_LINE_LOOP, PRIMITIVE_TRIANGLES, PRIMITIVE_TRIANGLE_STRIP, PRIMITIVE_TRIANGLE_FAN. See [Mesh] for details. (As a note, when using indices, it is recommended to only use points, lines or triangles). [method Mesh.get_surface_count] will become the [code]surf_idx[/code] for this new surface. + Surfaces are created to be rendered using a [code]primitive[/code], which may be any of the types defined in [enum Mesh.PrimitiveType]. (As a note, when using indices, it is recommended to only use points, lines or triangles.) [method Mesh.get_surface_count] will become the [code]surf_idx[/code] for this new surface. The [code]arrays[/code] argument is an array of arrays. See [enum ArrayType] for the values used in this array. For example, [code]arrays[0][/code] is the array of vertices. That first vertex sub-array is always required; the others are optional. Adding an index array puts this function into "index mode" where the vertex and other arrays become the sources of data and the index array defines the vertex order. All sub-arrays must have the same length as the vertex array or be empty, except for [constant ARRAY_INDEX] if it is used. Adding an index array puts this function into "index mode" where the vertex and other arrays become the sources of data, and the index array defines the order of the vertices. Godot uses clockwise winding order for front faces of triangle primitive modes. diff --git a/doc/classes/AudioStreamPlayer.xml b/doc/classes/AudioStreamPlayer.xml index 4bc29335ff..89fc18476b 100644 --- a/doc/classes/AudioStreamPlayer.xml +++ b/doc/classes/AudioStreamPlayer.xml @@ -57,7 +57,7 @@ Bus on which this audio is playing. </member> <member name="mix_target" type="int" setter="set_mix_target" getter="get_mix_target" enum="AudioStreamPlayer.MixTarget" default="0"> - If the audio configuration has more than two speakers, this sets the target channels. See [code]MIX_TARGET_*[/code] constants. + If the audio configuration has more than two speakers, this sets the target channels. See [enum MixTarget] constants. </member> <member name="pitch_scale" type="float" setter="set_pitch_scale" getter="get_pitch_scale" default="1.0"> Changes the pitch and the tempo of the audio. diff --git a/doc/classes/AudioStreamSample.xml b/doc/classes/AudioStreamSample.xml index a496902ded..bb418f3c36 100644 --- a/doc/classes/AudioStreamSample.xml +++ b/doc/classes/AudioStreamSample.xml @@ -27,7 +27,7 @@ [b]Note:[/b] This property expects signed PCM8 data. To convert unsigned PCM8 to signed PCM8, subtract 128 from each byte. </member> <member name="format" type="int" setter="set_format" getter="get_format" enum="AudioStreamSample.Format" default="0"> - Audio format. See [code]FORMAT_*[/code] constants for values. + Audio format. See [enum Format] constants for values. </member> <member name="loop_begin" type="int" setter="set_loop_begin" getter="get_loop_begin" default="0"> Loop start in bytes. @@ -36,7 +36,7 @@ Loop end in bytes. </member> <member name="loop_mode" type="int" setter="set_loop_mode" getter="get_loop_mode" enum="AudioStreamSample.LoopMode" default="0"> - Loop mode. See [code]LOOP_*[/code] constants for values. + Loop mode. See [enum LoopMode] constants for values. </member> <member name="mix_rate" type="int" setter="set_mix_rate" getter="get_mix_rate" default="44100"> The sample rate for mixing this audio. diff --git a/doc/classes/BaseButton.xml b/doc/classes/BaseButton.xml index b4f4b21afd..21f46efe84 100644 --- a/doc/classes/BaseButton.xml +++ b/doc/classes/BaseButton.xml @@ -22,14 +22,14 @@ <argument index="0" name="button_pressed" type="bool"> </argument> <description> - Called when the button is toggled (only if toggle_mode is active). + Called when the button is toggled (only if [member toggle_mode] is active). </description> </method> <method name="get_draw_mode" qualifiers="const"> <return type="int" enum="BaseButton.DrawMode"> </return> <description> - Returns the visual state used to draw the button. This is useful mainly when implementing your own draw code by either overriding _draw() or connecting to "draw" signal. The visual state of the button is defined by the [code]DRAW_*[/code] enum. + Returns the visual state used to draw the button. This is useful mainly when implementing your own draw code by either overriding _draw() or connecting to "draw" signal. The visual state of the button is defined by the [enum DrawMode] enum. </description> </method> <method name="is_hovered" qualifiers="const"> @@ -42,7 +42,7 @@ </methods> <members> <member name="action_mode" type="int" setter="set_action_mode" getter="get_action_mode" enum="BaseButton.ActionMode" default="1"> - Determines when the button is considered clicked, one of the [code]ACTION_MODE_*[/code] constants. + Determines when the button is considered clicked, one of the [enum ActionMode] constants. </member> <member name="button_mask" type="int" setter="set_button_mask" getter="get_button_mask" default="1"> Binary mask to choose which mouse buttons this button will respond to. @@ -62,7 +62,7 @@ If [code]true[/code], the button stays pressed when moving the cursor outside the button while pressing it. </member> <member name="pressed" type="bool" setter="set_pressed" getter="is_pressed" default="false"> - If [code]true[/code], the button's state is pressed. Means the button is pressed down or toggled (if toggle_mode is active). + If [code]true[/code], the button's state is pressed. Means the button is pressed down or toggled (if [member toggle_mode] is active). </member> <member name="shortcut" type="ShortCut" setter="set_shortcut" getter="get_shortcut"> [ShortCut] associated to the button. diff --git a/doc/classes/Basis.xml b/doc/classes/Basis.xml index df9438e695..b8fe23c2c9 100644 --- a/doc/classes/Basis.xml +++ b/doc/classes/Basis.xml @@ -64,20 +64,21 @@ <return type="Vector3"> </return> <description> - Assuming that the matrix is a proper rotation matrix (orthonormal matrix with determinant +1), return Euler angles (in the YXZ convention: first Z, then X, and Y last). Returned vector contains the rotation angles in the format (X angle, Y angle, Z angle). + Returns the basis's rotation in the form of Euler angles (in the YXZ convention: first Z, then X, and Y last). The returned vector contains the rotation angles in the format (X angle, Y angle, Z angle). See [method get_rotation_quat] if you need a quaternion instead. </description> </method> <method name="get_orthogonal_index"> <return type="int"> </return> <description> - This function considers a discretization of rotations into 24 points on unit sphere, lying along the vectors (x,y,z) with each component being either -1,0 or 1, and returns the index of the point best representing the orientation of the object. It is mainly used by the grid map editor. For further details, refer to Godot source code. + This function considers a discretization of rotations into 24 points on unit sphere, lying along the vectors (x,y,z) with each component being either -1, 0, or 1, and returns the index of the point best representing the orientation of the object. It is mainly used by the grid map editor. For further details, refer to the Godot source code. </description> </method> <method name="get_rotation_quat"> <return type="Quat"> </return> <description> + Returns the basis's rotation in the form of a quaternion. See [method get_euler] if you need Euler angles, but keep in mind quaternions should generally be preferred to Euler angles. </description> </method> <method name="get_scale"> @@ -102,6 +103,7 @@ <argument index="1" name="epsilon" type="float" default="0.00001"> </argument> <description> + Returns [code]true[/code] if this basis and [code]b[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component. </description> </method> <method name="orthonormalized"> @@ -209,12 +211,16 @@ </members> <constants> <constant name="IDENTITY" value="Basis( 1, 0, 0, 0, 1, 0, 0, 0, 1 )"> + The identity basis. This is identical to calling [code]Basis()[/code] without any parameters. This constant can be used to make your code clearer. </constant> <constant name="FLIP_X" value="Basis( -1, 0, 0, 0, 1, 0, 0, 0, 1 )"> + The basis that will flip something along the X axis when used in a transformation. </constant> <constant name="FLIP_Y" value="Basis( 1, 0, 0, 0, -1, 0, 0, 0, 1 )"> + The basis that will flip something along the Y axis when used in a transformation. </constant> <constant name="FLIP_Z" value="Basis( 1, 0, 0, 0, 1, 0, 0, 0, -1 )"> + The basis that will flip something along the Z axis when used in a transformation. </constant> </constants> </class> diff --git a/doc/classes/BitmapFont.xml b/doc/classes/BitmapFont.xml index 16a28978d5..5b7c3def63 100644 --- a/doc/classes/BitmapFont.xml +++ b/doc/classes/BitmapFont.xml @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="BitmapFont" inherits="Font" category="Core" version="3.2"> <brief_description> - Renders text using [code]*.fnt[/code] fonts. + Renders text using fonts under the [url=https://www.angelcode.com/products/bmfont/]BMFont[/url] format. + Handles files with the [code].fnt[/code] extension </brief_description> <description> Renders text using [code]*.fnt[/code] fonts containing texture atlases. Supports distance fields. For using vector font files like TTF directly, see [DynamicFont]. diff --git a/doc/classes/Button.xml b/doc/classes/Button.xml index 305be8b58d..3b73580294 100644 --- a/doc/classes/Button.xml +++ b/doc/classes/Button.xml @@ -12,7 +12,7 @@ </methods> <members> <member name="align" type="int" setter="set_text_align" getter="get_text_align" enum="Button.TextAlign" default="1"> - Text alignment policy for the button's text, use one of the [code]ALIGN_*[/code] constants. + Text alignment policy for the button's text, use one of the [enum TextAlign] constants. </member> <member name="clip_text" type="bool" setter="set_clip_text" getter="get_clip_text" default="false"> When this property is enabled, text that is too large to fit the button is clipped, when disabled the Button will always be wide enough to hold the text. diff --git a/doc/classes/Camera.xml b/doc/classes/Camera.xml index 3b4313b204..aca53d4ed0 100644 --- a/doc/classes/Camera.xml +++ b/doc/classes/Camera.xml @@ -38,12 +38,14 @@ <argument index="0" name="layer" type="int"> </argument> <description> + Returns [code]true[/code] if the given [code]layer[/code] in the [member cull_mask] is enabled, [code]false[/code] otherwise. </description> </method> <method name="get_frustum" qualifiers="const"> <return type="Array"> </return> <description> + Returns the camera's frustum planes in world-space units as an array of [Plane]s in the following order: near, far, left, top, right, bottom. Not to be confused with [member frustum_offset]. </description> </method> <method name="is_position_behind" qualifiers="const"> @@ -109,6 +111,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + Enables or disables the given [code]layer[/code] in the [member cull_mask]. </description> </method> <method name="set_frustum"> @@ -123,6 +126,7 @@ <argument index="3" name="z_far" type="float"> </argument> <description> + Sets the camera projection to frustum mode (see [constant PROJECTION_FRUSTUM]), by specifying a [code]size[/code], an [code]offset[/code], and the [code]z_near[/code] and [code]z_far[/code] clip planes in world-space units. </description> </method> <method name="set_orthogonal"> @@ -135,7 +139,7 @@ <argument index="2" name="z_far" type="float"> </argument> <description> - Sets the camera projection to orthogonal mode, by specifying a width and the [code]near[/code] and [code]far[/code] clip planes in worldspace units. (As a hint, 2D games often use this projection, with values specified in pixels) + Sets the camera projection to orthogonal mode (see [constant PROJECTION_ORTHOGONAL]), by specifying a [code]size[/code], and the [code]z_near[/code] and [code]z_far[/code] clip planes in world-space units. (As a hint, 2D games often use this projection, with values specified in pixels.) </description> </method> <method name="set_perspective"> @@ -148,7 +152,7 @@ <argument index="2" name="z_far" type="float"> </argument> <description> - Sets the camera projection to perspective mode, by specifying a [code]fov[/code] angle in degrees (FOV means Field of View), and the [code]near[/code] and [code]far[/code] clip planes in world-space units. + Sets the camera projection to perspective mode (see [constant PROJECTION_PERSPECTIVE]), by specifying a [code]fov[/code] (field of view) angle in degrees, and the [code]z_near[/code] and [code]z_far[/code] clip planes in world-space units. </description> </method> <method name="unproject_position" qualifiers="const"> @@ -169,7 +173,7 @@ If [code]true[/code], the ancestor [Viewport] is currently using this camera. </member> <member name="doppler_tracking" type="int" setter="set_doppler_tracking" getter="get_doppler_tracking" enum="Camera.DopplerTracking" default="0"> - If not [constant DOPPLER_TRACKING_DISABLED], this camera will simulate the Doppler effect for objects changed in particular [code]_process[/code] methods. See [enum DopplerTracking] for possible values. + If not [constant DOPPLER_TRACKING_DISABLED], this camera will simulate the [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/url] for objects changed in particular [code]_process[/code] methods. See [enum DopplerTracking] for possible values. </member> <member name="environment" type="Environment" setter="set_environment" getter="get_environment"> The [Environment] to use for this camera. @@ -181,6 +185,7 @@ The camera's field of view angle (in degrees). Only applicable in perspective mode. Since [member keep_aspect] locks one axis, [code]fov[/code] sets the other axis' field of view angle. </member> <member name="frustum_offset" type="Vector2" setter="set_frustum_offset" getter="get_frustum_offset" default="Vector2( 0, 0 )"> + The camera's frustum offset. This can be changed from the default to create "tilted frustum" effects such as [url=https://zdoom.org/wiki/Y-shearing]Y-shearing[/url]. </member> <member name="h_offset" type="float" setter="set_h_offset" getter="get_h_offset" default="0.0"> The horizontal (X) offset of the camera viewport. @@ -218,13 +223,13 @@ Preserves the vertical aspect ratio; also known as Hor+ scaling. This is usually the best option for projects running in landscape mode, as wider aspect ratios will automatically benefit from a wider horizontal FOV. </constant> <constant name="DOPPLER_TRACKING_DISABLED" value="0" enum="DopplerTracking"> - Disables Doppler effect simulation (default). + Disables [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/url] simulation (default). </constant> <constant name="DOPPLER_TRACKING_IDLE_STEP" value="1" enum="DopplerTracking"> - Simulate Doppler effect by tracking positions of objects that are changed in [code]_process[/code]. Changes in the relative velocity of this camera compared to those objects affect how Audio is perceived (changing the Audio's [code]pitch shift[/code]). + Simulate [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/url] by tracking positions of objects that are changed in [code]_process[/code]. Changes in the relative velocity of this camera compared to those objects affect how Audio is perceived (changing the Audio's [code]pitch shift[/code]). </constant> <constant name="DOPPLER_TRACKING_PHYSICS_STEP" value="2" enum="DopplerTracking"> - Simulate Doppler effect by tracking positions of objects that are changed in [code]_physics_process[/code]. Changes in the relative velocity of this camera compared to those objects affect how Audio is perceived (changing the Audio's [code]pitch shift[/code]). + Simulate [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/url] by tracking positions of objects that are changed in [code]_physics_process[/code]. Changes in the relative velocity of this camera compared to those objects affect how Audio is perceived (changing the Audio's [code]pitch shift[/code]). </constant> </constants> </class> diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml index 6f1627e296..b575fa72e0 100644 --- a/doc/classes/Camera2D.xml +++ b/doc/classes/Camera2D.xml @@ -103,7 +103,7 @@ </methods> <members> <member name="anchor_mode" type="int" setter="set_anchor_mode" getter="get_anchor_mode" enum="Camera2D.AnchorMode" default="1"> - The Camera2D's anchor point. See [code]ANCHOR_MODE_*[/code] constants. + The Camera2D's anchor point. See [enum AnchorMode] constants. </member> <member name="current" type="bool" setter="_set_current" getter="is_current" default="false"> If [code]true[/code], the camera is the active camera for the current scene. Only one camera can be current, so setting a different camera [code]current[/code] will disable this one. diff --git a/doc/classes/CharFXTransform.xml b/doc/classes/CharFXTransform.xml index e03229abe1..ef9a366c86 100644 --- a/doc/classes/CharFXTransform.xml +++ b/doc/classes/CharFXTransform.xml @@ -1,39 +1,51 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="CharFXTransform" inherits="Reference" category="Core" version="3.2"> <brief_description> + Controls how an individual character will be displayed in a [RichTextEffect]. </brief_description> <description> + By setting various properties on this object, you can control how individual characters will be displayed in a [RichTextEffect]. </description> <tutorials> + <link>http://docs.godotengine.org/en/latest/tutorials/gui/bbcode_in_richtextlabel.html</link> + <link>https://github.com/Eoin-ONeill-Yokai/Godot-Rich-Text-Effect-Test-Project</link> </tutorials> <methods> - <method name="get_value_or"> - <return type="Variant"> - </return> - <argument index="0" name="key" type="String"> - </argument> - <argument index="1" name="default_value" type="Variant"> - </argument> - <description> - </description> - </method> </methods> <members> <member name="absolute_index" type="int" setter="set_absolute_index" getter="get_absolute_index" default="0"> + The index of the current character (starting from 0). Setting this property won't affect drawing. </member> <member name="character" type="int" setter="set_character" getter="get_character" default="0"> + The Unicode codepoint the character will use. This only affects non-whitespace characters. [method @GDScript.ord] can be useful here. For example, the following will replace all characters with asterisks: + [codeblock] + # `char_fx` is the CharFXTransform parameter from `_process_custom_fx()`. + # See the RichTextEffect documentation for details. + char_fx.character = ord("*") + [/codeblock] </member> <member name="color" type="Color" setter="set_color" getter="get_color" default="Color( 0, 0, 0, 1 )"> + The color the character will be drawn with. </member> <member name="elapsed_time" type="float" setter="set_elapsed_time" getter="get_elapsed_time" default="0.0"> + The time elapsed since the [RichTextLabel] was added to the scene tree (in seconds). Time stops when the project is paused, unless the [RichTextLabel]'s [member Node.pause_mode] is set to [constant Node.PAUSE_MODE_PROCESS]. + [b]Note:[/b] Time still passes while the [RichTextLabel] is hidden. </member> <member name="env" type="Dictionary" setter="set_environment" getter="get_environment" default="{}"> + Contains the arguments passed in the opening BBCode tag. By default, arguments are strings; if their contents match a type such as [bool], [int] or [float], they will be converted automatically. Color codes in the form [code]#rrggbb[/code] or [code]#rgb[/code] will be converted to an opaque [Color]. String arguments may not contain spaces, even if they're quoted. If present, quotes will also be present in the final string. + For example, the opening BBCode tag [code][example foo=hello bar=true baz=42 color=#ffffff][/code] will map to the following [Dictionary]: + [codeblock] + {"foo": "hello", "bar": true, "baz": 42, "color": Color(1, 1, 1, 1)} + [/codeblock] </member> <member name="offset" type="Vector2" setter="set_offset" getter="get_offset" default="Vector2( 0, 0 )"> + The position offset the character will be drawn with (in pixels). </member> <member name="relative_index" type="int" setter="set_relative_index" getter="get_relative_index" default="0"> + The index of the current character (starting from 0). Setting this property won't affect drawing. </member> <member name="visible" type="bool" setter="set_visibility" getter="is_visible" default="true"> + If [code]true[/code], the character will be drawn. If [code]false[/code], the character will be hidden. Characters around hidden characters will reflow to take the space of hidden characters. If this is not desired, set their [member color] to [code]Color(1, 1, 1, 0)[/code] instead. </member> </members> <constants> diff --git a/doc/classes/CollisionPolygon2D.xml b/doc/classes/CollisionPolygon2D.xml index fe46d45f71..1d935a3e99 100644 --- a/doc/classes/CollisionPolygon2D.xml +++ b/doc/classes/CollisionPolygon2D.xml @@ -4,7 +4,7 @@ Defines a 2D collision polygon. </brief_description> <description> - Provides a 2D collision polygon to a [CollisionObject2D] parent. Polygon can be drawn in the editor or specified by a list of vertices. + Provides a 2D collision polygon to a [CollisionObject2D] parent. Polygons can be drawn in the editor or specified by a list of vertices. </description> <tutorials> </tutorials> @@ -12,18 +12,18 @@ </methods> <members> <member name="build_mode" type="int" setter="set_build_mode" getter="get_build_mode" enum="CollisionPolygon2D.BuildMode" default="0"> - Collision build mode. Use one of the [code]BUILD_*[/code] constants. + Collision build mode. Use one of the [enum BuildMode] constants. </member> <member name="disabled" type="bool" setter="set_disabled" getter="is_disabled" default="false"> If [code]true[/code], no collisions will be detected. </member> <member name="one_way_collision" type="bool" setter="set_one_way_collision" getter="is_one_way_collision_enabled" default="false"> - If [code]true[/code], only edges that face up, relative to CollisionPolygon2D's rotation, will collide with other objects. + If [code]true[/code], only edges that face up, relative to [CollisionPolygon2D]'s rotation, will collide with other objects. </member> <member name="one_way_collision_margin" type="float" setter="set_one_way_collision_margin" getter="get_one_way_collision_margin" default="1.0"> </member> <member name="polygon" type="PoolVector2Array" setter="set_polygon" getter="get_polygon" default="PoolVector2Array( )"> - The polygon's list of vertices. The final point will be connected to the first. The returned value is a clone of the PoolVector2Array, not a reference. + The polygon's list of vertices. The final point will be connected to the first. The returned value is a clone of the [PoolVector2Array], not a reference. </member> </members> <constants> diff --git a/doc/classes/CollisionShape2D.xml b/doc/classes/CollisionShape2D.xml index 5fd8826a98..4166ee31d3 100644 --- a/doc/classes/CollisionShape2D.xml +++ b/doc/classes/CollisionShape2D.xml @@ -19,6 +19,7 @@ Sets whether this collision shape should only detect collision on one side (top or bottom). </member> <member name="one_way_collision_margin" type="float" setter="set_one_way_collision_margin" getter="get_one_way_collision_margin" default="1.0"> + The margin used for one-way collision (in pixels). </member> <member name="shape" type="Shape2D" setter="set_shape" getter="get_shape"> The actual shape owned by this collision shape. diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml index deba30712e..1d4225542a 100644 --- a/doc/classes/Color.xml +++ b/doc/classes/Color.xml @@ -157,6 +157,7 @@ <argument index="0" name="color" type="Color"> </argument> <description> + Returns [code]true[/code] if this color and [code]color[/code] are approximately equal, by running [method @GDScript.is_equal_approx] on each component. </description> </method> <method name="lightened"> diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml index 56f54e4434..d99f90d09a 100644 --- a/doc/classes/ConfigFile.xml +++ b/doc/classes/ConfigFile.xml @@ -104,7 +104,8 @@ <argument index="0" name="path" type="String"> </argument> <description> - Loads the config file specified as a parameter. The file's contents are parsed and loaded in the ConfigFile object which the method was called on. Returns one of the [constant OK], [constant FAILED] or [code]ERR_*[/code] constants listed in [@GlobalScope]. If the load was successful, the return value is [constant OK]. + Loads the config file specified as a parameter. The file's contents are parsed and loaded in the ConfigFile object which the method was called on. + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="load_encrypted"> @@ -133,7 +134,8 @@ <argument index="0" name="path" type="String"> </argument> <description> - Saves the contents of the ConfigFile object to the file specified as a parameter. The output file uses an INI-style structure. Returns one of the [constant OK], [constant FAILED] or [code]ERR_*[/code] constants listed in [@GlobalScope]. If the load was successful, the return value is [constant OK]. + Saves the contents of the ConfigFile object to the file specified as a parameter. The output file uses an INI-style structure. + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="save_encrypted"> diff --git a/doc/classes/ConfirmationDialog.xml b/doc/classes/ConfirmationDialog.xml index 8a8d1ed9e8..01a2eebce5 100644 --- a/doc/classes/ConfirmationDialog.xml +++ b/doc/classes/ConfirmationDialog.xml @@ -5,6 +5,10 @@ </brief_description> <description> Dialog for confirmation of actions. This dialog inherits from [AcceptDialog], but has by default an OK and Cancel button (in host OS order). + To get cancel action, you can use: + [codeblock] + get_cancel().connect("pressed", self, "cancelled") + [/codeblock]. </description> <tutorials> </tutorials> diff --git a/doc/classes/CubeMap.xml b/doc/classes/CubeMap.xml index 2cedc78499..6db1cf2d64 100644 --- a/doc/classes/CubeMap.xml +++ b/doc/classes/CubeMap.xml @@ -22,7 +22,7 @@ <argument index="0" name="side" type="int" enum="CubeMap.Side"> </argument> <description> - Returns an [Image] for a side of the [CubeMap] using one of the [code]SIDE_*[/code] constants or an integer 0-5. + Returns an [Image] for a side of the [CubeMap] using one of the [enum Side] constants. </description> </method> <method name="get_width" qualifiers="const"> @@ -40,19 +40,19 @@ <argument index="1" name="image" type="Image"> </argument> <description> - Sets an [Image] for a side of the [CubeMap] using one of the [code]SIDE_*[/code] constants or an integer 0-5. + Sets an [Image] for a side of the [CubeMap] using one of the [enum Side] constants. </description> </method> </methods> <members> <member name="flags" type="int" setter="set_flags" getter="get_flags" default="7"> - The render flags for the [CubeMap]. See the [code]FLAG_*[/code] constants for details. + The render flags for the [CubeMap]. See the [enum Flags] constants for details. </member> <member name="lossy_storage_quality" type="float" setter="set_lossy_storage_quality" getter="get_lossy_storage_quality" default="0.7"> - The lossy storage quality of the [CubeMap] if the storage mode is set to STORAGE_COMPRESS_LOSSY. + The lossy storage quality of the [CubeMap] if the storage mode is set to [constant STORAGE_COMPRESS_LOSSY]. </member> <member name="storage_mode" type="int" setter="set_storage" getter="get_storage" enum="CubeMap.Storage" default="0"> - The [CubeMap]'s storage mode. See [code]STORAGE_*[/code] constants. + The [CubeMap]'s storage mode. See [enum Storage] constants. </member> </members> <constants> diff --git a/doc/classes/Directory.xml b/doc/classes/Directory.xml index 8aae85563a..754fafadbe 100644 --- a/doc/classes/Directory.xml +++ b/doc/classes/Directory.xml @@ -33,7 +33,7 @@ </argument> <description> Changes the currently opened directory to the one passed as an argument. The argument can be relative to the current directory (e.g. [code]newdir[/code] or [code]../newdir[/code]), or an absolute path (e.g. [code]/tmp/newdir[/code] or [code]res://somedir/newdir[/code]). - The method returns one of the error code constants defined in [@GlobalScope] ([code]OK[/code] or [code]ERR_*[/code]). + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="copy"> @@ -45,7 +45,7 @@ </argument> <description> Copies the [code]from[/code] file to the [code]to[/code] destination. Both arguments should be paths to files, either relative or absolute. If the destination file exists and is not access-protected, it will be overwritten. - Returns one of the error code constants defined in [@GlobalScope] ([code]OK[/code], [code]FAILED[/code] or [code]ERR_*[/code]). + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="current_is_dir" qualifiers="const"> @@ -145,7 +145,7 @@ </argument> <description> Creates a directory. The argument can be relative to the current directory, or an absolute path. The target directory should be placed in an already existing directory (to create the full path recursively, see [method make_dir_recursive]). - The method returns one of the error code constants defined in [@GlobalScope] ([code]OK[/code], [code]FAILED[/code] or [code]ERR_*[/code]). + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="make_dir_recursive"> @@ -155,7 +155,7 @@ </argument> <description> Creates a target directory and all necessary intermediate directories in its path, by calling [method make_dir] recursively. The argument can be relative to the current directory, or an absolute path. - Returns one of the error code constants defined in [@GlobalScope] ([code]0K[/code], [code]FAILED[/code] or [code]ERR_*[/code]). + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="open"> @@ -165,7 +165,7 @@ </argument> <description> Opens an existing directory of the filesystem. The [code]path[/code] argument can be within the project tree ([code]res://folder[/code]), the user directory ([code]user://folder[/code]) or an absolute path of the user filesystem (e.g. [code]/tmp/folder[/code] or [code]C:\tmp\folder[/code]). - The method returns one of the error code constants defined in [@GlobalScope] ([code]OK[/code] or [code]ERR_*[/code]). + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="remove"> @@ -175,7 +175,7 @@ </argument> <description> Deletes the target file or an empty directory. The argument can be relative to the current directory, or an absolute path. If the target directory is not empty, the operation will fail. - Returns one of the error code constants defined in [@GlobalScope] ([code]OK[/code] or [code]FAILED[/code]). + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="rename"> @@ -187,7 +187,7 @@ </argument> <description> Renames (move) the [code]from[/code] file to the [code]to[/code] destination. Both arguments should be paths to files, either relative or absolute. If the destination file exists and is not access-protected, it will be overwritten. - Returns one of the error code constants defined in [@GlobalScope] ([code]OK[/code] or [code]FAILED[/code]). + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> </methods> diff --git a/doc/classes/DynamicFont.xml b/doc/classes/DynamicFont.xml index 0820d4e1b6..ac8595d783 100644 --- a/doc/classes/DynamicFont.xml +++ b/doc/classes/DynamicFont.xml @@ -4,7 +4,8 @@ DynamicFont renders vector font files at runtime. </brief_description> <description> - DynamicFont renders vector font files (such as TTF or OTF) dynamically at runtime instead of using a prerendered texture atlas like [BitmapFont]. This trades the faster loading time of [BitmapFont]s for the ability to change font parameters like size and spacing during runtime. [DynamicFontData] is used for referencing the font file paths. + DynamicFont renders vector font files (such as TTF or OTF) dynamically at runtime instead of using a prerendered texture atlas like [BitmapFont]. This trades the faster loading time of [BitmapFont]s for the ability to change font parameters like size and spacing during runtime. [DynamicFontData] is used for referencing the font file paths. DynamicFont also supports defining one or more fallbacks fonts, which will be used when displaying a character not supported by the main font. + DynamicFont uses the [url=https://www.freetype.org/]FreeType[/url] library for rasterization. [codeblock] var dynamic_font = DynamicFont.new() dynamic_font.font_data = load("res://BarlowCondensed-Bold.ttf") @@ -46,6 +47,7 @@ <argument index="0" name="type" type="int"> </argument> <description> + Returns the spacing for the given [code]type[/code] (see [enum SpacingType]). </description> </method> <method name="remove_fallback"> @@ -76,6 +78,7 @@ <argument index="1" name="value" type="int"> </argument> <description> + Sets the spacing for [code]type[/code] (see [enum SpacingType]) to [code]value[/code] in pixels (not relative to the font size). </description> </method> </methods> @@ -96,17 +99,20 @@ The font data. </member> <member name="outline_color" type="Color" setter="set_outline_color" getter="get_outline_color" default="Color( 1, 1, 1, 1 )"> + The font outline's color. + [b]Note:[/b] It's recommended to leave this at the default value so that you can adjust it in individual controls. For example, if the outline is made black here, it won't be possible to change its color using a Label's font outline modulate theme item. </member> <member name="outline_size" type="int" setter="set_outline_size" getter="get_outline_size" default="0"> + The font outline's thickness in pixels (not relative to the font size). </member> <member name="size" type="int" setter="set_size" getter="get_size" default="16"> - The font size. + The font size in pixels. </member> <member name="use_filter" type="bool" setter="set_use_filter" getter="get_use_filter" default="false"> - If [code]true[/code], filtering is used. + If [code]true[/code], filtering is used. This makes the font blurry instead of pixelated when scaling it if font oversampling is disabled or ineffective. It's recommended to enable this when using the font in a control whose size changes over time, unless a pixel art aesthetic is desired. </member> <member name="use_mipmaps" type="bool" setter="set_use_mipmaps" getter="get_use_mipmaps" default="false"> - If [code]true[/code], mipmapping is used. + If [code]true[/code], mipmapping is used. This improves the font's appearance when downscaling it if font oversampling is disabled or ineffective. </member> </members> <constants> diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml index 5395a8fcb0..18e8ee2d7e 100644 --- a/doc/classes/EditorSettings.xml +++ b/doc/classes/EditorSettings.xml @@ -21,7 +21,10 @@ <argument index="0" name="info" type="Dictionary"> </argument> <description> - Adds a custom property info to a property. The dictionary must contain: name:[String](the name of the property) and type:[int](see [code]TYPE_*[/code] in [@GlobalScope]), and optionally hint:[int](see [code]PROPERTY_HINT_*[/code] in [@GlobalScope]), hint_string:[String]. + Adds a custom property info to a property. The dictionary must contain: + - [code]name[/code]: [String] (the name of the property) + - [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] editor_settings.set("category/property_name", 0) diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml index 0d64f0ff64..1feccec501 100644 --- a/doc/classes/Environment.xml +++ b/doc/classes/Environment.xml @@ -45,7 +45,7 @@ Global contrast value of the rendered scene (default value is 1). </member> <member name="adjustment_enabled" type="bool" setter="set_adjustment_enable" getter="is_adjustment_enabled" default="false"> - Enables the adjustment_* options provided by this resource. If [code]false[/code], adjustments modifications will have no effect on the rendered scene. + Enables the [code]adjustment_*[/code] options provided by this resource. If [code]false[/code], adjustments modifications will have no effect on the rendered scene. </member> <member name="adjustment_saturation" type="float" setter="set_adjustment_saturation" getter="get_adjustment_saturation" default="1.0"> Global color saturation value of the rendered scene (default value is 1). diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml index 80e9b152ef..3041a7cb7f 100644 --- a/doc/classes/GraphEdit.xml +++ b/doc/classes/GraphEdit.xml @@ -87,6 +87,8 @@ <return type="HBoxContainer"> </return> <description> + Gets the [HBoxContainer] that contains the zooming and grid snap controls in the top left of the graph. + Warning: The intended usage of this function is to allow you to reposition or add your own custom controls to the container. This is an internal control and as such should not be freed. If you wish to hide this or any of it's children use their [member CanvasItem.visible] property instead. </description> </method> <method name="is_node_connected"> diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml index 8470a346ff..77b3eb1ca0 100644 --- a/doc/classes/GraphNode.xml +++ b/doc/classes/GraphNode.xml @@ -5,6 +5,7 @@ </brief_description> <description> A GraphNode is a container defined by a title. It can have one or more input and output slots, which can be enabled (shown) or disabled (not shown) and have different (incompatible) types. Colors can also be assigned to slots. A tuple of input and output slots is defined for each GUI element included in the GraphNode. Input and output connections are left and right slots, but only enabled slots are counted as connections. + To add a slot to GraphNode, add any [Control]-derived child node to it. </description> <tutorials> </tutorials> @@ -169,6 +170,12 @@ <argument index="8" name="custom_right" type="Texture" default="null"> </argument> <description> + Sets properties of the slot with id [code]idx[/code]. + If [code]enable_left[/code]/[code]right[/code], a port will appear and the slot will be able to be connected from this side. + [code]type_left[/code]/[code]right[/code] is an arbitrary type of the port. Only ports with the same type values can be connected. + [code]color_left[/code]/[code]right[/code] is the tint of the port's icon on this side. + [code]custom_left[/code]/[code]right[/code] is a custom texture for this side's port. + [b]Note:[/b] this method only sets properties of the slot. To create the slot, add a [Control]-derived child to the GraphNode. </description> </method> </methods> diff --git a/doc/classes/HSlider.xml b/doc/classes/HSlider.xml index 2fef4669d2..4e7d9bc9f3 100644 --- a/doc/classes/HSlider.xml +++ b/doc/classes/HSlider.xml @@ -13,20 +13,14 @@ <constants> </constants> <theme_items> - <theme_item name="focus" type="StyleBox"> - </theme_item> <theme_item name="grabber" type="Texture"> </theme_item> <theme_item name="grabber_area" type="StyleBox"> </theme_item> <theme_item name="grabber_disabled" type="Texture"> </theme_item> - <theme_item name="grabber_disabled" type="StyleBox"> - </theme_item> <theme_item name="grabber_highlight" type="Texture"> </theme_item> - <theme_item name="grabber_highlight" type="StyleBox"> - </theme_item> <theme_item name="slider" type="StyleBox"> </theme_item> <theme_item name="tick" type="Texture"> diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml index 3347eeafa7..3a63b2dc07 100644 --- a/doc/classes/HTTPClient.xml +++ b/doc/classes/HTTPClient.xml @@ -79,7 +79,7 @@ <return type="int" enum="HTTPClient.Status"> </return> <description> - Returns a [code]STATUS_*[/code] enum constant. Need to call [method poll] in order to get status updates. + Returns a [enum Status] constant. Need to call [method poll] in order to get status updates. </description> </method> <method name="has_response" qualifiers="const"> @@ -112,13 +112,13 @@ Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary, e.g.: [codeblock] var fields = {"username": "user", "password": "pass"} - String query_string = http_client.query_string_from_dict(fields) + var query_string = http_client.query_string_from_dict(fields) # Returns "username=user&password=pass" [/codeblock] Furthermore, if a key has a [code]null[/code] value, only the key itself is added, without equal sign and value. If the value is an array, for each value in it a pair with the same key is added. [codeblock] var fields = {"single": 123, "not_valued": null, "multiple": [22, 33, 44]} - String query_string = http_client.query_string_from_dict(fields) + var query_string = http_client.query_string_from_dict(fields) # Returns "single=123&not_valued&multiple=22&multiple=33&multiple=44" [/codeblock] </description> @@ -143,7 +143,7 @@ </argument> <description> Sends a request to the connected host. The URL parameter is just the part after the host, so for [code]http://somehost.com/index.php[/code], it is [code]index.php[/code]. - Headers are HTTP request headers. For available HTTP methods, see [code]METHOD_*[/code]. + Headers are HTTP request headers. For available HTTP methods, see [enum Method]. To create a POST request with query strings to push to the server, do: [codeblock] var fields = {"username" : "user", "password" : "pass"} @@ -166,7 +166,7 @@ </argument> <description> Sends a raw request to the connected host. The URL parameter is just the part after the host, so for [code]http://somehost.com/index.php[/code], it is [code]index.php[/code]. - Headers are HTTP request headers. For available HTTP methods, see [code]METHOD_*[/code]. + Headers are HTTP request headers. For available HTTP methods, see [enum Method]. Sends the body data raw, as a byte array and does not encode it in any way. </description> </method> diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml index 98ba08e6a2..748ed504c3 100644 --- a/doc/classes/HTTPRequest.xml +++ b/doc/classes/HTTPRequest.xml @@ -6,6 +6,27 @@ <description> A node with the ability to send HTTP requests. Uses [HTTPClient] internally. Can be used to make HTTP requests, i.e. download or upload files or web content via HTTP. + [b]Example of contacting a REST API and printing one of its returned fields:[/b] + [codeblock] + func _ready(): + # Create an HTTP request node and connect its completion signal. + var http_request = HTTPRequest.new() + add_child(http_request) + http_request.connect("request_completed", self, "_http_request_completed") + + # Perform the HTTP request. The URL below returns some JSON as of writing. + var error = http_request.request("https://httpbin.org/get") + if error != OK: + push_error("An error occurred in the HTTP request.") + + + # Called when the HTTP request is completed. + func _http_request_completed(result, response_code, headers, body): + var response = parse_json(body.get_string_from_utf8()) + + # Will print the user agent string used by the HTTPRequest node (as recognized by httpbin.org). + print(response.headers["User-Agent"]) + [/codeblock] [b]Example of loading and displaying an image using HTTPRequest:[/b] [codeblock] func _ready(): @@ -67,7 +88,7 @@ <return type="int" enum="HTTPClient.Status"> </return> <description> - Returns the current status of the underlying [HTTPClient]. See [code]STATUS_*[/code] enum on [HTTPClient]. + Returns the current status of the underlying [HTTPClient]. See [enum HTTPClient.Status]. </description> </method> <method name="request"> diff --git a/doc/classes/IP.xml b/doc/classes/IP.xml index b8b5f0bd39..bfc645b8e7 100644 --- a/doc/classes/IP.xml +++ b/doc/classes/IP.xml @@ -65,7 +65,7 @@ <argument index="0" name="id" type="int"> </argument> <description> - Returns a queued hostname's status as a [code]RESOLVER_STATUS_*[/code] constant, given its queue [code]id[/code]. + Returns a queued hostname's status as a [enum ResolverStatus] constant, given its queue [code]id[/code]. </description> </method> <method name="resolve_hostname"> @@ -76,7 +76,7 @@ <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3"> </argument> <description> - Returns a given hostname's IPv4 or IPv6 address when resolved (blocking-type method). The address type returned depends on the [code]TYPE_*[/code] constant given as [code]ip_type[/code]. + Returns a given hostname's IPv4 or IPv6 address when resolved (blocking-type method). The address type returned depends on the [enum Type] constant given as [code]ip_type[/code]. </description> </method> <method name="resolve_hostname_queue_item"> @@ -87,7 +87,7 @@ <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3"> </argument> <description> - Creates a queue item to resolve a hostname to an IPv4 or IPv6 address depending on the [code]TYPE_*[/code] constant given as [code]ip_type[/code]. Returns the queue ID if successful, or [constant RESOLVER_INVALID_ID] on error. + Creates a queue item to resolve a hostname to an IPv4 or IPv6 address depending on the [enum Type] constant given as [code]ip_type[/code]. Returns the queue ID if successful, or [constant RESOLVER_INVALID_ID] on error. </description> </method> </methods> diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml index c6d63035d1..0303585120 100644 --- a/doc/classes/Image.xml +++ b/doc/classes/Image.xml @@ -90,7 +90,7 @@ <argument index="2" name="lossy_quality" type="float"> </argument> <description> - Compresses the image to use less memory. Can not directly access pixel data while the image is compressed. Returns error if the chosen compression mode is not available. See [code]COMPRESS_*[/code] constants. + Compresses the image to use less memory. Can not directly access pixel data while the image is compressed. Returns error if the chosen compression mode is not available. See [enum CompressMode] and [enum CompressSource] constants. </description> </method> <method name="convert"> @@ -99,7 +99,7 @@ <argument index="0" name="format" type="int" enum="Image.Format"> </argument> <description> - Converts the image's format. See [code]FORMAT_*[/code] constants. + Converts the image's format. See [enum Format] constants. </description> </method> <method name="copy_from"> @@ -123,7 +123,7 @@ <argument index="3" name="format" type="int" enum="Image.Format"> </argument> <description> - Creates an empty image of given size and format. See [code]FORMAT_*[/code] constants. If [code]use_mipmaps[/code] is [code]true[/code] then generate mipmaps for this image. See the [method generate_mipmaps]. + Creates an empty image of given size and format. See [enum Format] constants. If [code]use_mipmaps[/code] is [code]true[/code] then generate mipmaps for this image. See the [method generate_mipmaps]. </description> </method> <method name="create_from_data"> @@ -140,7 +140,7 @@ <argument index="4" name="data" type="PoolByteArray"> </argument> <description> - Creates a new image of given size and format. See [code]FORMAT_*[/code] constants. Fills the image with the given raw data. If [code]use_mipmaps[/code] is [code]true[/code] then generate mipmaps for this image. See the [method generate_mipmaps]. + Creates a new image of given size and format. See [enum Format] constants. Fills the image with the given raw data. If [code]use_mipmaps[/code] is [code]true[/code] then generate mipmaps for this image. See the [method generate_mipmaps]. </description> </method> <method name="crop"> @@ -165,7 +165,7 @@ <return type="int" enum="Image.AlphaMode"> </return> <description> - Returns ALPHA_BLEND if the image has data for alpha values. Returns ALPHA_BIT if all the alpha values are below a certain threshold or the maximum value. Returns ALPHA_NONE if no data for alpha values is found. + Returns [constant ALPHA_BLEND] if the image has data for alpha values. Returns [constant ALPHA_BIT] if all the alpha values are below a certain threshold or the maximum value. Returns [constant ALPHA_NONE] if no data for alpha values is found. </description> </method> <method name="expand_x2_hq2x"> @@ -225,7 +225,7 @@ <return type="int" enum="Image.Format"> </return> <description> - Returns the image's format. See [code]FORMAT_*[/code] constants. + Returns the image's format. See [enum Format] constants. </description> </method> <method name="get_height" qualifiers="const"> @@ -491,7 +491,7 @@ </methods> <members> <member name="data" type="Dictionary" setter="_set_data" getter="_get_data" default="{"data": PoolByteArray( ),"format": "Lum8","height": 0,"mipmaps": false,"width": 0}"> - Holds all of the image's color data in a given format. See [code]FORMAT_*[/code] constants. + Holds all of the image's color data in a given format. See [enum Format] constants. </member> </members> <constants> diff --git a/doc/classes/ImmediateGeometry.xml b/doc/classes/ImmediateGeometry.xml index ddfd3d74d5..416128c9b1 100644 --- a/doc/classes/ImmediateGeometry.xml +++ b/doc/classes/ImmediateGeometry.xml @@ -30,7 +30,7 @@ <argument index="0" name="position" type="Vector3"> </argument> <description> - Adds a vertex with the currently set color/uv/etc. + Adds a vertex in local coordinate space with the currently set color/uv/etc. </description> </method> <method name="begin"> @@ -41,8 +41,8 @@ <argument index="1" name="texture" type="Texture" default="null"> </argument> <description> - Begin drawing (And optionally pass a texture override). When done call end(). For more information on how this works, search for glBegin() glEnd() references. - For the type of primitive, use the [Mesh].[code]PRIMITIVE_*[/code] enumerations. + Begin drawing (and optionally pass a texture override). When done call [method end]. For more information on how this works, search for [code]glBegin()[/code] and [code]glEnd()[/code] references. + For the type of primitive, see the [enum Mesh.PrimitiveType] enum. </description> </method> <method name="clear"> diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index 6d4adfad51..3f94ad2d2c 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -314,7 +314,7 @@ <argument index="2" name="hotspot" type="Vector2" default="Vector2( 0, 0 )"> </argument> <description> - Sets a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. Passing [code]null[/code] to the image parameter resets to the system cursor. See enum [code]CURSOR_*[/code] for the list of shapes. + Sets a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. Passing [code]null[/code] to the image parameter resets to the system cursor. See [enum CursorShape] for the list of shapes. [code]image[/code]'s size must be lower than 256×256. [code]hotspot[/code] must be within [code]image[/code]'s size. [b]Note:[/b] [AnimatedTexture]s aren't supported as custom mouse cursors. If using an [AnimatedTexture], only the first frame will be displayed. diff --git a/doc/classes/JSONParseResult.xml b/doc/classes/JSONParseResult.xml index 98db123f5b..01cffe6262 100644 --- a/doc/classes/JSONParseResult.xml +++ b/doc/classes/JSONParseResult.xml @@ -12,13 +12,13 @@ </methods> <members> <member name="error" type="int" setter="set_error" getter="get_error" enum="Error"> - The error type if the JSON source was not successfully parsed. See the [@GlobalScope] [code]ERR_*[/code] constants. + The error type if the JSON source was not successfully parsed. See the [enum Error] constants. </member> <member name="error_line" type="int" setter="set_error_line" getter="get_error_line" default="-1"> The line number where the error occurred if JSON source was not successfully parsed. </member> <member name="error_string" type="String" setter="set_error_string" getter="get_error_string" default=""""> - The error message if JSON source was not successfully parsed. See the [@GlobalScope] [code]ERR_*[/code] constants. + The error message if JSON source was not successfully parsed. See the [enum Error] constants. </member> <member name="result" type="Variant" setter="set_result" getter="get_result"> A [Variant] containing the parsed JSON. Use [method @GDScript.typeof] or the [code]is[/code] keyword to check if it is what you expect. For example, if the JSON source starts with curly braces ([code]{}[/code]), a [Dictionary] will be returned. If the JSON source starts with braces ([code][][/code]), an [Array] will be returned. diff --git a/doc/classes/KinematicBody.xml b/doc/classes/KinematicBody.xml index 2fab689f89..164932749f 100644 --- a/doc/classes/KinematicBody.xml +++ b/doc/classes/KinematicBody.xml @@ -18,6 +18,7 @@ <argument index="0" name="axis" type="int" enum="PhysicsServer.BodyAxis"> </argument> <description> + Returns [code]true[/code] if the specified [code]axis[/code] is locked. See also [member move_lock_x], [member move_lock_y] and [member move_lock_z]. </description> </method> <method name="get_floor_velocity" qualifiers="const"> @@ -125,7 +126,7 @@ </argument> <description> Moves the body while keeping it attached to slopes. Similar to [method move_and_slide]. - As long as the [code]snap[/code] vector is in contact with the ground, the body will remain attached to the surface. This means you must disable snap in order to jump, for example. You can do this by setting[code]snap[/code] to[code](0, 0, 0)[/code] or by using [method move_and_slide] instead. + As long as the [code]snap[/code] vector is in contact with the ground, the body will remain attached to the surface. This means you must disable snap in order to jump, for example. You can do this by setting [code]snap[/code] to [code](0, 0, 0)[/code] or by using [method move_and_slide] instead. </description> </method> <method name="set_axis_lock"> @@ -136,6 +137,7 @@ <argument index="1" name="lock" type="bool"> </argument> <description> + Locks or unlocks the specified [code]axis[/code] depending on the value of [code]lock[/code]. See also [member move_lock_x], [member move_lock_y] and [member move_lock_z]. </description> </method> <method name="test_move"> diff --git a/doc/classes/KinematicCollision.xml b/doc/classes/KinematicCollision.xml index 44447c8fc8..46e4176e9f 100644 --- a/doc/classes/KinematicCollision.xml +++ b/doc/classes/KinematicCollision.xml @@ -16,7 +16,7 @@ The colliding body. </member> <member name="collider_id" type="int" setter="" getter="get_collider_id" default="0"> - The colliding body's unique [RID]. + The colliding body's unique instance ID. See [method Object.get_instance_id]. </member> <member name="collider_metadata" type="Variant" setter="" getter="get_collider_metadata"> The colliding body's metadata. See [Object]. diff --git a/doc/classes/KinematicCollision2D.xml b/doc/classes/KinematicCollision2D.xml index 51c2277fb2..4c9337f82d 100644 --- a/doc/classes/KinematicCollision2D.xml +++ b/doc/classes/KinematicCollision2D.xml @@ -16,7 +16,7 @@ The colliding body. </member> <member name="collider_id" type="int" setter="" getter="get_collider_id" default="0"> - The colliding body's unique [RID]. + The colliding body's unique instance ID. See [method Object.get_instance_id]. </member> <member name="collider_metadata" type="Variant" setter="" getter="get_collider_metadata"> The colliding body's metadata. See [Object]. diff --git a/doc/classes/Label.xml b/doc/classes/Label.xml index 4d1584e9de..9222611090 100644 --- a/doc/classes/Label.xml +++ b/doc/classes/Label.xml @@ -41,7 +41,7 @@ </methods> <members> <member name="align" type="int" setter="set_align" getter="get_align" enum="Label.Align" default="0"> - Controls the text's horizontal align. Supports left, center, right, and fill, or justify. Set it to one of the [code]ALIGN_*[/code] constants. + Controls the text's horizontal align. Supports left, center, right, and fill, or justify. Set it to one of the [enum Align] constants. </member> <member name="autowrap" type="bool" setter="set_autowrap" getter="has_autowrap" default="false"> If [code]true[/code], wraps the text inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. @@ -67,7 +67,7 @@ If [code]true[/code], all the text displays as UPPERCASE. </member> <member name="valign" type="int" setter="set_valign" getter="get_valign" enum="Label.VAlign" default="0"> - Controls the text's vertical align. Supports top, center, bottom, and fill. Set it to one of the [code]VALIGN_*[/code] constants. + Controls the text's vertical align. Supports top, center, bottom, and fill. Set it to one of the [enum VAlign] constants. </member> <member name="visible_characters" type="int" setter="set_visible_characters" getter="get_visible_characters" default="-1"> Restricts the number of characters to display. Set to -1 to disable. diff --git a/doc/classes/Light2D.xml b/doc/classes/Light2D.xml index f61be5a5af..5bb90daaf4 100644 --- a/doc/classes/Light2D.xml +++ b/doc/classes/Light2D.xml @@ -26,7 +26,7 @@ The Light2D's energy value. The larger the value, the stronger the light. </member> <member name="mode" type="int" setter="set_mode" getter="get_mode" enum="Light2D.Mode" default="0"> - The Light2D's mode. See [code]MODE_*[/code] constants for values. + The Light2D's mode. See [enum Mode] constants for values. </member> <member name="offset" type="Vector2" setter="set_texture_offset" getter="get_texture_offset" default="Vector2( 0, 0 )"> The offset of the Light2D's [code]texture[/code]. diff --git a/doc/classes/Line2D.xml b/doc/classes/Line2D.xml index 3cb04b8b89..9eaf70711e 100644 --- a/doc/classes/Line2D.xml +++ b/doc/classes/Line2D.xml @@ -66,14 +66,17 @@ </method> </methods> <members> + <member name="antialiased" type="bool" setter="set_antialiased" getter="get_antialiased" default="false"> + If [code]true[/code], the line's border will be anti-aliased. + </member> <member name="begin_cap_mode" type="int" setter="set_begin_cap_mode" getter="get_begin_cap_mode" enum="Line2D.LineCapMode" default="0"> - Controls the style of the line's first point. Use [code]LINE_CAP_*[/code] constants. + Controls the style of the line's first point. Use [enum LineCapMode] constants. </member> <member name="default_color" type="Color" setter="set_default_color" getter="get_default_color" default="Color( 0.4, 0.5, 1, 1 )"> The line's color. Will not be used if a gradient is set. </member> <member name="end_cap_mode" type="int" setter="set_end_cap_mode" getter="get_end_cap_mode" enum="Line2D.LineCapMode" default="0"> - Controls the style of the line's last point. Use [code]LINE_CAP_*[/code] constants. + Controls the style of the line's last point. Use [enum LineCapMode] constants. </member> <member name="gradient" type="Gradient" setter="set_gradient" getter="get_gradient"> The gradient is drawn through the whole line from start to finish. The default color will not be used if a gradient is set. @@ -94,7 +97,7 @@ The texture used for the line's texture. Uses [code]texture_mode[/code] for drawing style. </member> <member name="texture_mode" type="int" setter="set_texture_mode" getter="get_texture_mode" enum="Line2D.LineTextureMode" default="0"> - The style to render the [code]texture[/code] on the line. Use [code]LINE_TEXTURE_*[/code] constants. + The style to render the [code]texture[/code] on the line. Use [enum LineTextureMode] constants. </member> <member name="width" type="float" setter="set_width" getter="get_width" default="10.0"> The line's width. diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml index de216563d3..78459d2839 100644 --- a/doc/classes/LineEdit.xml +++ b/doc/classes/LineEdit.xml @@ -54,7 +54,7 @@ <argument index="0" name="option" type="int"> </argument> <description> - Executes a given action as defined in the[code]MENU_*[/code] enum. + Executes a given action as defined in the [enum MenuItems] enum. </description> </method> <method name="select"> @@ -84,7 +84,7 @@ </methods> <members> <member name="align" type="int" setter="set_align" getter="get_align" enum="LineEdit.Align" default="0"> - Text alignment as defined in the [code]ALIGN_*[/code] enum. + Text alignment as defined in the [enum Align] enum. </member> <member name="caret_blink" type="bool" setter="cursor_set_blink_enabled" getter="cursor_get_blink_enabled" default="false"> If [code]true[/code], the caret (visual cursor) blinks. diff --git a/doc/classes/Listener.xml b/doc/classes/Listener.xml index 130263a069..ae8c38198f 100644 --- a/doc/classes/Listener.xml +++ b/doc/classes/Listener.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="Listener" inherits="Spatial" category="Core" version="3.2"> <brief_description> + Overrides the location sounds are heard from. </brief_description> <description> + Once added to the scene tree and enabled using [method make_current], this node will override the location sounds are heard from. This can be used to listen from a location different from the [Camera]. + [b]Note:[/b] There is no 2D equivalent for this node yet. </description> <tutorials> </tutorials> @@ -11,24 +14,29 @@ <return type="void"> </return> <description> + Disables the listener to use the current camera's listener instead. </description> </method> <method name="get_listener_transform" qualifiers="const"> <return type="Transform"> </return> <description> + Returns the listener's global orthonormalized [Transform]. </description> </method> <method name="is_current" qualifiers="const"> <return type="bool"> </return> <description> + Returns [code]true[/code] if the listener was made current using [method make_current], [code]false[/code] otherwise. + [b]Note:[/b] There may be more than one Listener marked as "current" in the scene tree, but only the one that was made current last will be used. </description> </method> <method name="make_current"> <return type="void"> </return> <description> + Enables the listener. This will override the current camera's listener. </description> </method> </methods> diff --git a/doc/classes/Mesh.xml b/doc/classes/Mesh.xml index f7b3b0d7ea..d4804930e1 100644 --- a/doc/classes/Mesh.xml +++ b/doc/classes/Mesh.xml @@ -40,6 +40,14 @@ Generate a [TriangleMesh] from the mesh. </description> </method> + <method name="get_aabb" qualifiers="const"> + <return type="AABB"> + </return> + <description> + Returns the smallest [AABB] enclosing this mesh. Not affected by [code]custom_aabb[/code]. + [b]Note:[/b] This is only implemented for [ArrayMesh] and [PrimitiveMesh]. + </description> + </method> <method name="get_faces" qualifiers="const"> <return type="PoolVector3Array"> </return> diff --git a/doc/classes/MultiplayerAPI.xml b/doc/classes/MultiplayerAPI.xml index 5f8c7ed120..9cd3fe7bb4 100644 --- a/doc/classes/MultiplayerAPI.xml +++ b/doc/classes/MultiplayerAPI.xml @@ -92,7 +92,7 @@ [b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution. </member> <member name="network_peer" type="NetworkedMultiplayerPeer" setter="set_network_peer" getter="get_network_peer"> - The peer object to handle the RPC system (effectively enabling networking when set). Depending on the peer itself, the MultiplayerAPI will become a network server (check with [method is_network_server]) and will set root node's network mode to master (see [code]NETWORK_MODE_*[/code] constants in [Node]), or it will become a regular peer with root node set to puppet. All child nodes are set to inherit the network mode by default. Handling of networking-related events (connection, disconnection, new clients) is done by connecting to MultiplayerAPI's signals. + The peer object to handle the RPC system (effectively enabling networking when set). Depending on the peer itself, the MultiplayerAPI will become a network server (check with [method is_network_server]) and will set root node's network mode to master, or it will become a regular peer with root node set to puppet. All child nodes are set to inherit the network mode by default. Handling of networking-related events (connection, disconnection, new clients) is done by connecting to MultiplayerAPI's signals. </member> <member name="refuse_new_network_connections" type="bool" setter="set_refuse_new_network_connections" getter="is_refusing_new_network_connections" default="false"> If [code]true[/code], the MultiplayerAPI's [member network_peer] refuses new incoming connections. diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index e9fb47cbbd..193cfeb0ff 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -839,7 +839,7 @@ Pause mode. How the node will behave if the [SceneTree] is paused. </member> <member name="process_priority" type="int" setter="set_process_priority" getter="get_process_priority" default="0"> - The node's priority in the execution order of the enabled processing callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant NOTIFICATION_PHYSICS_PROCESS] and their internal counterparts). Nodes with a higher process priority will have their processing callbacks executed first. + The node's priority in the execution order of the enabled processing callbacks (i.e. [constant NOTIFICATION_PROCESS], [constant NOTIFICATION_PHYSICS_PROCESS] and their internal counterparts). Nodes whose process priority value is [i]lower[/i] will have their processing callbacks executed first. </member> </members> <signals> @@ -994,6 +994,7 @@ </constant> <constant name="DUPLICATE_USE_INSTANCING" value="8" enum="DuplicateFlags"> Duplicate using instancing. + An instance stays linked to the original so when the original changes, the instance changes too. </constant> </constants> </class> diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml index 6da0547352..54b4f3df64 100644 --- a/doc/classes/OS.xml +++ b/doc/classes/OS.xml @@ -45,6 +45,8 @@ <return type="void"> </return> <description> + Shuts down system MIDI driver. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="delay_msec" qualifiers="const"> @@ -119,6 +121,7 @@ [codeblock] OS.execute("CMD.exe", ["/C", "cd %TEMP% && dir"], true, output) [/codeblock] + [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows. </description> </method> <method name="find_scancode_from_string" qualifiers="const"> @@ -159,6 +162,7 @@ <description> Returns an array of MIDI device names. The returned array will be empty if the system MIDI driver has not previously been initialised with [method open_midi_inputs]. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="get_current_video_driver" qualifiers="const"> @@ -224,6 +228,7 @@ </return> <description> With this function you can get the list of dangerous permissions that have been granted to the Android application. + [b]Note:[/b] This method is implemented on Android. </description> </method> <method name="get_ime_selection" qualifiers="const"> @@ -232,6 +237,7 @@ <description> Returns the IME cursor position (the currently-edited portion of the string) relative to the characters in the composition string. [constant MainLoop.NOTIFICATION_OS_IME_UPDATE] is sent to the application to notify it of changes to the IME cursor position. + [b]Note:[/b] This method is implemented on macOS. </description> </method> <method name="get_ime_text" qualifiers="const"> @@ -240,6 +246,7 @@ <description> Returns the IME intermediate composition string. [constant MainLoop.NOTIFICATION_OS_IME_UPDATE] is sent to the application to notify it of changes to the IME composition string. + [b]Note:[/b] This method is implemented on macOS. </description> </method> <method name="get_latin_keyboard_variant" qualifiers="const"> @@ -248,6 +255,7 @@ <description> Returns the current latin keyboard variant as a String. Possible return values are: [code]"QWERTY"[/code], [code]"AZERTY"[/code], [code]"QZERTY"[/code], [code]"DVORAK"[/code], [code]"NEO"[/code], [code]"COLEMAK"[/code] or [code]"ERROR"[/code]. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. Returns [code]"QWERTY"[/code] on unsupported platforms. </description> </method> <method name="get_locale" qualifiers="const"> @@ -262,6 +270,7 @@ </return> <description> Returns the model name of the current device. + [b]Note:[/b] This method is implemented on Android and iOS. Returns [code]"GenericDevice"[/code] on unsupported platforms. </description> </method> <method name="get_name" qualifiers="const"> @@ -275,14 +284,16 @@ <return type="int"> </return> <description> - Returns the amount of battery left in the device as a percentage. + Returns the amount of battery left in the device as a percentage. Returns [code]-1[/code] if power state is unknown. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="get_power_seconds_left"> <return type="int"> </return> <description> - Returns an estimate of the time left in seconds before the device runs out of battery. + Returns an estimate of the time left in seconds before the device runs out of battery. Returns [code]-1[/code] if power state is unknown. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="get_power_state"> @@ -290,6 +301,7 @@ </return> <description> Returns the current state of the device regarding battery and power. See [enum PowerState] constants. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="get_process_id" qualifiers="const"> @@ -297,6 +309,7 @@ </return> <description> Returns the project's process ID. + [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows. </description> </method> <method name="get_processor_count" qualifiers="const"> @@ -345,6 +358,7 @@ xxhdpi - 480 dpi xxxhdpi - 640 dpi [/codeblock] + [b]Note:[/b] This method is implemented on Android, Linux, macOS and Windows. Returns [code]72[/code] on unsupported platforms. </description> </method> <method name="get_screen_position" qualifiers="const"> @@ -393,6 +407,7 @@ </argument> <description> Returns the actual path to commonly used folders across different platforms. Available locations are specified in [enum SystemDir]. + [b]Note:[/b] This method is implemented on Android, Linux, macOS and Windows. </description> </method> <method name="get_system_time_msecs" qualifiers="const"> @@ -519,6 +534,7 @@ </argument> <description> Add a new item with text "label" to global menu. Use "_dock" menu to add item to the macOS dock icon menu. + [b]Note:[/b] This method is implemented on macOS. </description> </method> <method name="global_menu_add_separator"> @@ -528,6 +544,7 @@ </argument> <description> Add a separator between items. Separators also occupy an index. + [b]Note:[/b] This method is implemented on macOS. </description> </method> <method name="global_menu_clear"> @@ -537,6 +554,7 @@ </argument> <description> Clear the global menu, in effect removing all items. + [b]Note:[/b] This method is implemented on macOS. </description> </method> <method name="global_menu_remove_item"> @@ -548,6 +566,7 @@ </argument> <description> Removes the item at index "idx" from the global menu. Note that the indexes of items after the removed item are going to be shifted by one. + [b]Note:[/b] This method is implemented on macOS. </description> </method> <method name="has_environment" qualifiers="const"> @@ -644,6 +663,7 @@ <description> Kill (terminate) the process identified by the given process ID ([code]pid[/code]), e.g. the one returned by [method execute] in non-blocking mode. [b]Note:[/b] This method can also be used to kill processes that were not spawned by the game. + [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows. </description> </method> <method name="move_window_to_foreground"> @@ -651,6 +671,7 @@ </return> <description> Moves the window to the front. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="native_video_is_playing"> @@ -658,6 +679,7 @@ </return> <description> Returns [code]true[/code] if native video is playing. + [b]Note:[/b] This method is implemented on Android and iOS. </description> </method> <method name="native_video_pause"> @@ -665,6 +687,7 @@ </return> <description> Pauses native video playback. + [b]Note:[/b] This method is implemented on Android and iOS. </description> </method> <method name="native_video_play"> @@ -680,7 +703,7 @@ </argument> <description> Plays native video from the specified path, at the given volume and with audio and subtitle tracks. - [b]Note:[/b] This method is only implemented on Android and iOS, and the current Android implementation does not support the [code]volume[/code], [code]audio_track[/code] and [code]subtitle_track[/code] options. + [b]Note:[/b] This method is implemented on Android and iOS, and the current Android implementation does not support the [code]volume[/code], [code]audio_track[/code] and [code]subtitle_track[/code] options. </description> </method> <method name="native_video_stop"> @@ -688,6 +711,7 @@ </return> <description> Stops native video playback. + [b]Note:[/b] This method is implemented on Android and iOS. </description> </method> <method name="native_video_unpause"> @@ -695,6 +719,7 @@ </return> <description> Resumes native video playback. + [b]Note:[/b] This method is implemented on Android and iOS. </description> </method> <method name="open_midi_inputs"> @@ -702,6 +727,7 @@ </return> <description> Initialises the singleton for the system MIDI driver. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="print_all_resources"> @@ -743,6 +769,7 @@ </return> <description> Request the user attention to the window. It'll flash the taskbar button on Windows or bounce the dock icon on OSX. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="request_permission"> @@ -759,6 +786,7 @@ </return> <description> With this function you can request dangerous permissions since normal permissions are automatically granted at install time in Android application. + [b]Note:[/b] This method is implemented on Android. </description> </method> <method name="set_icon"> @@ -769,6 +797,7 @@ <description> Sets the game's icon using an [Image] resource. The same image is used for window caption, taskbar/dock and window selection dialog. Image is scaled as needed. + [b]Note:[/b] This method is implemented on HTML5, Linux, macOS and Windows. </description> </method> <method name="set_ime_active"> @@ -781,6 +810,7 @@ If active IME handles key events before the application and creates an composition string and suggestion list. Application can retrieve the composition status by using [method get_ime_selection] and [method get_ime_text] functions. Completed composition string is committed when input is finished. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="set_ime_position"> @@ -790,6 +820,7 @@ </argument> <description> Sets position of IME suggestion list popup (in window coordinates). + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="set_native_icon"> @@ -800,7 +831,7 @@ <description> Sets the game's icon using a multi-size platform-specific icon file ([code]*.ico[/code] on Windows and [code]*.icns[/code] on macOS). Appropriate size sub-icons are used for window caption, taskbar/dock and window selection dialog. - [b]Note:[/b] This method is only implemented on macOS and Windows. + [b]Note:[/b] This method is implemented on macOS and Windows. </description> </method> <method name="set_thread_name"> @@ -828,6 +859,7 @@ </argument> <description> Sets whether the window should always be on top. + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> <method name="set_window_title"> @@ -838,6 +870,7 @@ <description> Sets the window title to the specified string. [b]Note:[/b] This should be used sporadically. Don't set this every frame, as that will negatively affect performance on some window managers. + [b]Note:[/b] This method is implemented on HTML5, Linux, macOS and Windows. </description> </method> <method name="shell_open"> @@ -850,6 +883,7 @@ - [code]OS.shell_open("C:\\Users\name\Downloads")[/code] on Windows opens the file explorer at the user's Downloads folder. - [code]OS.shell_open("https://godotengine.org")[/code] opens the default web browser on the official Godot website. - [code]OS.shell_open("mailto:example@example.com")[/code] opens the default email client with the "To" field set to [code]example@example.com[/code]. See [url=https://blog.escapecreative.com/customizing-mailto-links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields that can be added. + [b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS and Windows. </description> </method> <method name="show_virtual_keyboard"> @@ -859,6 +893,7 @@ </argument> <description> Shows the virtual keyboard if the platform has one. The [code]existing_text[/code] parameter is useful for implementing your own LineEdit, as it tells the virtual keyboard what text has already been typed (the virtual keyboard uses it for auto-correct and predictions). + [b]Note:[/b] This method is implemented on Android, iOS and UWP. </description> </method> </methods> @@ -893,6 +928,9 @@ <member name="vsync_enabled" type="bool" setter="set_use_vsync" getter="is_vsync_enabled" default="true"> If [code]true[/code], vertical synchronization (Vsync) is enabled. </member> + <member name="vsync_via_compositor" type="bool" setter="set_vsync_via_compositor" getter="is_vsync_via_compositor_enabled" default="false"> + If [code]true[/code] and [code]vsync_enabled[/code] is true, the operating system's window compositor will be used for vsync when the compositor is enabled and the game is in windowed mode. + </member> <member name="window_borderless" type="bool" setter="set_borderless_window" getter="get_borderless_window" default="false"> If [code]true[/code], removes the window frame. [b]Note:[/b] Setting [code]window_borderless[/code] to [code]false[/code] disables per-pixel transparency. @@ -910,6 +948,7 @@ If [code]true[/code], the window background is transparent and window frame is removed. Use [code]get_tree().get_root().set_transparent_background(true)[/code] to disable main viewport background rendering. [b]Note:[/b] This property has no effect if [b]Project > Project Settings > Display > Window > Per-pixel transparency > Allowed[/b] setting is disabled. + [b]Note:[/b] This property is implemented on Linux, macOS and Windows. </member> <member name="window_position" type="Vector2" setter="set_window_position" getter="get_window_position" default="Vector2( 0, 0 )"> The window position relative to the screen, the origin is the top left corner, +Y axis goes to the bottom and +X axis goes to the right. diff --git a/doc/classes/OptionButton.xml b/doc/classes/OptionButton.xml index b3f1359e69..0debb988ce 100644 --- a/doc/classes/OptionButton.xml +++ b/doc/classes/OptionButton.xml @@ -19,7 +19,7 @@ <argument index="2" name="id" type="int" default="-1"> </argument> <description> - Adds an item, with a [code]texture[/code] icon, text [code]label[/code] and (optionally) [code]id[/code]. If no [code]id[/code] is passed, [code]id[/code] becomes the item index. New items are appended at the end. + Adds an item, with a [code]texture[/code] icon, text [code]label[/code] and (optionally) [code]id[/code]. If no [code]id[/code] is passed, the item index will be used as the item's ID. New items are appended at the end. </description> </method> <method name="add_item"> @@ -30,7 +30,7 @@ <argument index="1" name="id" type="int" default="-1"> </argument> <description> - Adds an item, with text [code]label[/code] and (optionally) [code]id[/code]. If no [code]id[/code] is passed, [code]id[/code] becomes the item index. New items are appended at the end. + Adds an item, with text [code]label[/code] and (optionally) [code]id[/code]. If no [code]id[/code] is passed, the item index will be used as the item's ID. New items are appended at the end. </description> </method> <method name="add_separator"> @@ -44,14 +44,14 @@ <return type="void"> </return> <description> - Clear all the items in the [OptionButton]. + Clears all the items in the [OptionButton]. </description> </method> <method name="get_item_count" qualifiers="const"> <return type="int"> </return> <description> - Returns the amount of items in the OptionButton. + Returns the amount of items in the OptionButton, including separators. </description> </method> <method name="get_item_icon" qualifiers="const"> @@ -87,6 +87,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Retrieves the metadata of an item. Metadata may be any type and can be used to store extra information about an item, such as an external string ID. </description> </method> <method name="get_item_text" qualifiers="const"> @@ -109,12 +110,14 @@ <return type="int"> </return> <description> + Returns the ID of the selected item, or [code]0[/code] if no item is selected. </description> </method> <method name="get_selected_metadata" qualifiers="const"> <return type="Variant"> </return> <description> + Gets the metadata of the selected item. Metadata for items can be set using [method set_item_metadata]. </description> </method> <method name="is_item_disabled" qualifiers="const"> @@ -123,6 +126,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns [code]true[/code] if the item at index [code]idx[/code] is disabled. </description> </method> <method name="remove_item"> @@ -131,6 +135,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Removes the item at index [code]idx[/code]. </description> </method> <method name="select"> @@ -139,7 +144,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> - Select an item by index and make it the current item. + Selects an item by index and makes it the current item. This will work even if the item is disabled. </description> </method> <method name="set_item_disabled"> @@ -150,6 +155,8 @@ <argument index="1" name="disabled" type="bool"> </argument> <description> + Sets whether the item at index [code]idx[/code] is disabled. + Disabled items are drawn differently in the dropdown and are not selectable by the user. If the current selected item is set as disabled, it will remain selected. </description> </method> <method name="set_item_icon"> @@ -160,7 +167,7 @@ <argument index="1" name="texture" type="Texture"> </argument> <description> - Sets the icon of an item at index [code]idx[/code]. + Sets the icon of the item at index [code]idx[/code]. </description> </method> <method name="set_item_id"> @@ -171,7 +178,7 @@ <argument index="1" name="id" type="int"> </argument> <description> - Sets the ID of an item at index [code]idx[/code]. + Sets the ID of the item at index [code]idx[/code]. </description> </method> <method name="set_item_metadata"> @@ -182,6 +189,7 @@ <argument index="1" name="metadata" type="Variant"> </argument> <description> + Sets the metadata of an item. Metadata may be of any type and can be used to store extra information about an item, such as an external string ID. </description> </method> <method name="set_item_text"> @@ -192,7 +200,7 @@ <argument index="1" name="text" type="String"> </argument> <description> - Sets the text of an item at index [code]idx[/code]. + Sets the text of the item at index [code]idx[/code]. </description> </method> </methods> @@ -200,6 +208,7 @@ <member name="action_mode" type="int" setter="set_action_mode" getter="get_action_mode" override="true" enum="BaseButton.ActionMode" default="0" /> <member name="align" type="int" setter="set_text_align" getter="get_text_align" override="true" enum="Button.TextAlign" default="0" /> <member name="selected" type="int" setter="_select_int" getter="get_selected" default="-1"> + The index of the currently selected item, or [code]-1[/code] if no item is selected. </member> <member name="toggle_mode" type="bool" setter="set_toggle_mode" getter="is_toggle_mode" override="true" default="true" /> </members> diff --git a/doc/classes/PCKPacker.xml b/doc/classes/PCKPacker.xml index ff45ca925c..e9ff2c0916 100644 --- a/doc/classes/PCKPacker.xml +++ b/doc/classes/PCKPacker.xml @@ -1,16 +1,17 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="PCKPacker" inherits="Reference" category="Core" version="3.2"> <brief_description> + Creates packages that can be loaded into a running project. </brief_description> <description> - The [PCKPacker] is used to create packages in application runtime. + The [PCKPacker] is used to create packages that can be loaded into a running project using [method ProjectSettings.load_resource_pack]. [codeblock] var packer = PCKPacker.new() - packer.pck_start("test.pck", 0) + packer.pck_start("test.pck") packer.add_file("res://text.txt", "text.txt") - packer.flush(false) + packer.flush() [/codeblock] - The above [PCKPacker] creates package [b]test.pck[/b], then adds a file named [b]text.txt[/b] in the root of the package. + 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> </tutorials> @@ -29,9 +30,10 @@ <method name="flush"> <return type="int" enum="Error"> </return> - <argument index="0" name="verbose" type="bool"> + <argument index="0" name="verbose" type="bool" default="false"> </argument> <description> + Writes the files specified using all [method add_file] calls since the last flush. If [code]verbose[/code] is [code]true[/code], a list of files added will be printed to the console for easier debugging. </description> </method> <method name="pck_start"> @@ -39,9 +41,10 @@ </return> <argument index="0" name="pck_name" type="String"> </argument> - <argument index="1" name="alignment" type="int"> + <argument index="1" name="alignment" type="int" default="0"> </argument> <description> + Creates a new PCK file with the name [code]pck_name[/code]. The [code].pck[/code] file extension isn't added automatically, so it should be part of [code]pck_name[/code] (even though it's not required). </description> </method> </methods> diff --git a/doc/classes/PacketPeerUDP.xml b/doc/classes/PacketPeerUDP.xml index 260dbae8e2..3dc83ce8b4 100644 --- a/doc/classes/PacketPeerUDP.xml +++ b/doc/classes/PacketPeerUDP.xml @@ -47,6 +47,7 @@ <description> Joins the multicast group specified by [code]multicast_address[/code] using the interface identified by [code]interface_name[/code]. You can join the same multicast group with multiple interfaces. Use [method IP.get_local_interfaces] to know which are available. + Note: Some Android devices might require the [code]CHANGE_WIFI_MULTICAST_STATE[/code] permission for multicast to work. </description> </method> <method name="leave_multicast_group"> @@ -76,6 +77,16 @@ If [code]bind_address[/code] is set to any valid address (e.g. [code]"192.168.1.101"[/code], [code]"::1"[/code], etc), the peer will only listen on the interface with that addresses (or fail if no interface with the given address exists). </description> </method> + <method name="set_broadcast_enabled"> + <return type="void"> + </return> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + Enable or disable sending of broadcast packets (e.g. [code]set_dest_address("255.255.255.255", 4343)[/code]. This option is disabled by default. + Note: Some Android devices might require the [code]CHANGE_WIFI_MULTICAST_STATE[/code] permission and this option to be enabled to receive broadcast packets too. + </description> + </method> <method name="set_dest_address"> <return type="int" enum="Error"> </return> @@ -85,6 +96,7 @@ </argument> <description> Sets the destination address and port for sending packets and variables. A hostname will be resolved using DNS if needed. + Note: [method set_broadcast_enabled] must be enabled before sending packets to a broadcast address (e.g. [code]255.255.255.255[/code]). </description> </method> <method name="wait"> diff --git a/doc/classes/Particles.xml b/doc/classes/Particles.xml index 7bfea8bce4..2219be5a26 100644 --- a/doc/classes/Particles.xml +++ b/doc/classes/Particles.xml @@ -51,7 +51,7 @@ Number of particles to emit. </member> <member name="draw_order" type="int" setter="set_draw_order" getter="get_draw_order" enum="Particles.DrawOrder" default="0"> - Particle draw order. Uses [code]DRAW_ORDER_*[/code] values. + Particle draw order. Uses [enum DrawOrder] values. </member> <member name="draw_pass_1" type="Mesh" setter="set_draw_pass_mesh" getter="get_draw_pass_mesh"> [Mesh] that is drawn for the first draw pass. diff --git a/doc/classes/Particles2D.xml b/doc/classes/Particles2D.xml index 7c7b42ce88..100585768d 100644 --- a/doc/classes/Particles2D.xml +++ b/doc/classes/Particles2D.xml @@ -31,7 +31,7 @@ Number of particles emitted in one emission cycle. </member> <member name="draw_order" type="int" setter="set_draw_order" getter="get_draw_order" enum="Particles2D.DrawOrder" default="0"> - Particle draw order. Uses [code]DRAW_ORDER_*[/code] values. + Particle draw order. Uses [enum DrawOrder] values. </member> <member name="emitting" type="bool" setter="set_emitting" getter="is_emitting" default="true"> If [code]true[/code], particles are being emitted. diff --git a/doc/classes/ParticlesMaterial.xml b/doc/classes/ParticlesMaterial.xml index 64751cdf76..187ad1688d 100644 --- a/doc/classes/ParticlesMaterial.xml +++ b/doc/classes/ParticlesMaterial.xml @@ -157,7 +157,7 @@ Particles will be emitted at positions determined by sampling this texture at a random position. Used with [constant EMISSION_SHAPE_POINTS] and [constant EMISSION_SHAPE_DIRECTED_POINTS]. Can be created automatically from mesh or node by selecting "Create Emission Points from Mesh/Node" under the "Particles" tool in the toolbar. </member> <member name="emission_shape" type="int" setter="set_emission_shape" getter="get_emission_shape" enum="ParticlesMaterial.EmissionShape" default="0"> - Particles will be emitted inside this region. Use [code]EMISSION_SHAPE_*[/code] constants for values. + Particles will be emitted inside this region. Use [enum EmissionShape] constants for values. </member> <member name="emission_sphere_radius" type="float" setter="set_emission_sphere_radius" getter="get_emission_sphere_radius"> The sphere's radius if [code]emission_shape[/code] is set to [constant EMISSION_SHAPE_SPHERE]. diff --git a/doc/classes/PhysicalBone.xml b/doc/classes/PhysicalBone.xml index 583c24e2c0..81446063f2 100644 --- a/doc/classes/PhysicalBone.xml +++ b/doc/classes/PhysicalBone.xml @@ -7,6 +7,24 @@ <tutorials> </tutorials> <methods> + <method name="apply_central_impulse"> + <return type="void"> + </return> + <argument index="0" name="impulse" type="Vector3"> + </argument> + <description> + </description> + </method> + <method name="apply_impulse"> + <return type="void"> + </return> + <argument index="0" name="position" type="Vector3"> + </argument> + <argument index="1" name="impulse" type="Vector3"> + </argument> + <description> + </description> + </method> <method name="get_bone_id" qualifiers="const"> <return type="int"> </return> diff --git a/doc/classes/Physics2DServer.xml b/doc/classes/Physics2DServer.xml index a139fa4664..02e3ef5efb 100644 --- a/doc/classes/Physics2DServer.xml +++ b/doc/classes/Physics2DServer.xml @@ -203,7 +203,7 @@ </argument> <description> Sets the function to call when any body/area enters or exits the area. This callback will be called for any object interacting with the area, and takes five parameters: - 1: AREA_BODY_ADDED or AREA_BODY_REMOVED, depending on whether the object entered or exited the area. + 1: [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED], depending on whether the object entered or exited the area. 2: [RID] of the object that entered/exited the area. 3: Instance ID of the object that entered/exited the area. 4: The shape index of the object that entered/exited the area. @@ -1155,7 +1155,7 @@ Constant to set/get the falloff factor for point gravity of an area. The greater this value is, the faster the strength of gravity decreases with the square of distance. </constant> <constant name="AREA_PARAM_GRAVITY_POINT_ATTENUATION" value="4" enum="AreaParameter"> - This constant was used to set/get the falloff factor for point gravity. It has been superseded by AREA_PARAM_GRAVITY_DISTANCE_SCALE. + This constant was used to set/get the falloff factor for point gravity. It has been superseded by [constant AREA_PARAM_GRAVITY_DISTANCE_SCALE]. </constant> <constant name="AREA_PARAM_LINEAR_DAMP" value="5" enum="AreaParameter"> Constant to set/get the linear dampening factor of an area. diff --git a/doc/classes/Physics2DShapeQueryParameters.xml b/doc/classes/Physics2DShapeQueryParameters.xml index 7d46dd2876..7ea00cbddc 100644 --- a/doc/classes/Physics2DShapeQueryParameters.xml +++ b/doc/classes/Physics2DShapeQueryParameters.xml @@ -4,7 +4,7 @@ Parameters to be sent to a 2D shape physics query. </brief_description> <description> - This class contains the shape and other parameters for intersection/collision queries. + This class contains the shape and other parameters for 2D intersection/collision queries. See also [Physics2DShapeQueryResult]. </description> <tutorials> </tutorials> @@ -21,14 +21,16 @@ </methods> <members> <member name="collide_with_areas" type="bool" setter="set_collide_with_areas" getter="is_collide_with_areas_enabled" default="false"> + If [code]true[/code], the query will take [Area2D]s into account. </member> <member name="collide_with_bodies" type="bool" setter="set_collide_with_bodies" getter="is_collide_with_bodies_enabled" default="true"> + If [code]true[/code], the query will take [PhysicsBody2D]s into account. </member> <member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer" default="2147483647"> - The physics layer the query should be made on. + The physics layer(s) the query will take into account (as a bitmask). </member> <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude" default="[ ]"> - The list of objects or object [RID]s, that will be excluded from collisions. + The list of objects or object [RID]s that will be excluded from collisions. </member> <member name="margin" type="float" setter="set_margin" getter="get_margin" default="0.0"> The collision margin for the shape. @@ -37,10 +39,10 @@ The motion of the shape being queried for. </member> <member name="shape_rid" type="RID" setter="set_shape_rid" getter="get_shape_rid"> - The [RID] of the queried shape. See also [method set_shape]. + The queried shape's [RID]. See also [method set_shape]. </member> <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform" default="Transform2D( 1, 0, 0, 1, 0, 0 )"> - the transform matrix of the queried shape. + The queried shape's transform matrix. </member> </members> <constants> diff --git a/doc/classes/Physics2DShapeQueryResult.xml b/doc/classes/Physics2DShapeQueryResult.xml index dd38b488f5..06f943cb6d 100644 --- a/doc/classes/Physics2DShapeQueryResult.xml +++ b/doc/classes/Physics2DShapeQueryResult.xml @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="Physics2DShapeQueryResult" inherits="Reference" category="Core" version="3.2"> <brief_description> + Result of a 2D shape query in [Physics2DServer]. </brief_description> <description> + The result of a 2D shape query in [Physics2DServer]. See also [Physics2DShapeQueryParameters]. </description> <tutorials> </tutorials> @@ -11,6 +13,7 @@ <return type="int"> </return> <description> + Returns the number of objects that intersected with the shape. </description> </method> <method name="get_result_object" qualifiers="const"> @@ -19,6 +22,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns the [Object] that intersected with the shape at index [code]idx[/code]. </description> </method> <method name="get_result_object_id" qualifiers="const"> @@ -27,6 +31,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns the instance ID of the [Object] that intersected with the shape at index [code]idx[/code]. </description> </method> <method name="get_result_object_shape" qualifiers="const"> @@ -35,6 +40,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns the child index of the object's [Shape] that intersected with the shape at index [code]idx[/code]. </description> </method> <method name="get_result_rid" qualifiers="const"> @@ -43,6 +49,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns the [RID] of the object that intersected with the shape at index [code]idx[/code]. </description> </method> </methods> diff --git a/doc/classes/PhysicsServer.xml b/doc/classes/PhysicsServer.xml index a779a34e6a..d7eb4c8c4f 100644 --- a/doc/classes/PhysicsServer.xml +++ b/doc/classes/PhysicsServer.xml @@ -68,7 +68,7 @@ <argument index="1" name="param" type="int" enum="PhysicsServer.AreaParameter"> </argument> <description> - Returns an area parameter value. A list of available parameters is on the [code]AREA_PARAM_*[/code] constants. + Returns an area parameter value. A list of available parameters is on the [enum AreaParameter] constants. </description> </method> <method name="area_get_shape" qualifiers="const"> @@ -194,7 +194,7 @@ </argument> <description> Sets the function to call when any body/area enters or exits the area. This callback will be called for any object interacting with the area, and takes five parameters: - 1: AREA_BODY_ADDED or AREA_BODY_REMOVED, depending on whether the object entered or exited the area. + 1: [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED], depending on whether the object entered or exited the area. 2: [RID] of the object that entered/exited the area. 3: Instance ID of the object that entered/exited the area. 4: The shape index of the object that entered/exited the area. @@ -221,7 +221,7 @@ <argument index="2" name="value" type="Variant"> </argument> <description> - Sets the value for an area parameter. A list of available parameters is on the [code]AREA_PARAM_*[/code] constants. + Sets the value for an area parameter. A list of available parameters is on the [enum AreaParameter] constants. </description> </method> <method name="area_set_ray_pickable"> @@ -292,7 +292,7 @@ <argument index="1" name="mode" type="int" enum="PhysicsServer.AreaSpaceOverrideMode"> </argument> <description> - Sets the space override mode for the area. The modes are described in the constants [code]AREA_SPACE_OVERRIDE_*[/code]. + Sets the space override mode for the area. The modes are described in the [enum AreaSpaceOverrideMode] constants. </description> </method> <method name="area_set_transform"> @@ -426,7 +426,7 @@ <argument index="1" name="init_sleeping" type="bool" default="false"> </argument> <description> - Creates a physics body. The first parameter can be any value from constants BODY_MODE*, for the type of body created. Additionally, the body can be created in sleeping state to save processing time. + Creates a physics body. The first parameter can be any value from [enum BodyMode] constants, for the type of body created. Additionally, the body can be created in sleeping state to save processing time. </description> </method> <method name="body_get_collision_layer" qualifiers="const"> @@ -500,7 +500,7 @@ <argument index="1" name="param" type="int" enum="PhysicsServer.BodyParameter"> </argument> <description> - Returns the value of a body parameter. A list of available parameters is on the [code]BODY_PARAM_*[/code] constants. + Returns the value of a body parameter. A list of available parameters is on the [enum BodyParameter] constants. </description> </method> <method name="body_get_shape" qualifiers="const"> @@ -715,7 +715,7 @@ <argument index="1" name="mode" type="int" enum="PhysicsServer.BodyMode"> </argument> <description> - Sets the body mode, from one of the constants BODY_MODE*. + Sets the body mode, from one of the [enum BodyMode] constants. </description> </method> <method name="body_set_omit_force_integration"> @@ -739,7 +739,7 @@ <argument index="2" name="value" type="float"> </argument> <description> - Sets a body parameter. A list of available parameters is on the [code]BODY_PARAM_*[/code] constants. + Sets a body parameter. A list of available parameters is on the [enum BodyParameter] constants. </description> </method> <method name="body_set_ray_pickable"> @@ -812,7 +812,7 @@ <argument index="2" name="value" type="Variant"> </argument> <description> - Sets a body state (see BODY_STATE* constants). + Sets a body state (see [enum BodyState] constants). </description> </method> <method name="cone_twist_joint_get_param" qualifiers="const"> @@ -823,7 +823,7 @@ <argument index="1" name="param" type="int" enum="PhysicsServer.ConeTwistJointParam"> </argument> <description> - Gets a cone_twist_joint parameter (see CONE_TWIST_JOINT* constants). + Gets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants). </description> </method> <method name="cone_twist_joint_set_param"> @@ -836,7 +836,7 @@ <argument index="2" name="value" type="float"> </argument> <description> - Sets a cone_twist_joint parameter (see CONE_TWIST_JOINT* constants). + Sets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants). </description> </method> <method name="free_rid"> @@ -858,7 +858,7 @@ <argument index="2" name="flag" type="int" enum="PhysicsServer.G6DOFJointAxisFlag"> </argument> <description> - Gets a generic_6_DOF_joint flag (see G6DOF_JOINT_FLAG* constants). + Gets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants). </description> </method> <method name="generic_6dof_joint_get_param"> @@ -871,7 +871,7 @@ <argument index="2" name="param" type="int" enum="PhysicsServer.G6DOFJointAxisParam"> </argument> <description> - Gets a generic_6_DOF_joint parameter (see G6DOF_JOINT* constants without the G6DOF_JOINT_FLAG*). + Gets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] constants). </description> </method> <method name="generic_6dof_joint_set_flag"> @@ -886,7 +886,7 @@ <argument index="3" name="enable" type="bool"> </argument> <description> - Sets a generic_6_DOF_joint flag (see G6DOF_JOINT_FLAG* constants). + Sets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants). </description> </method> <method name="generic_6dof_joint_set_param"> @@ -901,7 +901,7 @@ <argument index="3" name="value" type="float"> </argument> <description> - Sets a generic_6_DOF_joint parameter (see G6DOF_JOINT* constants without the G6DOF_JOINT_FLAG*). + Sets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] constants). </description> </method> <method name="get_process_info"> @@ -921,7 +921,7 @@ <argument index="1" name="flag" type="int" enum="PhysicsServer.HingeJointFlag"> </argument> <description> - Gets a hinge_joint flag (see HINGE_JOINT_FLAG* constants). + Gets a hinge_joint flag (see [enum HingeJointFlag] constants). </description> </method> <method name="hinge_joint_get_param" qualifiers="const"> @@ -932,7 +932,7 @@ <argument index="1" name="param" type="int" enum="PhysicsServer.HingeJointParam"> </argument> <description> - Gets a hinge_joint parameter (see HINGE_JOINT* constants without the HINGE_JOINT_FLAG*). + Gets a hinge_joint parameter (see [enum HingeJointParam]). </description> </method> <method name="hinge_joint_set_flag"> @@ -945,7 +945,7 @@ <argument index="2" name="enabled" type="bool"> </argument> <description> - Sets a hinge_joint flag (see HINGE_JOINT_FLAG* constants). + Sets a hinge_joint flag (see [enum HingeJointFlag] constants). </description> </method> <method name="hinge_joint_set_param"> @@ -958,7 +958,7 @@ <argument index="2" name="value" type="float"> </argument> <description> - Sets a hinge_joint parameter (see HINGE_JOINT* constants without the HINGE_JOINT_FLAG*). + Sets a hinge_joint parameter (see [enum HingeJointParam] constants). </description> </method> <method name="joint_create_cone_twist"> @@ -1091,7 +1091,7 @@ <argument index="1" name="param" type="int" enum="PhysicsServer.PinJointParam"> </argument> <description> - Gets a pin_joint parameter (see PIN_JOINT* constants). + Gets a pin_joint parameter (see [enum PinJointParam] constants). </description> </method> <method name="pin_joint_set_local_a"> @@ -1126,7 +1126,7 @@ <argument index="2" name="value" type="float"> </argument> <description> - Sets a pin_joint parameter (see PIN_JOINT* constants). + Sets a pin_joint parameter (see [enum PinJointParam] constants). </description> </method> <method name="set_active"> @@ -1144,7 +1144,7 @@ <argument index="0" name="type" type="int" enum="PhysicsServer.ShapeType"> </argument> <description> - Creates a shape of type [code]SHAPE_*[/code]. Does not assign it to a body or an area. To do so, you must use [method area_set_shape] or [method body_set_shape]. + Creates a shape of a type from [enum ShapeType]. Does not assign it to a body or an area. To do so, you must use [method area_set_shape] or [method body_set_shape]. </description> </method> <method name="shape_get_data" qualifiers="const"> @@ -1162,7 +1162,7 @@ <argument index="0" name="shape" type="RID"> </argument> <description> - Returns the type of shape (see [code]SHAPE_*[/code] constants). + Returns the type of shape (see [enum ShapeType] constants). </description> </method> <method name="shape_set_data"> @@ -1184,7 +1184,7 @@ <argument index="1" name="param" type="int" enum="PhysicsServer.SliderJointParam"> </argument> <description> - Gets a slider_joint parameter (see SLIDER_JOINT* constants). + Gets a slider_joint parameter (see [enum SliderJointParam] constants). </description> </method> <method name="slider_joint_set_param"> @@ -1197,7 +1197,7 @@ <argument index="2" name="value" type="float"> </argument> <description> - Gets a slider_joint parameter (see SLIDER_JOINT* constants). + Gets a slider_joint parameter (see [enum SliderJointParam] constants). </description> </method> <method name="space_create"> @@ -1257,7 +1257,7 @@ <argument index="2" name="value" type="float"> </argument> <description> - Sets the value for a space parameter. A list of available parameters is on the [code]SPACE_PARAM_*[/code] constants. + Sets the value for a space parameter. A list of available parameters is on the [enum SpaceParameter] constants. </description> </method> </methods> @@ -1509,7 +1509,7 @@ Constant to set/get the falloff factor for point gravity of an area. The greater this value is, the faster the strength of gravity decreases with the square of distance. </constant> <constant name="AREA_PARAM_GRAVITY_POINT_ATTENUATION" value="4" enum="AreaParameter"> - This constant was used to set/get the falloff factor for point gravity. It has been superseded by AREA_PARAM_GRAVITY_DISTANCE_SCALE. + This constant was used to set/get the falloff factor for point gravity. It has been superseded by [constant AREA_PARAM_GRAVITY_DISTANCE_SCALE]. </constant> <constant name="AREA_PARAM_LINEAR_DAMP" value="5" enum="AreaParameter"> Constant to set/get the linear dampening factor of an area. diff --git a/doc/classes/PhysicsShapeQueryParameters.xml b/doc/classes/PhysicsShapeQueryParameters.xml index 7d7307592e..d56247fcaf 100644 --- a/doc/classes/PhysicsShapeQueryParameters.xml +++ b/doc/classes/PhysicsShapeQueryParameters.xml @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="PhysicsShapeQueryParameters" inherits="Reference" category="Core" version="3.2"> <brief_description> + Parameters to be sent to a 3D shape physics query. </brief_description> <description> + This class contains the shape and other parameters for 3D intersection/collision queries. See also [PhysicsShapeQueryResult]. </description> <tutorials> </tutorials> @@ -13,23 +15,31 @@ <argument index="0" name="shape" type="Resource"> </argument> <description> + Sets the [Shape] that will be used for collision/intersection queries. </description> </method> </methods> <members> <member name="collide_with_areas" type="bool" setter="set_collide_with_areas" getter="is_collide_with_areas_enabled" default="false"> + If [code]true[/code], the query will take [Area]s into account. </member> <member name="collide_with_bodies" type="bool" setter="set_collide_with_bodies" getter="is_collide_with_bodies_enabled" default="true"> + If [code]true[/code], the query will take [PhysicsBody]s into account. </member> <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="2147483647"> + The physics layer(s) the query will take into account (as a bitmask). </member> <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude" default="[ ]"> + The list of objects or object [RID]s that will be excluded from collisions. </member> <member name="margin" type="float" setter="set_margin" getter="get_margin" default="0.0"> + The collision margin for the shape. </member> <member name="shape_rid" type="RID" setter="set_shape_rid" getter="get_shape_rid"> + The queried shape's [RID]. See also [method set_shape]. </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. </member> </members> <constants> diff --git a/doc/classes/PhysicsShapeQueryResult.xml b/doc/classes/PhysicsShapeQueryResult.xml index 92a4393979..1f151ebb1a 100644 --- a/doc/classes/PhysicsShapeQueryResult.xml +++ b/doc/classes/PhysicsShapeQueryResult.xml @@ -1,9 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="PhysicsShapeQueryResult" inherits="Reference" category="Core" version="3.2"> <brief_description> - Result of a shape query in Physics2DServer. + Result of a 3D shape query in [PhysicsServer]. </brief_description> <description> + The result of a 3D shape query in [PhysicsServer]. See also [PhysicsShapeQueryParameters]. </description> <tutorials> </tutorials> @@ -12,6 +13,7 @@ <return type="int"> </return> <description> + Returns the number of objects that intersected with the shape. </description> </method> <method name="get_result_object" qualifiers="const"> @@ -20,6 +22,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns the [Object] that intersected with the shape at index [code]idx[/code]. </description> </method> <method name="get_result_object_id" qualifiers="const"> @@ -28,6 +31,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns the instance ID of the [Object] that intersected with the shape at index [code]idx[/code]. </description> </method> <method name="get_result_object_shape" qualifiers="const"> @@ -36,6 +40,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns the child index of the object's [Shape] that intersected with the shape at index [code]idx[/code]. </description> </method> <method name="get_result_rid" qualifiers="const"> @@ -44,6 +49,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns the [RID] of the object that intersected with the shape at index [code]idx[/code]. </description> </method> </methods> diff --git a/doc/classes/Plane.xml b/doc/classes/Plane.xml index bb72f2734e..0164943ccc 100644 --- a/doc/classes/Plane.xml +++ b/doc/classes/Plane.xml @@ -22,7 +22,7 @@ <argument index="3" name="d" type="float"> </argument> <description> - Creates a plane from the four parameters [code]a[/code], [code]b[/code], [code]c[/code] and [code]d[/code]. + Creates a plane from the four parameters. The three components of the resulting plane's [member normal] are [code]a[/code], [code]b[/code] and [code]c[/code], and the plane has a distance of [code]d[/code] from the origin. </description> </method> <method name="Plane"> @@ -35,7 +35,7 @@ <argument index="2" name="v3" type="Vector3"> </argument> <description> - Creates a plane from three points. + Creates a plane from the three points, given in clockwise order. </description> </method> <method name="Plane"> @@ -122,6 +122,7 @@ <argument index="0" name="plane" type="Plane"> </argument> <description> + Returns [code]true[/code] if this plane and [code]plane[/code] are approximately equal, by running [method @GDScript.is_equal_approx] on each component. </description> </method> <method name="is_point_over"> @@ -152,14 +153,19 @@ </methods> <members> <member name="d" type="float" setter="" getter="" default="0.0"> + Distance from the origin to the plane, in the direction of [member normal]. </member> <member name="normal" type="Vector3" setter="" getter="" default="Vector3( 0, 0, 0 )"> + The normal of the plane. "Over" or "Above" the plane is considered the side of the plane towards where the normal is pointing. </member> <member name="x" type="float" setter="" getter="" default="0.0"> + The [member normal]'s X component. </member> <member name="y" type="float" setter="" getter="" default="0.0"> + The [member normal]'s Y component. </member> <member name="z" type="float" setter="" getter="" default="0.0"> + The [member normal]'s Z component. </member> </members> <constants> diff --git a/doc/classes/PlaneShape.xml b/doc/classes/PlaneShape.xml index b94bb8e613..ee841a3cff 100644 --- a/doc/classes/PlaneShape.xml +++ b/doc/classes/PlaneShape.xml @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="PlaneShape" inherits="Shape" category="Core" version="3.2"> <brief_description> + Infinite plane shape for 3D collisions. </brief_description> <description> + An infinite plane shape for 3D collisions. Note that the [Plane]'s normal matters; anything "below" the plane will collide with it. If the [PlaneShape] is used in a [PhysicsBody], it will cause colliding objects placed "below" it to teleport "above" the plane. </description> <tutorials> </tutorials> @@ -10,6 +12,7 @@ </methods> <members> <member name="plane" type="Plane" setter="set_plane" getter="get_plane" default="Plane( 0, 1, 0, 0 )"> + The [Plane] used by the [PlaneShape] for collision. </member> </members> <constants> diff --git a/doc/classes/PrimitiveMesh.xml b/doc/classes/PrimitiveMesh.xml index b0e69bd089..3f07affdfd 100644 --- a/doc/classes/PrimitiveMesh.xml +++ b/doc/classes/PrimitiveMesh.xml @@ -22,7 +22,8 @@ Overrides the [AABB] with one defined by user for use with frustum culling. Especially useful to avoid unnexpected culling when using a shader to offset vertices. </member> <member name="flip_faces" type="bool" setter="set_flip_faces" getter="get_flip_faces" default="false"> - If set, the order of the vertices in each triangle are reversed resulting in the backside of the mesh being drawn. Result is the same as using *CULL_BACK* in [SpatialMaterial]. + If set, the order of the vertices in each triangle are reversed resulting in the backside of the mesh being drawn. + This gives the same result as using [constant SpatialMaterial.CULL_BACK] in [member SpatialMaterial.params_cull_mode]. </member> <member name="material" type="Material" setter="set_material" getter="get_material"> The current [Material] of the primitive mesh. diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 772c2f5073..126f11a4ed 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -17,7 +17,10 @@ <argument index="0" name="hint" type="Dictionary"> </argument> <description> - Adds a custom property info to a property. The dictionary must contain: name:[String](the property's name) and type:[int](see [code]TYPE_*[/code] in [@GlobalScope]), and optionally hint:[int](see [code]PROPERTY_HINT_*[/code] in [@GlobalScope]), hint_string:[String]. + Adds a custom property info to a property. The dictionary must contain: + - [code]name[/code]: [String] (the property's name) + - [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] ProjectSettings.set("category/property_name", 0) @@ -345,7 +348,7 @@ <member name="debug/gdscript/warnings/unused_argument" type="bool" setter="" getter="" default="true"> If [code]true[/code], enables warnings when a function parameter is unused. </member> - <member name="debug/gdscript/warnings/unused_class_variable" type="bool" setter="" getter="" default="true"> + <member name="debug/gdscript/warnings/unused_class_variable" type="bool" setter="" getter="" default="false"> If [code]true[/code], enables warnings when a member variable is unused. </member> <member name="debug/gdscript/warnings/unused_signal" type="bool" setter="" getter="" default="true"> @@ -398,6 +401,9 @@ <member name="display/window/handheld/orientation" type="String" setter="" getter="" default=""landscape""> Default orientation on mobile devices. </member> + <member name="display/window/ios/hide_home_indicator" type="bool" setter="" getter="" default="true"> + If [code]true[/code], the home indicator is hidden automatically. This only affects iOS devices without a physical home button. + </member> <member name="display/window/per_pixel_transparency/allowed" type="bool" setter="" getter="" default="false"> If [code]true[/code], allows per-pixel transparency in a desktop window. This affects performance, so leave it on [code]false[/code] unless you need it. </member> @@ -431,6 +437,9 @@ <member name="display/window/vsync/use_vsync" type="bool" setter="" getter="" default="true"> If [code]true[/code], enables vertical synchronization. This eliminates tearing that may appear in moving scenes, at the cost of higher input latency and stuttering at lower framerates. If [code]false[/code], vertical synchronization will be disabled, however, many platforms will enforce it regardless (such as mobile platforms and HTML5). </member> + <member name="display/window/vsync/vsync_via_compositor" type="bool" setter="" getter="" default="false"> + If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], enables vertical synchronization via the operating system's window compositor when in windowed mode and the compositor is enabled. This will prevent stutter in certain situations. (Windows only.) + </member> <member name="editor/script_templates_search_path" type="String" setter="" getter="" default=""res://script_templates""> </member> <member name="editor/search_in_file_extensions" type="PoolStringArray" setter="" getter="" default="PoolStringArray( "gd", "shader" )"> diff --git a/doc/classes/Quat.xml b/doc/classes/Quat.xml index f5ee99d30c..eeb633f480 100644 --- a/doc/classes/Quat.xml +++ b/doc/classes/Quat.xml @@ -100,6 +100,7 @@ <argument index="0" name="quat" type="Quat"> </argument> <description> + Returns [code]true[/code] if this quaterion and [code]quat[/code] are approximately equal, by running [method @GDScript.is_equal_approx] on each component. </description> </method> <method name="is_normalized"> diff --git a/doc/classes/Rect2.xml b/doc/classes/Rect2.xml index 07fa7777fe..90dd996691 100644 --- a/doc/classes/Rect2.xml +++ b/doc/classes/Rect2.xml @@ -143,6 +143,7 @@ <argument index="0" name="rect" type="Rect2"> </argument> <description> + Returns [code]true[/code] if this [Rect2] and [code]rect[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component. </description> </method> <method name="merge"> @@ -151,7 +152,7 @@ <argument index="0" name="b" type="Rect2"> </argument> <description> - Returns a larger Rect2 that contains this Rect2 and [code]b[/code]. + Returns a larger [Rect2] that contains this [Rect2] and [code]b[/code]. </description> </method> </methods> diff --git a/doc/classes/RichTextEffect.xml b/doc/classes/RichTextEffect.xml index 5c3ffd9cff..0e043b1d50 100644 --- a/doc/classes/RichTextEffect.xml +++ b/doc/classes/RichTextEffect.xml @@ -1,10 +1,20 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="RichTextEffect" inherits="Resource" category="Core" version="3.2"> <brief_description> + A custom effect for use with [RichTextLabel]. </brief_description> <description> + A custom effect for use with [RichTextLabel]. + [b]Note:[/b] For a [RichTextEffect] to be usable, a BBCode tag must be defined as a member variable called [code]bbcode[/code] in the script. + [codeblock] + # The RichTextEffect will be usable like this: `[example]Some text[/example]` + var bbcode = "example" + [/codeblock] + [b]Note:[/b] As soon as a [RichTextLabel] contains at least one [RichTextEffect], it will continuously process the effect unless the project is paused. This may impact battery life negatively. </description> <tutorials> + <link>http://docs.godotengine.org/en/latest/tutorials/gui/bbcode_in_richtextlabel.html</link> + <link>https://github.com/Eoin-ONeill-Yokai/Godot-Rich-Text-Effect-Test-Project</link> </tutorials> <methods> <method name="_process_custom_fx" qualifiers="virtual"> @@ -13,6 +23,7 @@ <argument index="0" name="char_fx" type="CharFXTransform"> </argument> <description> + Override this method to modify properties in [code]char_fx[/code]. The method must return [code]true[/code] if the character could be transformed successfully. If the method returns [code]false[/code], it will skip transformation to avoid displaying broken text. </description> </method> </methods> diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml index 2962391b99..2567b64c03 100644 --- a/doc/classes/RichTextLabel.xml +++ b/doc/classes/RichTextLabel.xml @@ -278,6 +278,7 @@ </member> <member name="bbcode_text" type="String" setter="set_bbcode" getter="get_bbcode" default=""""> The label's text in BBCode format. Is not representative of manual modifications to the internal tag stack. Erases changes made by other methods when edited. + [b]Note:[/b] It is unadvised to use [code]+=[/code] operator with [code]bbcode_text[/code] (e.g. [code]bbcode_text += "some string"[/code]) as it replaces the whole text and can cause slowdowns. Use [method append_bbcode] for adding text instead. </member> <member name="custom_effects" type="Array" setter="set_effects" getter="get_effects" default="[ ]"> </member> diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml index bf22b865d3..0635dd8935 100644 --- a/doc/classes/SceneTree.xml +++ b/doc/classes/SceneTree.xml @@ -289,7 +289,7 @@ If [code]false[/code], you need to manually call [method MultiplayerAPI.poll] to process network packets and deliver RPCs/RSETs. This allows running RPCs/RSETs in a different loop (e.g. physics, thread, specific time step) and for manual [Mutex] protection when accessing the [MultiplayerAPI] from threads. </member> <member name="network_peer" type="NetworkedMultiplayerPeer" setter="set_network_peer" getter="get_network_peer"> - The peer object to handle the RPC system (effectively enabling networking when set). Depending on the peer itself, the [SceneTree] will become a network server (check with [method is_network_server]) and will set the root node's network mode to master (see [code]NETWORK_MODE_*[/code] constants in [Node]), or it will become a regular peer with the root node set to puppet. All child nodes are set to inherit the network mode by default. Handling of networking-related events (connection, disconnection, new clients) is done by connecting to [SceneTree]'s signals. + The peer object to handle the RPC system (effectively enabling networking when set). Depending on the peer itself, the [SceneTree] will become a network server (check with [method is_network_server]) and will set the root node's network mode to master, or it will become a regular peer with the root node set to puppet. All child nodes are set to inherit the network mode by default. Handling of networking-related events (connection, disconnection, new clients) is done by connecting to [SceneTree]'s signals. </member> <member name="paused" type="bool" setter="set_pause" getter="is_paused" default="false"> If [code]true[/code], the [SceneTree] is paused. Doing so will have the following behavior: diff --git a/doc/classes/Shape.xml b/doc/classes/Shape.xml index ce5947bc06..123353b59a 100644 --- a/doc/classes/Shape.xml +++ b/doc/classes/Shape.xml @@ -13,6 +13,7 @@ </methods> <members> <member name="margin" type="float" setter="set_margin" getter="get_margin" default="0.04"> + The collision margin for the shape. </member> </members> <constants> diff --git a/doc/classes/Shape2D.xml b/doc/classes/Shape2D.xml index 2c3120f04d..70d55344ca 100644 --- a/doc/classes/Shape2D.xml +++ b/doc/classes/Shape2D.xml @@ -77,6 +77,7 @@ </methods> <members> <member name="custom_solver_bias" type="float" setter="set_custom_solver_bias" getter="get_custom_solver_bias" default="0.0"> + The shape's custom solver bias. </member> </members> <constants> diff --git a/doc/classes/StyleBoxFlat.xml b/doc/classes/StyleBoxFlat.xml index 05ee79eef2..46b11ac010 100644 --- a/doc/classes/StyleBoxFlat.xml +++ b/doc/classes/StyleBoxFlat.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="StyleBoxFlat" inherits="StyleBox" category="Core" version="3.2"> <brief_description> - Customizable Stylebox with a given set of parameters. (no texture required) + Customizable [StyleBox] with a given set of parameters (no texture required). </brief_description> <description> - This stylebox can be used to achieve all kinds of looks without the need of a texture. Those properties are customizable: + This [StyleBox] can be used to achieve all kinds of looks without the need of a texture. Those properties are customizable: - Color - Border width (individual width for each border) - Rounded corners (individual radius for each corner) - - Shadow + - Shadow (with blur and offset) Setting corner radius to high values is allowed. As soon as corners would overlap, the stylebox will switch to a relative system. Example: [codeblock] height = 30 @@ -30,12 +30,14 @@ <argument index="0" name="margin" type="int" enum="Margin"> </argument> <description> + Returns the given [code]margin[/code]'s border width. See [enum Margin] for possible values. </description> </method> <method name="get_border_width_min" qualifiers="const"> <return type="int"> </return> <description> + Returns the smallest border width out of all four borders. </description> </method> <method name="get_corner_radius" qualifiers="const"> @@ -44,6 +46,7 @@ <argument index="0" name="corner" type="int" enum="Corner"> </argument> <description> + Returns the given [code]corner[/code]'s radius. See [enum Corner] for possible values. </description> </method> <method name="get_expand_margin" qualifiers="const"> @@ -52,6 +55,7 @@ <argument index="0" name="margin" type="int" enum="Margin"> </argument> <description> + Returns the size of the given [code]margin[/code]'s expand margin. See [enum Margin] for possible values. </description> </method> <method name="set_border_width"> @@ -62,6 +66,7 @@ <argument index="1" name="width" type="int"> </argument> <description> + Sets the border width to [code]width[/code] pixels for the given [code]margin[/code]. See [enum Margin] for possible values. </description> </method> <method name="set_border_width_all"> @@ -70,6 +75,7 @@ <argument index="0" name="width" type="int"> </argument> <description> + Sets the border width to [code]width[/code] pixels for all margins. </description> </method> <method name="set_corner_radius"> @@ -80,6 +86,7 @@ <argument index="1" name="radius" type="int"> </argument> <description> + Sets the corner radius to [code]radius[/code] pixels for the given [code]corner[/code]. See [enum Corner] for possible values. </description> </method> <method name="set_corner_radius_all"> @@ -88,6 +95,7 @@ <argument index="0" name="radius" type="int"> </argument> <description> + Sets the corner radius to [code]radius[/code] pixels for all corners. </description> </method> <method name="set_corner_radius_individual"> @@ -102,6 +110,7 @@ <argument index="3" name="radius_bottom_left" type="int"> </argument> <description> + Sets the corner radius for each corner to [code]radius_top_left[/code], [code]radius_top_right[/code], [code]radius_bottom_right[/code], and [code]radius_bottom_left[/code] pixels. </description> </method> <method name="set_expand_margin"> @@ -112,6 +121,7 @@ <argument index="1" name="size" type="float"> </argument> <description> + Sets the expand margin to [code]size[/code] pixels for the given [code]margin[/code]. See [enum Margin] for possible values. </description> </method> <method name="set_expand_margin_all"> @@ -120,6 +130,7 @@ <argument index="0" name="size" type="float"> </argument> <description> + Sets the expand margin to [code]size[/code] pixels for all margins. </description> </method> <method name="set_expand_margin_individual"> @@ -134,6 +145,7 @@ <argument index="3" name="size_bottom" type="float"> </argument> <description> + Sets the expand margin for each margin to [code]size_left[/code], [code]size_top[/code], [code]size_right[/code], and [code]size_bottom[/code] pixels. </description> </method> </methods> diff --git a/doc/classes/StyleBoxLine.xml b/doc/classes/StyleBoxLine.xml index c0745c5f39..b5da81de79 100644 --- a/doc/classes/StyleBoxLine.xml +++ b/doc/classes/StyleBoxLine.xml @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="StyleBoxLine" inherits="StyleBox" category="Core" version="3.2"> <brief_description> + [StyleBox] that displays a single line. </brief_description> <description> + [StyleBox] that displays a single line of a given color and thickness. It can be used to draw things like separators. </description> <tutorials> </tutorials> @@ -10,14 +12,19 @@ </methods> <members> <member name="color" type="Color" setter="set_color" getter="get_color" default="Color( 0, 0, 0, 1 )"> + The line's color. </member> <member name="grow_begin" type="float" setter="set_grow_begin" getter="get_grow_begin" default="1.0"> + The number of pixels the line will extend before the [StyleBoxLine]'s bounds. If set to a negative value, the line will begin inside the [StyleBoxLine]'s bounds. </member> <member name="grow_end" type="float" setter="set_grow_end" getter="get_grow_end" default="1.0"> + The number of pixels the line will extend past the [StyleBoxLine]'s bounds. If set to a negative value, the line will end inside the [StyleBoxLine]'s bounds. </member> <member name="thickness" type="int" setter="set_thickness" getter="get_thickness" default="1"> + The line's thickness in pixels. </member> <member name="vertical" type="bool" setter="set_vertical" getter="is_vertical" default="false"> + If [code]true[/code], the line will be vertical. If [code]false[/code], the line will be horizontal. </member> </members> <constants> diff --git a/doc/classes/StyleBoxTexture.xml b/doc/classes/StyleBoxTexture.xml index d5efc80846..af4186dcb6 100644 --- a/doc/classes/StyleBoxTexture.xml +++ b/doc/classes/StyleBoxTexture.xml @@ -15,6 +15,7 @@ <argument index="0" name="margin" type="int" enum="Margin"> </argument> <description> + Returns the size of the given [code]margin[/code]'s expand margin. See [enum Margin] for possible values. </description> </method> <method name="get_margin_size" qualifiers="const"> @@ -23,6 +24,7 @@ <argument index="0" name="margin" type="int" enum="Margin"> </argument> <description> + Returns the size of the given [code]margin[/code]. See [enum Margin] for possible values. </description> </method> <method name="set_expand_margin_all"> @@ -31,6 +33,7 @@ <argument index="0" name="size" type="float"> </argument> <description> + Sets the expand margin to [code]size[/code] pixels for all margins. </description> </method> <method name="set_expand_margin_individual"> @@ -45,6 +48,7 @@ <argument index="3" name="size_bottom" type="float"> </argument> <description> + Sets the expand margin for each margin to [code]size_left[/code], [code]size_top[/code], [code]size_right[/code], and [code]size_bottom[/code] pixels. </description> </method> <method name="set_expand_margin_size"> @@ -55,6 +59,7 @@ <argument index="1" name="size" type="float"> </argument> <description> + Sets the expand margin to [code]size[/code] pixels for the given [code]margin[/code]. See [enum Margin] for possible values. </description> </method> <method name="set_margin_size"> @@ -65,15 +70,19 @@ <argument index="1" name="size" type="float"> </argument> <description> + Sets the margin to [code]size[/code] pixels for the given [code]margin[/code]. See [enum Margin] for possible values. </description> </method> </methods> <members> <member name="axis_stretch_horizontal" type="int" setter="set_h_axis_stretch_mode" getter="get_h_axis_stretch_mode" enum="StyleBoxTexture.AxisStretchMode" default="0"> + Controls how the stylebox's texture will be stretched or tiled horizontally. See [enum AxisStretchMode] for possible values. </member> <member name="axis_stretch_vertical" type="int" setter="set_v_axis_stretch_mode" getter="get_v_axis_stretch_mode" enum="StyleBoxTexture.AxisStretchMode" default="0"> + Controls how the stylebox's texture will be stretched or tiled vertically. See [enum AxisStretchMode] for possible values. </member> <member name="draw_center" type="bool" setter="set_draw_center" getter="is_draw_center_enabled" default="true"> + If [code]true[/code], the nine-patch texture's center tile will be drawn. </member> <member name="expand_margin_bottom" type="float" setter="set_expand_margin_size" getter="get_expand_margin_size" default="0.0"> Expands the bottom margin of this style box when drawing, causing it to be drawn larger than requested. @@ -114,7 +123,7 @@ The normal map to use when drawing this style box. </member> <member name="region_rect" type="Rect2" setter="set_region_rect" getter="get_region_rect" default="Rect2( 0, 0, 0, 0 )"> - Species a sub region of the texture to use. + Species a sub-region of the texture to use. This is equivalent to first wrapping the texture in an [AtlasTexture] with the same region. </member> <member name="texture" type="Texture" setter="set_texture" getter="get_texture"> @@ -124,15 +133,19 @@ <signals> <signal name="texture_changed"> <description> + Emitted when the stylebox's texture is changed. </description> </signal> </signals> <constants> <constant name="AXIS_STRETCH_MODE_STRETCH" value="0" enum="AxisStretchMode"> + Stretch the stylebox's texture. This results in visible distortion unless the texture size matches the stylebox's size perfectly. </constant> <constant name="AXIS_STRETCH_MODE_TILE" value="1" enum="AxisStretchMode"> + Repeats the stylebox's texture to match the stylebox's size according to the nine-patch system. </constant> <constant name="AXIS_STRETCH_MODE_TILE_FIT" value="2" enum="AxisStretchMode"> + Repeats the stylebox's texture to match the stylebox's size according to the nine-patch system. Unlike [constant AXIS_STRETCH_MODE_TILE], the texture may be slightly stretched to make the nine-patch texture tile seamlessly. </constant> </constants> </class> diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml index 7cfd8c6919..0c9ac9fbff 100644 --- a/doc/classes/SurfaceTool.xml +++ b/doc/classes/SurfaceTool.xml @@ -167,7 +167,7 @@ </argument> <description> Returns a constructed [ArrayMesh] from current information passed in. If an existing [ArrayMesh] is passed in as an argument, will add an extra surface to the existing [ArrayMesh]. - Default flag is [constant Mesh.ARRAY_COMPRESS_DEFAULT]. See [code]Mesh.ARRAY_COMPRESS_*[/code] constants for other flags. + Default flag is [constant Mesh.ARRAY_COMPRESS_DEFAULT]. See [code]ARRAY_COMPRESS_*[/code] constants in [enum Mesh.ArrayFormat] for other flags. </description> </method> <method name="commit_to_arrays"> diff --git a/doc/classes/TabContainer.xml b/doc/classes/TabContainer.xml index 1b9f38fc54..1f584ad317 100644 --- a/doc/classes/TabContainer.xml +++ b/doc/classes/TabContainer.xml @@ -144,7 +144,7 @@ If [code]true[/code], tabs can be rearranged with mouse drag. </member> <member name="tab_align" type="int" setter="set_tab_align" getter="get_tab_align" enum="TabContainer.TabAlign" default="1"> - The alignment of all tabs in the tab container. See the [code]ALIGN_*[/code] constants for details. + The alignment of all tabs in the tab container. See the [enum TabAlign] constants for details. </member> <member name="tabs_visible" type="bool" setter="set_tabs_visible" getter="are_tabs_visible" default="true"> If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content and titles are hidden. diff --git a/doc/classes/TextureButton.xml b/doc/classes/TextureButton.xml index 899ab8b875..201f8ddb8e 100644 --- a/doc/classes/TextureButton.xml +++ b/doc/classes/TextureButton.xml @@ -16,7 +16,7 @@ If [code]true[/code], the texture stretches to the edges of the node's bounding rectangle using the [member stretch_mode]. If [code]false[/code], the texture will not scale with the node. </member> <member name="stretch_mode" type="int" setter="set_stretch_mode" getter="get_stretch_mode" enum="TextureButton.StretchMode" default="0"> - Controls the texture's behavior when you resize the node's bounding rectangle, [b]only if[/b] [member expand] is [code]true[/code]. Set it to one of the [code]STRETCH_*[/code] constants. See the constants to learn more. + Controls the texture's behavior when you resize the node's bounding rectangle, [b]only if[/b] [member expand] is [code]true[/code]. Set it to one of the [enum StretchMode] constants. See the constants to learn more. </member> <member name="texture_click_mask" type="BitMap" setter="set_click_mask" getter="get_click_mask"> Pure black and white [BitMap] image to use for click detection. On the mask, white pixels represent the button's clickable area. Use it to create buttons with curved shapes. diff --git a/doc/classes/Theme.xml b/doc/classes/Theme.xml index dd12c5af23..b9aa74ebb7 100644 --- a/doc/classes/Theme.xml +++ b/doc/classes/Theme.xml @@ -26,7 +26,7 @@ <argument index="1" name="type" type="String"> </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]type[/code]. </description> </method> <method name="clear_constant"> @@ -37,7 +37,7 @@ <argument index="1" name="type" type="String"> </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]type[/code]. </description> </method> <method name="clear_font"> @@ -48,7 +48,7 @@ <argument index="1" name="type" type="String"> </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]type[/code]. </description> </method> <method name="clear_icon"> @@ -59,7 +59,7 @@ <argument index="1" name="type" type="String"> </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]type[/code]. </description> </method> <method name="clear_stylebox"> @@ -70,14 +70,14 @@ <argument index="1" name="type" type="String"> </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]type[/code]. </description> </method> <method name="copy_default_theme"> <return type="void"> </return> <description> - Sets the Theme's values to a copy of the default theme values. + Sets the theme's values to a copy of the default theme values. </description> </method> <method name="copy_theme"> @@ -86,7 +86,7 @@ <argument index="0" name="other" type="Theme"> </argument> <description> - Sets the Theme's values to a copy of a given theme. + Sets the theme's values to a copy of a given theme. </description> </method> <method name="get_color" qualifiers="const"> @@ -97,7 +97,7 @@ <argument index="1" name="type" type="String"> </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]type[/code]. </description> </method> <method name="get_color_list" qualifiers="const"> @@ -106,7 +106,7 @@ <argument index="0" name="type" type="String"> </argument> <description> - Returns all the [Color]s as a [PoolStringArray] 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 [PoolStringArray] filled with each [Color]'s name, for use in [method get_color], if the theme has [code]type[/code]. </description> </method> <method name="get_constant" qualifiers="const"> @@ -117,7 +117,7 @@ <argument index="1" name="type" type="String"> </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]type[/code]. </description> </method> <method name="get_constant_list" qualifiers="const"> @@ -126,7 +126,7 @@ <argument index="0" name="type" type="String"> </argument> <description> - Returns all the constants as a [PoolStringArray] 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 [PoolStringArray] filled with each constant's name, for use in [method get_constant], if the theme has [code]type[/code]. </description> </method> <method name="get_font" qualifiers="const"> @@ -137,7 +137,7 @@ <argument index="1" name="type" type="String"> </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]type[/code]. </description> </method> <method name="get_font_list" qualifiers="const"> @@ -146,7 +146,7 @@ <argument index="0" name="type" type="String"> </argument> <description> - Returns all the [Font]s as a [PoolStringArray] 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 [PoolStringArray] filled with each [Font]'s name, for use in [method get_font], if the theme has [code]type[/code]. </description> </method> <method name="get_icon" qualifiers="const"> @@ -157,7 +157,7 @@ <argument index="1" name="type" type="String"> </argument> <description> - Returns the icon [Texture] at [code]name[/code] if the Theme has [code]type[/code]. + Returns the icon [Texture] at [code]name[/code] if the theme has [code]type[/code]. </description> </method> <method name="get_icon_list" qualifiers="const"> @@ -166,7 +166,7 @@ <argument index="0" name="type" type="String"> </argument> <description> - Returns all the icons as a [PoolStringArray] filled with each [Texture]'s name, for use in [method get_icon], if the Theme has [code]type[/code]. + Returns all the icons as a [PoolStringArray] filled with each [Texture]'s name, for use in [method get_icon], if the theme has [code]type[/code]. </description> </method> <method name="get_stylebox" qualifiers="const"> @@ -177,7 +177,7 @@ <argument index="1" name="type" type="String"> </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]type[/code]. </description> </method> <method name="get_stylebox_list" qualifiers="const"> @@ -186,14 +186,14 @@ <argument index="0" name="type" type="String"> </argument> <description> - Returns all the [StyleBox]s as a [PoolStringArray] 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 [PoolStringArray] filled with each [StyleBox]'s name, for use in [method get_stylebox], if the theme has [code]type[/code]. </description> </method> <method name="get_stylebox_types" qualifiers="const"> <return type="PoolStringArray"> </return> <description> - Returns all the [StyleBox] types as a [PoolStringArray] 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 [PoolStringArray] 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]. </description> </method> <method name="get_type_list" qualifiers="const"> @@ -202,7 +202,7 @@ <argument index="0" name="type" type="String"> </argument> <description> - Returns all the types in [code]type[/code] as a [PoolStringArray] for use in any of the get_* functions, if the Theme has [code]type[/code]. + Returns all the types in [code]type[/code] as a [PoolStringArray] for use in any of the [code]get_*[/code] functions, if the theme has [code]type[/code]. </description> </method> <method name="has_color" qualifiers="const"> @@ -214,7 +214,7 @@ </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]false[/code] if the theme does not have [code]type[/code]. </description> </method> <method name="has_constant" qualifiers="const"> @@ -226,7 +226,7 @@ </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]false[/code] if the theme does not have [code]type[/code]. </description> </method> <method name="has_font" qualifiers="const"> @@ -238,7 +238,7 @@ </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]false[/code] if the theme does not have [code]type[/code]. </description> </method> <method name="has_icon" qualifiers="const"> @@ -250,7 +250,7 @@ </argument> <description> Returns [code]true[/code] if icon [Texture] with [code]name[/code] is in [code]type[/code]. - Returns [code]false[/code] if the Theme does not have [code]type[/code]. + Returns [code]false[/code] if the theme does not have [code]type[/code]. </description> </method> <method name="has_stylebox" qualifiers="const"> @@ -262,7 +262,7 @@ </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]false[/code] if the theme does not have [code]type[/code]. </description> </method> <method name="set_color"> @@ -275,8 +275,8 @@ <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]type[/code]. + Does nothing if the theme does not have [code]type[/code]. </description> </method> <method name="set_constant"> @@ -289,8 +289,8 @@ <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]type[/code]. + Does nothing if the theme does not have [code]type[/code]. </description> </method> <method name="set_font"> @@ -303,8 +303,8 @@ <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]type[/code]. + Does nothing if the theme does not have [code]type[/code]. </description> </method> <method name="set_icon"> @@ -317,8 +317,8 @@ <argument index="2" name="texture" type="Texture"> </argument> <description> - Sets the Theme's icon [Texture] 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 [Texture] to [code]texture[/code] at [code]name[/code] in [code]type[/code]. + Does nothing if the theme does not have [code]type[/code]. </description> </method> <method name="set_stylebox"> @@ -331,8 +331,8 @@ <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]type[/code]. + Does nothing if the theme does not have [code]type[/code]. </description> </method> </methods> diff --git a/doc/classes/Transform.xml b/doc/classes/Transform.xml index 034a1b2f5b..2e447ca1ba 100644 --- a/doc/classes/Transform.xml +++ b/doc/classes/Transform.xml @@ -95,6 +95,7 @@ <argument index="0" name="transform" type="Transform"> </argument> <description> + Returns [code]true[/code] if this transform and [code]transform[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component. </description> </method> <method name="looking_at"> @@ -125,7 +126,7 @@ <argument index="1" name="phi" type="float"> </argument> <description> - Rotates the transform around given axis by phi. The axis must be a normalized vector. + Rotates the transform around the given axis by the given angle (in radians), using matrix multiplication. The axis must be a normalized vector. </description> </method> <method name="scaled"> @@ -134,16 +135,17 @@ <argument index="0" name="scale" type="Vector3"> </argument> <description> - Scales the transform by the specified 3D scaling factors. + Scales the transform by the given scale factor, using matrix multiplication. </description> </method> <method name="translated"> <return type="Transform"> </return> - <argument index="0" name="ofs" type="Vector3"> + <argument index="0" name="offset" type="Vector3"> </argument> <description> - Translates the transform by the specified offset. + Translates the transform by the given offset, relative to the transform's basis vectors. + Unlike [method rotated] and [method scaled], this does not use matrix multiplication. </description> </method> <method name="xform"> diff --git a/doc/classes/Transform2D.xml b/doc/classes/Transform2D.xml index 89ccffc2e9..afc8b04dc7 100644 --- a/doc/classes/Transform2D.xml +++ b/doc/classes/Transform2D.xml @@ -112,6 +112,7 @@ <argument index="0" name="transform" type="Transform2D"> </argument> <description> + Returns [code]true[/code] if this transform and [code]transform[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component. </description> </method> <method name="orthonormalized"> @@ -127,7 +128,7 @@ <argument index="0" name="phi" type="float"> </argument> <description> - Rotates the transform by the given angle (in radians). + Rotates the transform by the given angle (in radians), using matrix multiplication. </description> </method> <method name="scaled"> @@ -136,7 +137,7 @@ <argument index="0" name="scale" type="Vector2"> </argument> <description> - Scales the transform by the given factor. + Scales the transform by the given scale factor, using matrix multiplication. </description> </method> <method name="translated"> @@ -145,7 +146,8 @@ <argument index="0" name="offset" type="Vector2"> </argument> <description> - Translates the transform by the given offset. + Translates the transform by the given offset, relative to the transform's basis vectors. + Unlike [method rotated] and [method scaled], this does not use matrix multiplication. </description> </method> <method name="xform"> diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml index e0c8d0b0e8..dd4330b00b 100644 --- a/doc/classes/Tree.xml +++ b/doc/classes/Tree.xml @@ -229,7 +229,7 @@ The number of columns. </member> <member name="drop_mode_flags" type="int" setter="set_drop_mode_flags" getter="get_drop_mode_flags" default="0"> - The drop mode as an OR combination of flags. See [code]DROP_MODE_*[/code] constants. Once dropping is done, reverts to [constant DROP_MODE_DISABLED]. Setting this during [method Control.can_drop_data] is recommended. + The drop mode as an OR combination of flags. See [enum DropModeFlags] constants. Once dropping is done, reverts to [constant DROP_MODE_DISABLED]. Setting this during [method Control.can_drop_data] is recommended. </member> <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" override="true" enum="Control.FocusMode" default="2" /> <member name="hide_folding" type="bool" setter="set_hide_folding" getter="is_folding_hidden" default="false"> @@ -240,7 +240,7 @@ </member> <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" override="true" default="true" /> <member name="select_mode" type="int" setter="set_select_mode" getter="get_select_mode" enum="Tree.SelectMode" default="0"> - Allows single or multiple selection. See the [code]SELECT_*[/code] constants. + Allows single or multiple selection. See the [enum SelectMode] constants. </member> </members> <signals> diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml index c77388e5f4..f32c5527fd 100644 --- a/doc/classes/TreeItem.xml +++ b/doc/classes/TreeItem.xml @@ -396,7 +396,7 @@ <argument index="1" name="mode" type="int" enum="TreeItem.TreeCellMode"> </argument> <description> - Sets the given column's cell mode to [code]mode[/code]. See [code]CELL_MODE_*[/code] constants. + Sets the given column's cell mode to [code]mode[/code]. See [enum TreeCellMode] constants. </description> </method> <method name="set_checked"> diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml index 0f7a93e8d5..cf75e71358 100644 --- a/doc/classes/Tween.xml +++ b/doc/classes/Tween.xml @@ -34,9 +34,9 @@ </argument> <argument index="5" name="duration" type="float"> </argument> - <argument index="6" name="trans_type" type="int" enum="Tween.TransitionType"> + <argument index="6" name="trans_type" type="int" enum="Tween.TransitionType" default="0"> </argument> - <argument index="7" name="ease_type" type="int" enum="Tween.EaseType"> + <argument index="7" name="ease_type" type="int" enum="Tween.EaseType" default="2"> </argument> <argument index="8" name="delay" type="float" default="0"> </argument> @@ -60,9 +60,9 @@ </argument> <argument index="5" name="duration" type="float"> </argument> - <argument index="6" name="trans_type" type="int" enum="Tween.TransitionType"> + <argument index="6" name="trans_type" type="int" enum="Tween.TransitionType" default="0"> </argument> - <argument index="7" name="ease_type" type="int" enum="Tween.EaseType"> + <argument index="7" name="ease_type" type="int" enum="Tween.EaseType" default="2"> </argument> <argument index="8" name="delay" type="float" default="0"> </argument> @@ -137,9 +137,9 @@ </argument> <argument index="4" name="duration" type="float"> </argument> - <argument index="5" name="trans_type" type="int" enum="Tween.TransitionType"> + <argument index="5" name="trans_type" type="int" enum="Tween.TransitionType" default="0"> </argument> - <argument index="6" name="ease_type" type="int" enum="Tween.EaseType"> + <argument index="6" name="ease_type" type="int" enum="Tween.EaseType" default="2"> </argument> <argument index="7" name="delay" type="float" default="0"> </argument> @@ -161,9 +161,9 @@ </argument> <argument index="4" name="duration" type="float"> </argument> - <argument index="5" name="trans_type" type="int" enum="Tween.TransitionType"> + <argument index="5" name="trans_type" type="int" enum="Tween.TransitionType" default="0"> </argument> - <argument index="6" name="ease_type" type="int" enum="Tween.EaseType"> + <argument index="6" name="ease_type" type="int" enum="Tween.EaseType" default="2"> </argument> <argument index="7" name="delay" type="float" default="0"> </argument> @@ -292,9 +292,9 @@ </argument> <argument index="5" name="duration" type="float"> </argument> - <argument index="6" name="trans_type" type="int" enum="Tween.TransitionType"> + <argument index="6" name="trans_type" type="int" enum="Tween.TransitionType" default="0"> </argument> - <argument index="7" name="ease_type" type="int" enum="Tween.EaseType"> + <argument index="7" name="ease_type" type="int" enum="Tween.EaseType" default="2"> </argument> <argument index="8" name="delay" type="float" default="0"> </argument> @@ -318,9 +318,9 @@ </argument> <argument index="5" name="duration" type="float"> </argument> - <argument index="6" name="trans_type" type="int" enum="Tween.TransitionType"> + <argument index="6" name="trans_type" type="int" enum="Tween.TransitionType" default="0"> </argument> - <argument index="7" name="ease_type" type="int" enum="Tween.EaseType"> + <argument index="7" name="ease_type" type="int" enum="Tween.EaseType" default="2"> </argument> <argument index="8" name="delay" type="float" default="0"> </argument> @@ -433,10 +433,10 @@ The interpolation starts quickly and slows down towards the end. </constant> <constant name="EASE_IN_OUT" value="2" enum="EaseType"> - A combination of EASE_IN and EASE_OUT. The interpolation is slowest at both ends. + A combination of [constant EASE_IN] and [constant EASE_OUT]. The interpolation is slowest at both ends. </constant> <constant name="EASE_OUT_IN" value="3" enum="EaseType"> - A combination of EASE_IN and EASE_OUT. The interpolation is fastest at both ends. + A combination of [constant EASE_IN] and [constant EASE_OUT]. The interpolation is fastest at both ends. </constant> </constants> </class> diff --git a/doc/classes/VSlider.xml b/doc/classes/VSlider.xml index fc62e5c892..8590c7bc3b 100644 --- a/doc/classes/VSlider.xml +++ b/doc/classes/VSlider.xml @@ -17,20 +17,14 @@ <constants> </constants> <theme_items> - <theme_item name="focus" type="StyleBox"> - </theme_item> <theme_item name="grabber" type="Texture"> </theme_item> <theme_item name="grabber_area" type="StyleBox"> </theme_item> <theme_item name="grabber_disabled" type="Texture"> </theme_item> - <theme_item name="grabber_disabled" type="StyleBox"> - </theme_item> <theme_item name="grabber_highlight" type="Texture"> </theme_item> - <theme_item name="grabber_highlight" type="StyleBox"> - </theme_item> <theme_item name="slider" type="StyleBox"> </theme_item> <theme_item name="tick" type="Texture"> diff --git a/doc/classes/Variant.xml b/doc/classes/Variant.xml index 9d55f5846f..1976e812ba 100644 --- a/doc/classes/Variant.xml +++ b/doc/classes/Variant.xml @@ -17,7 +17,7 @@ - VisualScript tracks properties inside Variants as well, but it also uses static typing. The GUI interface enforces that properties have a particular type that doesn't change over time. - C# is statically typed, but uses the Mono [code]object[/code] type in place of Godot's Variant class when it needs to represent a dynamic value. [code]object[/code] is the Mono runtime's equivalent of the same concept. - The statically-typed language NativeScript C++ does not define a built-in Variant-like class. Godot's GDNative bindings provide their own godot::Variant class for users; Any point at which the C++ code starts interacting with the Godot runtime is a place where you might have to start wrapping data inside Variant objects. - The global [method @GDScript.typeof] function returns the enumerated value of the Variant type stored in the current variable. These correspond to [code]TYPE_*[/code] constants in the [@GlobalScope] docs. + The global [method @GDScript.typeof] function returns the enumerated value of the Variant type stored in the current variable (see [enum Variant.Type]). [codeblock] var foo = 2 match typeof(foo): diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml index 8ae5caf68c..b23c69de60 100644 --- a/doc/classes/Vector2.xml +++ b/doc/classes/Vector2.xml @@ -159,6 +159,7 @@ <argument index="0" name="v" type="Vector2"> </argument> <description> + Returns [code]true[/code] if this vector and [code]v[/code] are approximately equal, by running [method @GDScript.is_equal_approx] on each component. </description> </method> <method name="is_normalized"> diff --git a/doc/classes/Vector3.xml b/doc/classes/Vector3.xml index 29c24709e2..d838e6d2f7 100644 --- a/doc/classes/Vector3.xml +++ b/doc/classes/Vector3.xml @@ -135,6 +135,7 @@ <argument index="0" name="v" type="Vector3"> </argument> <description> + Returns [code]true[/code] if this vector and [code]v[/code] are approximately equal, by running [method @GDScript.is_equal_approx] on each component. </description> </method> <method name="is_normalized"> diff --git a/doc/classes/VehicleWheel.xml b/doc/classes/VehicleWheel.xml index ff6004bcba..ba33f66e77 100644 --- a/doc/classes/VehicleWheel.xml +++ b/doc/classes/VehicleWheel.xml @@ -75,7 +75,7 @@ This is the distance in meters the wheel is lowered from its origin point. Don't set this to 0.0 and move the wheel into position, instead move the origin point of your wheel (the gizmo in Godot) to the position the wheel will take when bottoming out, then use the rest length to move the wheel down to the position it should be in when the car is in rest. </member> <member name="wheel_roll_influence" type="float" setter="set_roll_influence" getter="get_roll_influence" default="0.1"> - This value affects the roll of your vehicle. If set to 0.0 for all wheels, your vehicle will be prone to rolling over, while a value of 1.0 will resist body roll. + This value affects the roll of your vehicle. If set to 1.0 for all wheels, your vehicle will be prone to rolling over, while a value of 0.0 will resist body roll. </member> </members> <constants> diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml index 4effe9aad2..58dd36daa5 100644 --- a/doc/classes/Viewport.xml +++ b/doc/classes/Viewport.xml @@ -305,6 +305,13 @@ </member> </members> <signals> + <signal name="gui_focus_changed"> + <argument index="0" name="node" type="Control"> + </argument> + <description> + Emitted when a Control node grabs keyboard focus. + </description> + </signal> <signal name="size_changed"> <description> Emitted when the size of the viewport is changed, whether by [method set_size_override], resize of window, or some other means. diff --git a/doc/classes/VisualServer.xml b/doc/classes/VisualServer.xml index 895aba2473..f804e32c4b 100644 --- a/doc/classes/VisualServer.xml +++ b/doc/classes/VisualServer.xml @@ -44,6 +44,7 @@ <return type="RID"> </return> <description> + Creates a camera and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]camera_*[/code] VisualServer functions. </description> </method> <method name="camera_set_cull_mask"> @@ -54,6 +55,7 @@ <argument index="1" name="layers" type="int"> </argument> <description> + Sets the cull mask associated with this camera. The cull mask describes which 3d layers are rendered by this camera. Equivalent to [member Camera.cull_mask]. </description> </method> <method name="camera_set_environment"> @@ -64,6 +66,7 @@ <argument index="1" name="env" type="RID"> </argument> <description> + Sets the environment used by this camera. Equivalent to [member Camera.environment]. </description> </method> <method name="camera_set_frustum"> @@ -80,6 +83,7 @@ <argument index="4" name="z_far" type="float"> </argument> <description> + Sets camera to use frustum projection. This mode allows adjusting the [code]offset[/code] argument to create "tilted frustum" effects. </description> </method> <method name="camera_set_orthogonal"> @@ -94,6 +98,7 @@ <argument index="3" name="z_far" type="float"> </argument> <description> + Sets camera to use orthogonal projection, also known as orthographic projection. Objects remain the same size on the screen no matter how far away they are. </description> </method> <method name="camera_set_perspective"> @@ -108,6 +113,7 @@ <argument index="3" name="z_far" type="float"> </argument> <description> + Sets camera to use perspective projection. Objects on the screen becomes smaller when they are far away. </description> </method> <method name="camera_set_transform"> @@ -118,6 +124,7 @@ <argument index="1" name="transform" type="Transform"> </argument> <description> + Sets [Transform] of camera. </description> </method> <method name="camera_set_use_vertical_aspect"> @@ -128,6 +135,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + If [code]true[/code], preserves the horizontal aspect ratio which is equivalent to [constant Camera.KEEP_WIDTH]. If [code]false[/code], preserves the vertical aspect ratio which is equivalent to [constant Camera.KEEP_HEIGHT]. </description> </method> <method name="canvas_create"> @@ -198,6 +206,7 @@ <argument index="5" name="normal_map" type="RID"> </argument> <description> + Adds a mesh command to the [CanvasItem]'s draw commands. </description> </method> <method name="canvas_item_add_multimesh"> @@ -411,7 +420,10 @@ </argument> <argument index="9" name="normal_map" type="RID"> </argument> + <argument index="10" name="antialiased" type="bool" default="false"> + </argument> <description> + Adds a triangle array to the [CanvasItem]'s draw commands. </description> </method> <method name="canvas_item_clear"> @@ -475,6 +487,7 @@ <argument index="1" name="enabled" type="bool"> </argument> <description> + Enables the use of distance fields for GUI elements that are rendering distance field based fonts. </description> </method> <method name="canvas_item_set_draw_behind_parent"> @@ -787,7 +800,7 @@ <argument index="1" name="mode" type="int" enum="VisualServer.CanvasLightMode"> </argument> <description> - The mode of the light, see [code]CANVAS_LIGHT_MODE_*[/code] constants. + The mode of the light, see [enum CanvasLightMode] constants. </description> </method> <method name="canvas_light_set_scale"> @@ -798,6 +811,7 @@ <argument index="1" name="scale" type="float"> </argument> <description> + Sets the texture's scale factor of the light. Equivalent to [member Light2D.texture_scale]. </description> </method> <method name="canvas_light_set_shadow_buffer_size"> @@ -841,7 +855,7 @@ <argument index="1" name="filter" type="int" enum="VisualServer.CanvasLightShadowFilter"> </argument> <description> - Sets the canvas light's shadow's filter, see [code]CANVAS_LIGHT_SHADOW_FILTER_*[/code] constants. + Sets the canvas light's shadow's filter, see [enum CanvasLightShadowFilter] constants. </description> </method> <method name="canvas_light_set_shadow_gradient_length"> @@ -874,6 +888,7 @@ <argument index="1" name="texture" type="RID"> </argument> <description> + Sets texture to be used by light. Equivalent to [member Light2D.texture]. </description> </method> <method name="canvas_light_set_texture_offset"> @@ -884,6 +899,7 @@ <argument index="1" name="offset" type="Vector2"> </argument> <description> + Sets the offset of the light's texture. Equivalent to [member Light2D.offset]. </description> </method> <method name="canvas_light_set_transform"> @@ -907,6 +923,7 @@ <argument index="2" name="max_z" type="int"> </argument> <description> + Sets the Z range of objects that will be affected by this light. Equivalent to [member Light2D.range_z_min] and [member Light2D.range_z_max]. </description> </method> <method name="canvas_occluder_polygon_create"> @@ -924,7 +941,7 @@ <argument index="1" name="mode" type="int" enum="VisualServer.CanvasOccluderPolygonCullMode"> </argument> <description> - Sets an occluder polygons cull mode. See [code]CANVAS_OCCLUDER_POLYGON_CULL_MODE_*[/code] constants. + Sets an occluder polygons cull mode. See [enum CanvasOccluderPolygonCullMode] constants. </description> </method> <method name="canvas_occluder_polygon_set_shape"> @@ -979,6 +996,7 @@ <return type="RID"> </return> <description> + Creates a directional light and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID can be used in most [code]light_*[/code] VisualServer functions. </description> </method> <method name="draw"> @@ -989,12 +1007,14 @@ <argument index="1" name="frame_step" type="float" default="0.0"> </argument> <description> + Draws a frame. [i]This method is deprecated[/i], please use [method force_draw] instead. </description> </method> <method name="environment_create"> <return type="RID"> </return> <description> + Creates an environment and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]environment_*[/code] VisualServer functions. </description> </method> <method name="environment_set_adjustment"> @@ -1013,6 +1033,7 @@ <argument index="5" name="ramp" type="RID"> </argument> <description> + Sets the values to be used with the "Adjustment" post-process effect. See [Environment] for more details. </description> </method> <method name="environment_set_ambient_light"> @@ -1027,6 +1048,7 @@ <argument index="3" name="sky_contibution" type="float" default="0.0"> </argument> <description> + Sets the ambient light parameters. See [Environment] for more details. </description> </method> <method name="environment_set_background"> @@ -1037,6 +1059,7 @@ <argument index="1" name="bg" type="int" enum="VisualServer.EnvironmentBG"> </argument> <description> + Sets the [i]BGMode[/i] of the environment. Equivalent to [member Environment.background_mode]. </description> </method> <method name="environment_set_bg_color"> @@ -1047,6 +1070,7 @@ <argument index="1" name="color" type="Color"> </argument> <description> + Color displayed for clear areas of the scene (if using Custom color or Color+Sky background modes). </description> </method> <method name="environment_set_bg_energy"> @@ -1057,6 +1081,7 @@ <argument index="1" name="energy" type="float"> </argument> <description> + Sets the intensity of the background color. </description> </method> <method name="environment_set_canvas_max_layer"> @@ -1067,6 +1092,7 @@ <argument index="1" name="max_layer" type="int"> </argument> <description> + Sets the maximum layer to use if using Canvas background mode. </description> </method> <method name="environment_set_dof_blur_far"> @@ -1085,6 +1111,7 @@ <argument index="5" name="quality" type="int" enum="VisualServer.EnvironmentDOFBlurQuality"> </argument> <description> + Sets the values to be used with the "DoF Far Blur" post-process effect. See [Environment] for more details. </description> </method> <method name="environment_set_dof_blur_near"> @@ -1103,6 +1130,7 @@ <argument index="5" name="quality" type="int" enum="VisualServer.EnvironmentDOFBlurQuality"> </argument> <description> + Sets the values to be used with the "DoF Near Blur" post-process effect. See [Environment] for more details. </description> </method> <method name="environment_set_fog"> @@ -1119,6 +1147,7 @@ <argument index="4" name="sun_amount" type="float"> </argument> <description> + Sets the variables to be used with the scene fog. See [Environment] for more details. </description> </method> <method name="environment_set_fog_depth"> @@ -1139,6 +1168,7 @@ <argument index="6" name="transmit_curve" type="float"> </argument> <description> + Sets the variables to be used with the fog depth effect. See [Environment] for more details. </description> </method> <method name="environment_set_fog_height"> @@ -1155,6 +1185,7 @@ <argument index="4" name="height_curve" type="float"> </argument> <description> + Sets the variables to be used with the fog height effect. See [Environment] for more details. </description> </method> <method name="environment_set_glow"> @@ -1183,6 +1214,7 @@ <argument index="10" name="bicubic_upscale" type="bool"> </argument> <description> + Sets the variables to be used with the "glow" post-process effect. See [Environment] for more details. </description> </method> <method name="environment_set_sky"> @@ -1193,6 +1225,7 @@ <argument index="1" name="sky" type="RID"> </argument> <description> + Sets the [Sky] to be used as the environment's background when using [i]BGMode[/i] sky. Equivalent to [member Environment.background_sky]. </description> </method> <method name="environment_set_sky_custom_fov"> @@ -1203,6 +1236,7 @@ <argument index="1" name="scale" type="float"> </argument> <description> + Sets a custom field of view for the background [Sky]. Equivalent to [member Environment.background_sky_custom_fov]. </description> </method> <method name="environment_set_sky_orientation"> @@ -1213,6 +1247,7 @@ <argument index="1" name="orientation" type="Basis"> </argument> <description> + Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent to [member Environment.background_sky_orientation]. </description> </method> <method name="environment_set_ssao"> @@ -1245,6 +1280,7 @@ <argument index="12" name="bilateral_sharpness" type="float"> </argument> <description> + Sets the variables to be used with the "Screen Space Ambient Occlusion (SSAO)" post-process effect. See [Environment] for more details. </description> </method> <method name="environment_set_ssr"> @@ -1265,6 +1301,7 @@ <argument index="6" name="roughness" type="bool"> </argument> <description> + Sets the variables to be used with the "screen space reflections" post-process effect. See [Environment] for more details. </description> </method> <method name="environment_set_tonemap"> @@ -1289,6 +1326,7 @@ <argument index="8" name="auto_exp_grey" type="float"> </argument> <description> + Sets the variables to be used with the "tonemap" post-process effect. See [Environment] for more details. </description> </method> <method name="finish"> @@ -1306,6 +1344,7 @@ <argument index="1" name="frame_step" type="float" default="0.0"> </argument> <description> + Forces a frame to be drawn when the function is called. Drawing a frame updates all [Viewport]s that are set to update. Use with extreme caution. </description> </method> <method name="force_sync"> @@ -1330,7 +1369,7 @@ <argument index="0" name="info" type="int" enum="VisualServer.RenderInfo"> </argument> <description> - Returns a certain information, see [code]RENDER_INFO_*[/code] for options. + Returns a certain information, see [enum RenderInfo] for options. </description> </method> <method name="get_test_cube"> @@ -1592,6 +1631,7 @@ <argument index="2" name="texture" type="RID"> </argument> <description> + Sets up [ImmediateGeometry] internals to prepare for drawing. Equivalent to [method ImmediateGeometry.begin]. </description> </method> <method name="immediate_clear"> @@ -1600,6 +1640,7 @@ <argument index="0" name="immediate" type="RID"> </argument> <description> + Clears everything that was set up between [method immediate_begin] and [method immediate_end]. Equivalent to [method ImmediateGeometry.clear]. </description> </method> <method name="immediate_color"> @@ -1610,12 +1651,14 @@ <argument index="1" name="color" type="Color"> </argument> <description> + Sets the color to be used with next vertex. Equivalent to [method ImmediateGeometry.set_color]. </description> </method> <method name="immediate_create"> <return type="RID"> </return> <description> + Creates an [ImmediateGeometry] and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]immediate_*[/code] VisualServer functions. </description> </method> <method name="immediate_end"> @@ -1624,6 +1667,7 @@ <argument index="0" name="immediate" type="RID"> </argument> <description> + Ends drawing the [ImmediateGeometry] and displays it. Equivalent to [method ImmediateGeometry.end]. </description> </method> <method name="immediate_get_material" qualifiers="const"> @@ -1632,6 +1676,7 @@ <argument index="0" name="immediate" type="RID"> </argument> <description> + Returns the material assigned to the [ImmediateGeometry]. </description> </method> <method name="immediate_normal"> @@ -1642,6 +1687,7 @@ <argument index="1" name="normal" type="Vector3"> </argument> <description> + Sets the normal to be used with next vertex. Equivalent to [method ImmediateGeometry.set_normal]. </description> </method> <method name="immediate_set_material"> @@ -1652,6 +1698,7 @@ <argument index="1" name="material" type="RID"> </argument> <description> + Sets the material to be used to draw the [ImmediateGeometry]. </description> </method> <method name="immediate_tangent"> @@ -1662,6 +1709,7 @@ <argument index="1" name="tangent" type="Plane"> </argument> <description> + Sets the tangent to be used with next vertex. Equivalent to [method ImmediateGeometry.set_tangent]. </description> </method> <method name="immediate_uv"> @@ -1672,6 +1720,7 @@ <argument index="1" name="tex_uv" type="Vector2"> </argument> <description> + Sets the UV to be used with next vertex. Equivalent to [method ImmediateGeometry.set_uv]. </description> </method> <method name="immediate_uv2"> @@ -1682,6 +1731,7 @@ <argument index="1" name="tex_uv" type="Vector2"> </argument> <description> + Sets the UV2 to be used with next vertex. Equivalent to [method ImmediateGeometry.set_uv2]. </description> </method> <method name="immediate_vertex"> @@ -1692,6 +1742,7 @@ <argument index="1" name="vertex" type="Vector3"> </argument> <description> + Adds the next vertex using the information provided in advance. Equivalent to [method ImmediateGeometry.add_vertex]. </description> </method> <method name="immediate_vertex_2d"> @@ -2306,7 +2357,7 @@ </return> <argument index="0" name="mesh" type="RID"> </argument> - <argument index="1" name="primtive" type="int" enum="VisualServer.PrimitiveType"> + <argument index="1" name="primitive" type="int" enum="VisualServer.PrimitiveType"> </argument> <argument index="2" name="arrays" type="Array"> </argument> @@ -2315,7 +2366,7 @@ <argument index="4" name="compress_format" type="int" default="97280"> </argument> <description> - Adds a surface generated from the Arrays to a mesh. See [code]PRIMITIVE_TYPE_*[/code] constants for types. + Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] constants for types. </description> </method> <method name="mesh_clear"> @@ -2604,6 +2655,14 @@ <description> </description> </method> + <method name="multimesh_create"> + <return type="RID"> + </return> + <description> + Creates a new multimesh on the VisualServer and returns an [RID] handle. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + </description> + </method> <method name="multimesh_get_aabb" qualifiers="const"> <return type="AABB"> </return> @@ -3655,7 +3714,7 @@ <argument index="1" name="info" type="int" enum="VisualServer.ViewportRenderInfo"> </argument> <description> - Returns a viewport's render information. For options, see the [code]VIEWPORT_RENDER_INFO*[/code] constants. + Returns a viewport's render information. For options, see the [enum ViewportRenderInfo] constants. </description> </method> <method name="viewport_get_texture" qualifiers="const"> @@ -3946,10 +4005,12 @@ <signals> <signal name="frame_post_draw"> <description> + Emitted at the end of the frame, after the VisualServer has finished updating all the Viewports. </description> </signal> <signal name="frame_pre_draw"> <description> + Emitted at the beginning of the frame, before the VisualServer updates all the Viewports. </description> </signal> </signals> diff --git a/doc/classes/VisualShaderNodeTexture.xml b/doc/classes/VisualShaderNodeTexture.xml index a94b798745..4150b36c9c 100644 --- a/doc/classes/VisualShaderNodeTexture.xml +++ b/doc/classes/VisualShaderNodeTexture.xml @@ -28,6 +28,8 @@ </constant> <constant name="SOURCE_DEPTH" value="4" enum="Source"> </constant> + <constant name="SOURCE_PORT" value="5" enum="Source"> + </constant> <constant name="TYPE_DATA" value="0" enum="TextureType"> </constant> <constant name="TYPE_COLOR" value="1" enum="TextureType"> diff --git a/doc/classes/XMLParser.xml b/doc/classes/XMLParser.xml index 6989246e24..4375b2eb62 100644 --- a/doc/classes/XMLParser.xml +++ b/doc/classes/XMLParser.xml @@ -84,7 +84,7 @@ <return type="int" enum="XMLParser.NodeType"> </return> <description> - Gets the type of the current node. Compare with [code]NODE_*[/code] constants. + Gets the type of the current node. Compare with [enum NodeType] constants. </description> </method> <method name="has_attribute" qualifiers="const"> diff --git a/doc/classes/float.xml b/doc/classes/float.xml index 4c4ea83157..7164e8cb0a 100644 --- a/doc/classes/float.xml +++ b/doc/classes/float.xml @@ -33,7 +33,7 @@ <argument index="0" name="from" type="String"> </argument> <description> - Cast a [String] value to a floating-point value. This method accepts float value strings like [code]"1.23"[/code] and exponential notation strings for its parameter so calling [code]float("1e3")[/code] will return 1000.0 and calling [code]float("1e-3")[/code] will return 0.001. + Cast a [String] value to a floating-point value. This method accepts float value strings like [code]"1.23"[/code] and exponential notation strings for its parameter so calling [code]float("1e3")[/code] will return 1000.0 and calling [code]float("1e-3")[/code] will return 0.001. Calling this method with an invalid float string will return 0. This method stops parsing at the first invalid character and will return the parsed result so far, so calling [code]float("1a3")[/code] will return 1 while calling [code]float("1e3a2")[/code] will return 1000.0. </description> </method> </methods> diff --git a/doc/tools/doc_merge.py b/doc/tools/doc_merge.py index 496d5dcb74..496d5dcb74 100644..100755 --- a/doc/tools/doc_merge.py +++ b/doc/tools/doc_merge.py diff --git a/doc/tools/doc_status.py b/doc/tools/doc_status.py index 6e34cffc05..6e34cffc05 100644..100755 --- a/doc/tools/doc_status.py +++ b/doc/tools/doc_status.py diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py index ef38299680..91240e9550 100755 --- a/doc/tools/makerst.py +++ b/doc/tools/makerst.py @@ -14,7 +14,7 @@ GODOT_DOCS_PATTERN = re.compile(r'^http(?:s)?://docs\.godotengine\.org/(?:[a-zA- def print_error(error, state): # type: (str, State) -> None - print(error) + print("ERROR: {}".format(error)) state.errored = True @@ -148,6 +148,8 @@ class State: setter = property.get("setter") or None # Use or None so '' gets turned into None. getter = property.get("getter") or None default_value = property.get("default") or None + if default_value is not None: + default_value = escape_rst(default_value) overridden = property.get("override") or False property_def = PropertyDef(property_name, type_name, setter, getter, property.text, default_value, overridden) @@ -622,6 +624,40 @@ def make_class_list(class_list, columns): # type: (List[str], int) -> None f.close() +def escape_rst(text, until_pos=-1): # type: (str) -> str + # Escape \ character, otherwise it ends up as an escape character in rst + pos = 0 + while True: + pos = text.find('\\', pos, until_pos) + if pos == -1: + break + text = text[:pos] + "\\\\" + text[pos + 1:] + pos += 2 + + # Escape * character to avoid interpreting it as emphasis + pos = 0 + while True: + pos = text.find('*', pos, until_pos) + if pos == -1: + break + text = text[:pos] + "\*" + text[pos + 1:] + pos += 2 + + # Escape _ character at the end of a word to avoid interpreting it as an inline hyperlink + pos = 0 + while True: + pos = text.find('_', pos, until_pos) + if pos == -1: + break + if not text[pos + 1].isalnum(): # don't escape within a snake_case word + text = text[:pos] + "\_" + text[pos + 1:] + pos += 2 + else: + pos += 1 + + return text + + def rstize_text(text, state): # type: (str, State) -> str # Linebreak + tabs in the XML should become two line breaks unless in a "codeblock" pos = 0 @@ -677,36 +713,7 @@ def rstize_text(text, state): # type: (str, State) -> str pos += 2 next_brac_pos = text.find('[') - - # Escape \ character, otherwise it ends up as an escape character in rst - pos = 0 - while True: - pos = text.find('\\', pos, next_brac_pos) - if pos == -1: - break - text = text[:pos] + "\\\\" + text[pos + 1:] - pos += 2 - - # Escape * character to avoid interpreting it as emphasis - pos = 0 - while True: - pos = text.find('*', pos, next_brac_pos) - if pos == -1: - break - text = text[:pos] + "\*" + text[pos + 1:] - pos += 2 - - # Escape _ character at the end of a word to avoid interpreting it as an inline hyperlink - pos = 0 - while True: - pos = text.find('_', pos, next_brac_pos) - if pos == -1: - break - if not text[pos + 1].isalnum(): # don't escape within a snake_case word - text = text[:pos] + "\_" + text[pos + 1:] - pos += 2 - else: - pos += 1 + text = escape_rst(text, next_brac_pos) # Handle [tags] inside_code = False @@ -975,7 +982,11 @@ def make_enum(t, state): # type: (str, State) -> str if c in state.classes and e in state.classes[c].enums: return ":ref:`{0}<enum_{1}_{0}>`".format(e, c) - print_error("Unresolved enum '{}', file: {}".format(t, state.current_class), state) + + # Don't fail for `Vector3.Axis`, as this enum is a special case which is expected not to be resolved. + if "{}.{}".format(c, e) != "Vector3.Axis": + print_error("Unresolved enum '{}', file: {}".format(t, state.current_class), state) + return t diff --git a/drivers/SCsub b/drivers/SCsub index 583973c025..d91d98a713 100644 --- a/drivers/SCsub +++ b/drivers/SCsub @@ -33,11 +33,6 @@ else: # Core dependencies SConscript("png/SCsub") -# Tools override -# FIXME: Should likely be integrated in the tools/ codebase -if env['tools']: - SConscript("convex_decomp/SCsub") - if env['vsproj']: import os path = os.getcwd() @@ -46,9 +41,7 @@ if env['vsproj']: env.AddToVSProject(env.drivers_sources) os.chdir(path) -if env.split_drivers: - env.split_lib("drivers") -else: - env.add_source_files(env.drivers_sources, "*.cpp") - lib = env.add_library("drivers", env.drivers_sources) - env.Prepend(LIBS=[lib]) +env.add_source_files(env.drivers_sources, "*.cpp") + +lib = env.add_library("drivers", env.drivers_sources) +env.Prepend(LIBS=[lib]) diff --git a/drivers/convex_decomp/SCsub b/drivers/convex_decomp/SCsub deleted file mode 100644 index 65ba5332b7..0000000000 --- a/drivers/convex_decomp/SCsub +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env python - -Import('env') - -env.add_source_files(env.drivers_sources, "*.cpp") - -# Thirdparty dependencies -thirdparty_dir = "#thirdparty/b2d_convexdecomp/" -thirdparty_sources = [ - "b2Polygon.cpp", - "b2Triangle.cpp", -] -thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] - -env_thirdparty = env.Clone() -env_thirdparty.disable_warnings() -env_thirdparty.add_source_files(env.drivers_sources, thirdparty_sources) diff --git a/drivers/convex_decomp/b2d_decompose.cpp b/drivers/convex_decomp/b2d_decompose.cpp deleted file mode 100644 index 7b16b6e752..0000000000 --- a/drivers/convex_decomp/b2d_decompose.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/*************************************************************************/ -/* b2d_decompose.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "b2d_decompose.h" - -#include "thirdparty/b2d_convexdecomp/b2Polygon.h" - -namespace b2ConvexDecomp { - -void add_to_res(Vector<Vector<Vector2> > &res, const b2Polygon &p_poly) { - - Vector<Vector2> arr; - for (int i = 0; i < p_poly.nVertices; i++) { - - arr.push_back(Vector2(p_poly.x[i], p_poly.y[i])); - } - - res.push_back(arr); -} - -static Vector<Vector<Vector2> > _b2d_decompose(const Vector<Vector2> &p_polygon) { - - Vector<Vector<Vector2> > res; - if (p_polygon.size() < 3) - return res; - - b2Vec2 *polys = memnew_arr(b2Vec2, p_polygon.size()); - for (int i = 0; i < p_polygon.size(); i++) - polys[i] = b2Vec2(p_polygon[i].x, p_polygon[i].y); - - b2Polygon *p = new b2Polygon(polys, p_polygon.size()); - b2Polygon *decomposed = new b2Polygon[p->nVertices - 2]; //maximum number of polys - - memdelete_arr(polys); - - int32 nPolys = DecomposeConvex(p, decomposed, p->nVertices - 2); - //int32 extra = 0; - for (int32 i = 0; i < nPolys; ++i) { - // b2FixtureDef* toAdd = &pdarray[i+extra]; - // *toAdd = *prototype; - //Hmm, shouldn't have to do all this... - b2Polygon curr = decomposed[i]; - //TODO ewjordan: move this triangle handling to a better place so that - //it happens even if this convenience function is not called. - if (curr.nVertices == 3) { - //Check here for near-parallel edges, since we can't - //handle this in merge routine - for (int j = 0; j < 3; ++j) { - int32 lower = (j == 0) ? (curr.nVertices - 1) : (j - 1); - int32 middle = j; - int32 upper = (j == curr.nVertices - 1) ? (0) : (j + 1); - float32 dx0 = curr.x[middle] - curr.x[lower]; - float32 dy0 = curr.y[middle] - curr.y[lower]; - float32 dx1 = curr.x[upper] - curr.x[middle]; - float32 dy1 = curr.y[upper] - curr.y[middle]; - float32 norm0 = sqrtf(dx0 * dx0 + dy0 * dy0); - float32 norm1 = sqrtf(dx1 * dx1 + dy1 * dy1); - if (!(norm0 > 0.0f && norm1 > 0.0f)) { - //Identical points, don't do anything! - goto Skip; - } - dx0 /= norm0; - dy0 /= norm0; - dx1 /= norm1; - dy1 /= norm1; - float32 cross = dx0 * dy1 - dx1 * dy0; - float32 dot = dx0 * dx1 + dy0 * dy1; - if (fabs(cross) < b2_angularSlop && dot > 0) { - //Angle too close, split the triangle across from this point. - //This is guaranteed to result in two triangles that satisfy - //the tolerance (one of the angles is 90 degrees) - float32 dx2 = curr.x[lower] - curr.x[upper]; - float32 dy2 = curr.y[lower] - curr.y[upper]; - float32 norm2 = sqrtf(dx2 * dx2 + dy2 * dy2); - if (norm2 == 0.0f) { - goto Skip; - } - dx2 /= norm2; - dy2 /= norm2; - float32 thisArea = curr.GetArea(); - float32 thisHeight = 2.0f * thisArea / norm2; - float32 buffer2 = dx2; - dx2 = dy2; - dy2 = -buffer2; - //Make two new polygons - //printf("dx2: %f, dy2: %f, thisHeight: %f, middle: %d\n",dx2,dy2,thisHeight,middle); - float32 newX1[3] = { curr.x[middle] + dx2 * thisHeight, curr.x[lower], curr.x[middle] }; - float32 newY1[3] = { curr.y[middle] + dy2 * thisHeight, curr.y[lower], curr.y[middle] }; - float32 newX2[3] = { newX1[0], curr.x[middle], curr.x[upper] }; - float32 newY2[3] = { newY1[0], curr.y[middle], curr.y[upper] }; - b2Polygon p1(newX1, newY1, 3); - b2Polygon p2(newX2, newY2, 3); - if (p1.IsUsable()) { - add_to_res(res, p1); - //++extra; - } else if (B2_POLYGON_REPORT_ERRORS) { - printf("Didn't add unusable polygon. Dumping vertices:\n"); - p1.print(); - } - if (p2.IsUsable()) { - add_to_res(res, p2); - - //p2.AddTo(pdarray[i+extra]); - - //bd->CreateFixture(toAdd); - } else if (B2_POLYGON_REPORT_ERRORS) { - printf("Didn't add unusable polygon. Dumping vertices:\n"); - p2.print(); - } - goto Skip; - } - } - } - if (decomposed[i].IsUsable()) { - add_to_res(res, decomposed[i]); - - //decomposed[i].AddTo(*toAdd); - //bd->CreateFixture((const b2FixtureDef*)toAdd); - } else if (B2_POLYGON_REPORT_ERRORS) { - printf("Didn't add unusable polygon. Dumping vertices:\n"); - decomposed[i].print(); - } - Skip:; - } - //delete[] pdarray; - delete[] decomposed; - delete p; - return res; // pdarray; //needs to be deleted after body is created -} -} // namespace b2ConvexDecomp - -Vector<Vector<Vector2> > b2d_decompose(const Vector<Vector2> &p_polygon) { - - return b2ConvexDecomp::_b2d_decompose(p_polygon); -} diff --git a/drivers/gles2/rasterizer_canvas_gles2.cpp b/drivers/gles2/rasterizer_canvas_gles2.cpp index ac54af722c..3b2851fbcd 100644 --- a/drivers/gles2/rasterizer_canvas_gles2.cpp +++ b/drivers/gles2/rasterizer_canvas_gles2.cpp @@ -406,6 +406,66 @@ void RasterizerCanvasGLES2::_draw_generic(GLuint p_primitive, int p_vertex_count glBindBuffer(GL_ARRAY_BUFFER, 0); } +void RasterizerCanvasGLES2::_draw_generic_indices(GLuint p_primitive, const int *p_indices, int p_index_count, int p_vertex_count, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, bool p_singlecolor) { + + glBindBuffer(GL_ARRAY_BUFFER, data.polygon_buffer); +#ifndef GLES_OVER_GL + // Orphan the buffer to avoid CPU/GPU sync points caused by glBufferSubData + glBufferData(GL_ARRAY_BUFFER, data.polygon_buffer_size, NULL, GL_DYNAMIC_DRAW); +#endif + + uint32_t buffer_ofs = 0; + + glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(Vector2) * p_vertex_count, p_vertices); + glEnableVertexAttribArray(VS::ARRAY_VERTEX); + glVertexAttribPointer(VS::ARRAY_VERTEX, 2, GL_FLOAT, GL_FALSE, sizeof(Vector2), NULL); + buffer_ofs += sizeof(Vector2) * p_vertex_count; + + if (p_singlecolor) { + glDisableVertexAttribArray(VS::ARRAY_COLOR); + Color m = *p_colors; + glVertexAttrib4f(VS::ARRAY_COLOR, m.r, m.g, m.b, m.a); + } else if (!p_colors) { + glDisableVertexAttribArray(VS::ARRAY_COLOR); + glVertexAttrib4f(VS::ARRAY_COLOR, 1, 1, 1, 1); + } else { + glBufferSubData(GL_ARRAY_BUFFER, buffer_ofs, sizeof(Color) * p_vertex_count, p_colors); + glEnableVertexAttribArray(VS::ARRAY_COLOR); + glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, GL_FALSE, sizeof(Color), CAST_INT_TO_UCHAR_PTR(buffer_ofs)); + buffer_ofs += sizeof(Color) * p_vertex_count; + } + + if (p_uvs) { + glBufferSubData(GL_ARRAY_BUFFER, buffer_ofs, sizeof(Vector2) * p_vertex_count, p_uvs); + glEnableVertexAttribArray(VS::ARRAY_TEX_UV); + glVertexAttribPointer(VS::ARRAY_TEX_UV, 2, GL_FLOAT, GL_FALSE, sizeof(Vector2), CAST_INT_TO_UCHAR_PTR(buffer_ofs)); + buffer_ofs += sizeof(Vector2) * p_vertex_count; + } else { + glDisableVertexAttribArray(VS::ARRAY_TEX_UV); + } + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, data.polygon_index_buffer); +#ifndef GLES_OVER_GL + // Orphan the buffer to avoid CPU/GPU sync points caused by glBufferSubData + glBufferData(GL_ELEMENT_ARRAY_BUFFER, data.polygon_index_buffer_size, NULL, GL_DYNAMIC_DRAW); +#endif + + if (storage->config.support_32_bits_indices) { //should check for + glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, sizeof(int) * p_index_count, p_indices); + glDrawElements(p_primitive, p_index_count, GL_UNSIGNED_INT, 0); + } else { + uint16_t *index16 = (uint16_t *)alloca(sizeof(uint16_t) * p_index_count); + for (int i = 0; i < p_index_count; i++) { + index16[i] = uint16_t(p_indices[i]); + } + glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, sizeof(uint16_t) * p_index_count, index16); + glDrawElements(p_primitive, p_index_count, GL_UNSIGNED_SHORT, 0); + } + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); +} + void RasterizerCanvasGLES2::_draw_gui_primitive(int p_points, const Vector2 *p_vertices, const Color *p_colors, const Vector2 *p_uvs) { static const GLenum prim[5] = { GL_POINTS, GL_POINTS, GL_LINES, GL_TRIANGLES, GL_TRIANGLE_FAN }; @@ -973,7 +1033,7 @@ void RasterizerCanvasGLES2::_canvas_item_render_commands(Item *p_item, Item *cur #ifdef GLES_OVER_GL if (polygon->antialiased) { glEnable(GL_LINE_SMOOTH); - _draw_generic(GL_LINE_LOOP, polygon->points.size(), polygon->points.ptr(), polygon->uvs.ptr(), polygon->colors.ptr(), polygon->colors.size() == 1); + _draw_generic_indices(GL_LINE_STRIP, polygon->indices.ptr(), polygon->count, polygon->points.size(), polygon->points.ptr(), polygon->uvs.ptr(), polygon->colors.ptr(), polygon->colors.size() == 1); glDisable(GL_LINE_SMOOTH); } #endif @@ -1838,9 +1898,20 @@ void RasterizerCanvasGLES2::canvas_light_shadow_buffer_update(RID p_buffer, cons } state.canvas_shadow_shader.set_uniform(CanvasShadowShaderGLES2::WORLD_MATRIX, instance->xform_cache); - if (cull != instance->cull_cache) { - cull = instance->cull_cache; + VS::CanvasOccluderPolygonCullMode transformed_cull_cache = instance->cull_cache; + + if (transformed_cull_cache != VS::CANVAS_OCCLUDER_POLYGON_CULL_DISABLED && + (p_light_xform.basis_determinant() * instance->xform_cache.basis_determinant()) < 0) { + transformed_cull_cache = + transformed_cull_cache == VS::CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE ? + VS::CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE : + VS::CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE; + } + + if (cull != transformed_cull_cache) { + + cull = transformed_cull_cache; switch (cull) { case VS::CANVAS_OCCLUDER_POLYGON_CULL_DISABLED: { diff --git a/drivers/gles2/rasterizer_canvas_gles2.h b/drivers/gles2/rasterizer_canvas_gles2.h index ba636a9763..5df5b10f3c 100644 --- a/drivers/gles2/rasterizer_canvas_gles2.h +++ b/drivers/gles2/rasterizer_canvas_gles2.h @@ -118,6 +118,7 @@ public: _FORCE_INLINE_ void _draw_gui_primitive(int p_points, const Vector2 *p_vertices, const Color *p_colors, const Vector2 *p_uvs); _FORCE_INLINE_ void _draw_polygon(const int *p_indices, int p_index_count, int p_vertex_count, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, bool p_singlecolor, const float *p_weights = NULL, const int *p_bones = NULL); _FORCE_INLINE_ void _draw_generic(GLuint p_primitive, int p_vertex_count, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, bool p_singlecolor); + _FORCE_INLINE_ void _draw_generic_indices(GLuint p_primitive, const int *p_indices, int p_index_count, int p_vertex_count, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, bool p_singlecolor); _FORCE_INLINE_ void _canvas_item_render_commands(Item *p_item, Item *current_clip, bool &reclip, RasterizerStorageGLES2::Material *p_material); void _copy_screen(const Rect2 &p_rect); diff --git a/drivers/gles2/rasterizer_scene_gles2.cpp b/drivers/gles2/rasterizer_scene_gles2.cpp index 06608c658d..4e85fc93dd 100644 --- a/drivers/gles2/rasterizer_scene_gles2.cpp +++ b/drivers/gles2/rasterizer_scene_gles2.cpp @@ -1954,8 +1954,7 @@ void RasterizerSceneGLES2::_setup_light(LightInstance *light, ShadowAtlas *shado Color color = light_ptr->color * sign * energy * Math_PI; state.scene_shader.set_uniform(SceneShaderGLES2::LIGHT_COLOR, color); - Color shadow_color = light_ptr->shadow_color.to_linear(); - state.scene_shader.set_uniform(SceneShaderGLES2::SHADOW_COLOR, shadow_color); + state.scene_shader.set_uniform(SceneShaderGLES2::SHADOW_COLOR, light_ptr->shadow_color); //specific parameters diff --git a/drivers/gles2/rasterizer_storage_gles2.cpp b/drivers/gles2/rasterizer_storage_gles2.cpp index 40e7f0c441..60f72608a8 100644 --- a/drivers/gles2/rasterizer_storage_gles2.cpp +++ b/drivers/gles2/rasterizer_storage_gles2.cpp @@ -4914,7 +4914,11 @@ void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) { bool used_depth = false; if (j == 0 && i == 0) { //use always - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, rt->depth, 0); + if (config.support_depth_texture) { + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, rt->depth, 0); + } else { + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->depth); + } used_depth = true; } @@ -5807,6 +5811,14 @@ void RasterizerStorageGLES2::initialize() { config.pvrtc_supported = config.extensions.has("IMG_texture_compression_pvrtc") || config.extensions.has("WEBGL_compressed_texture_pvrtc"); config.support_npot_repeat_mipmap = config.extensions.has("GL_OES_texture_npot"); +#ifdef JAVASCRIPT_ENABLED + // RenderBuffer internal format must be 16 bits in WebGL, + // but depth_texture should default to 32 always + // if the implementation doesn't support 32, it should just quietly use 16 instead + // https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/ + config.depth_buffer_internalformat = GL_DEPTH_COMPONENT16; + config.depth_type = GL_UNSIGNED_INT; +#else // on mobile check for 24 bit depth support for RenderBufferStorage if (config.extensions.has("GL_OES_depth24")) { config.depth_buffer_internalformat = _DEPTH_COMPONENT24_OES; @@ -5816,6 +5828,7 @@ void RasterizerStorageGLES2::initialize() { config.depth_type = GL_UNSIGNED_SHORT; } #endif +#endif #ifndef GLES_OVER_GL //Manually load extensions for android and ios diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp index 7e9b6fdb82..94cb286b0e 100644 --- a/drivers/gles2/shader_compiler_gles2.cpp +++ b/drivers/gles2/shader_compiler_gles2.cpp @@ -911,7 +911,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { actions[VS::SHADER_CANVAS_ITEM].renames["VERTEX"] = "outvec.xy"; actions[VS::SHADER_CANVAS_ITEM].renames["UV"] = "uv"; - actions[VS::SHADER_CANVAS_ITEM].renames["POINT_SIZE"] = "gl_PointSize"; + actions[VS::SHADER_CANVAS_ITEM].renames["POINT_SIZE"] = "point_size"; actions[VS::SHADER_CANVAS_ITEM].renames["WORLD_MATRIX"] = "modelview_matrix"; actions[VS::SHADER_CANVAS_ITEM].renames["PROJECTION_MATRIX"] = "projection_matrix"; @@ -986,7 +986,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { actions[VS::SHADER_SPATIAL].renames["UV"] = "uv_interp"; actions[VS::SHADER_SPATIAL].renames["UV2"] = "uv2_interp"; actions[VS::SHADER_SPATIAL].renames["COLOR"] = "color_interp"; - actions[VS::SHADER_SPATIAL].renames["POINT_SIZE"] = "gl_PointSize"; + actions[VS::SHADER_SPATIAL].renames["POINT_SIZE"] = "point_size"; // gl_InstanceID is not available in OpenGL ES 2.0 actions[VS::SHADER_SPATIAL].renames["INSTANCE_ID"] = "0"; diff --git a/drivers/gles2/shader_gles2.h b/drivers/gles2/shader_gles2.h index c7a6465194..fbca69e0bb 100644 --- a/drivers/gles2/shader_gles2.h +++ b/drivers/gles2/shader_gles2.h @@ -118,10 +118,12 @@ private: uint32_t code_version; bool ok; Version() { - code_version = 0; + id = 0; + vert_id = 0; frag_id = 0; - ok = false; uniform_location = NULL; + code_version = 0; + ok = false; } }; diff --git a/drivers/gles2/shaders/canvas.glsl b/drivers/gles2/shaders/canvas.glsl index 08548ded17..afce403a9f 100644 --- a/drivers/gles2/shaders/canvas.glsl +++ b/drivers/gles2/shaders/canvas.glsl @@ -149,6 +149,8 @@ void main() { uv = uv_attrib; #endif + float point_size = 1.0; + { vec2 src_vtx = outvec.xy; /* clang-format off */ @@ -158,6 +160,8 @@ VERTEX_SHADER_CODE /* clang-format on */ } + gl_PointSize = point_size; + #if !defined(SKIP_TRANSFORM_USED) outvec = extra_matrix_instance * outvec; outvec = modelview_matrix * outvec; diff --git a/drivers/gles2/shaders/scene.glsl b/drivers/gles2/shaders/scene.glsl index 25dbbf3c90..63eee4eb87 100644 --- a/drivers/gles2/shaders/scene.glsl +++ b/drivers/gles2/shaders/scene.glsl @@ -251,12 +251,10 @@ void light_compute( //normalized blinn always unless disabled vec3 H = normalize(V + L); float cNdotH = max(dot(N, H), 0.0); - float cVdotH = max(dot(V, H), 0.0); - float cLdotH = max(dot(L, H), 0.0); float shininess = exp2(15.0 * (1.0 - roughness) + 1.0) * 0.25; - float blinn = pow(cNdotH, shininess); + float blinn = pow(cNdotH, shininess) * cNdotL; blinn *= (shininess + 8.0) * (1.0 / (8.0 * M_PI)); - specular_brdf_NL = (blinn) / max(4.0 * cNdotV * cNdotL, 0.75); + specular_brdf_NL = blinn; #endif SRGB_APPROX(specular_brdf_NL) @@ -425,6 +423,8 @@ void main() { #define projection_matrix local_projection_matrix #define world_transform world_matrix + float point_size = 1.0; + { /* clang-format off */ @@ -433,6 +433,7 @@ VERTEX_SHADER_CODE /* clang-format on */ } + gl_PointSize = point_size; vec4 outvec = vertex; // use local coordinates @@ -1270,9 +1271,9 @@ LIGHT_SHADER_CODE //normalized blinn float shininess = exp2(15.0 * (1.0 - roughness) + 1.0) * 0.25; - float blinn = pow(cNdotH, shininess); + float blinn = pow(cNdotH, shininess) * cNdotL; blinn *= (shininess + 8.0) * (1.0 / (8.0 * M_PI)); - specular_brdf_NL = (blinn) / max(4.0 * cNdotV * cNdotL, 0.75); + specular_brdf_NL = blinn; #elif defined(SPECULAR_PHONG) @@ -1547,157 +1548,157 @@ FRAGMENT_SHADER_CODE #endif // !USE_SHADOW_TO_OPACITY #ifdef BASE_PASS - { - // IBL precalculations - float ndotv = clamp(dot(normal, eye_position), 0.0, 1.0); - vec3 f0 = F0(metallic, specular, albedo); - vec3 F = f0 + (max(vec3(1.0 - roughness), f0) - f0) * pow(1.0 - ndotv, 5.0); + + // IBL precalculations + float ndotv = clamp(dot(normal, eye_position), 0.0, 1.0); + vec3 f0 = F0(metallic, specular, albedo); + vec3 F = f0 + (max(vec3(1.0 - roughness), f0) - f0) * pow(1.0 - ndotv, 5.0); #ifdef AMBIENT_LIGHT_DISABLED - ambient_light = vec3(0.0, 0.0, 0.0); + ambient_light = vec3(0.0, 0.0, 0.0); #else #ifdef USE_RADIANCE_MAP - vec3 ref_vec = reflect(-eye_position, N); - ref_vec = normalize((radiance_inverse_xform * vec4(ref_vec, 0.0)).xyz); + vec3 ref_vec = reflect(-eye_position, N); + ref_vec = normalize((radiance_inverse_xform * vec4(ref_vec, 0.0)).xyz); - ref_vec.z *= -1.0; + ref_vec.z *= -1.0; - specular_light = textureCubeLod(radiance_map, ref_vec, roughness * RADIANCE_MAX_LOD).xyz * bg_energy; + specular_light = textureCubeLod(radiance_map, ref_vec, roughness * RADIANCE_MAX_LOD).xyz * bg_energy; #ifndef USE_LIGHTMAP - { - vec3 ambient_dir = normalize((radiance_inverse_xform * vec4(normal, 0.0)).xyz); - vec3 env_ambient = textureCubeLod(radiance_map, ambient_dir, 4.0).xyz * bg_energy; - env_ambient *= 1.0 - F; + { + vec3 ambient_dir = normalize((radiance_inverse_xform * vec4(normal, 0.0)).xyz); + vec3 env_ambient = textureCubeLod(radiance_map, ambient_dir, 4.0).xyz * bg_energy; + env_ambient *= 1.0 - F; - ambient_light = mix(ambient_color.rgb, env_ambient, ambient_sky_contribution); - } + ambient_light = mix(ambient_color.rgb, env_ambient, ambient_sky_contribution); + } #endif #else - ambient_light = ambient_color.rgb; - specular_light = bg_color.rgb * bg_energy; + ambient_light = ambient_color.rgb; + specular_light = bg_color.rgb * bg_energy; #endif #endif // AMBIENT_LIGHT_DISABLED - ambient_light *= ambient_energy; + ambient_light *= ambient_energy; #if defined(USE_REFLECTION_PROBE1) || defined(USE_REFLECTION_PROBE2) - vec4 ambient_accum = vec4(0.0); - vec4 reflection_accum = vec4(0.0); + vec4 ambient_accum = vec4(0.0); + vec4 reflection_accum = vec4(0.0); #ifdef USE_REFLECTION_PROBE1 - reflection_process(reflection_probe1, + reflection_process(reflection_probe1, #ifdef USE_VERTEX_LIGHTING - refprobe1_reflection_normal_blend.rgb, + refprobe1_reflection_normal_blend.rgb, #ifndef USE_LIGHTMAP - refprobe1_ambient_normal, + refprobe1_ambient_normal, #endif - refprobe1_reflection_normal_blend.a, + refprobe1_reflection_normal_blend.a, #else - normal_interp, vertex_interp, refprobe1_local_matrix, - refprobe1_use_box_project, refprobe1_box_extents, refprobe1_box_offset, + normal_interp, vertex_interp, refprobe1_local_matrix, + refprobe1_use_box_project, refprobe1_box_extents, refprobe1_box_offset, #endif - refprobe1_exterior, refprobe1_intensity, refprobe1_ambient, roughness, - ambient_light, specular_light, reflection_accum, ambient_accum); + refprobe1_exterior, refprobe1_intensity, refprobe1_ambient, roughness, + ambient_light, specular_light, reflection_accum, ambient_accum); #endif // USE_REFLECTION_PROBE1 #ifdef USE_REFLECTION_PROBE2 - reflection_process(reflection_probe2, + reflection_process(reflection_probe2, #ifdef USE_VERTEX_LIGHTING - refprobe2_reflection_normal_blend.rgb, + refprobe2_reflection_normal_blend.rgb, #ifndef USE_LIGHTMAP - refprobe2_ambient_normal, + refprobe2_ambient_normal, #endif - refprobe2_reflection_normal_blend.a, + refprobe2_reflection_normal_blend.a, #else - normal_interp, vertex_interp, refprobe2_local_matrix, - refprobe2_use_box_project, refprobe2_box_extents, refprobe2_box_offset, + normal_interp, vertex_interp, refprobe2_local_matrix, + refprobe2_use_box_project, refprobe2_box_extents, refprobe2_box_offset, #endif - refprobe2_exterior, refprobe2_intensity, refprobe2_ambient, roughness, - ambient_light, specular_light, reflection_accum, ambient_accum); + refprobe2_exterior, refprobe2_intensity, refprobe2_ambient, roughness, + ambient_light, specular_light, reflection_accum, ambient_accum); #endif // USE_REFLECTION_PROBE2 - if (reflection_accum.a > 0.0) { - specular_light = reflection_accum.rgb / reflection_accum.a; - } + if (reflection_accum.a > 0.0) { + specular_light = reflection_accum.rgb / reflection_accum.a; + } #ifndef USE_LIGHTMAP - if (ambient_accum.a > 0.0) { - ambient_light = ambient_accum.rgb / ambient_accum.a; - } + if (ambient_accum.a > 0.0) { + ambient_light = ambient_accum.rgb / ambient_accum.a; + } #endif #endif // defined(USE_REFLECTION_PROBE1) || defined(USE_REFLECTION_PROBE2) - // environment BRDF approximation - { + // environment BRDF approximation + { #if defined(DIFFUSE_TOON) - //simplify for toon, as - specular_light *= specular * metallic * albedo * 2.0; + //simplify for toon, as + specular_light *= specular * metallic * albedo * 2.0; #else - // scales the specular reflections, needs to be be computed before lighting happens, - // but after environment and reflection probes are added - //TODO: this curve is not really designed for gammaspace, should be adjusted - const vec4 c0 = vec4(-1.0, -0.0275, -0.572, 0.022); - const vec4 c1 = vec4(1.0, 0.0425, 1.04, -0.04); - vec4 r = roughness * c0 + c1; - float a004 = min(r.x * r.x, exp2(-9.28 * ndotv)) * r.x + r.y; - vec2 env = vec2(-1.04, 1.04) * a004 + r.zw; - specular_light *= env.x * F + env.y; + // scales the specular reflections, needs to be be computed before lighting happens, + // but after environment and reflection probes are added + //TODO: this curve is not really designed for gammaspace, should be adjusted + const vec4 c0 = vec4(-1.0, -0.0275, -0.572, 0.022); + const vec4 c1 = vec4(1.0, 0.0425, 1.04, -0.04); + vec4 r = roughness * c0 + c1; + float a004 = min(r.x * r.x, exp2(-9.28 * ndotv)) * r.x + r.y; + vec2 env = vec2(-1.04, 1.04) * a004 + r.zw; + specular_light *= env.x * F + env.y; #endif - } + } #ifdef USE_LIGHTMAP - //ambient light will come entirely from lightmap is lightmap is used - ambient_light = texture2D(lightmap, uv2_interp).rgb * lightmap_energy; + //ambient light will come entirely from lightmap is lightmap is used + ambient_light = texture2D(lightmap, uv2_interp).rgb * lightmap_energy; #endif #ifdef USE_LIGHTMAP_CAPTURE - { - vec3 cone_dirs[12] = vec3[]( - vec3(0.0, 0.0, 1.0), - vec3(0.866025, 0.0, 0.5), - vec3(0.267617, 0.823639, 0.5), - vec3(-0.700629, 0.509037, 0.5), - vec3(-0.700629, -0.509037, 0.5), - vec3(0.267617, -0.823639, 0.5), - vec3(0.0, 0.0, -1.0), - vec3(0.866025, 0.0, -0.5), - vec3(0.267617, 0.823639, -0.5), - vec3(-0.700629, 0.509037, -0.5), - vec3(-0.700629, -0.509037, -0.5), - vec3(0.267617, -0.823639, -0.5)); - - vec3 local_normal = normalize(camera_matrix * vec4(normal, 0.0)).xyz; - vec4 captured = vec4(0.0); - float sum = 0.0; - for (int i = 0; i < 12; i++) { - float amount = max(0.0, dot(local_normal, cone_dirs[i])); //not correct, but creates a nice wrap around effect - captured += lightmap_captures[i] * amount; - sum += amount; - } + { + vec3 cone_dirs[12] = vec3[]( + vec3(0.0, 0.0, 1.0), + vec3(0.866025, 0.0, 0.5), + vec3(0.267617, 0.823639, 0.5), + vec3(-0.700629, 0.509037, 0.5), + vec3(-0.700629, -0.509037, 0.5), + vec3(0.267617, -0.823639, 0.5), + vec3(0.0, 0.0, -1.0), + vec3(0.866025, 0.0, -0.5), + vec3(0.267617, 0.823639, -0.5), + vec3(-0.700629, 0.509037, -0.5), + vec3(-0.700629, -0.509037, -0.5), + vec3(0.267617, -0.823639, -0.5)); + + vec3 local_normal = normalize(camera_matrix * vec4(normal, 0.0)).xyz; + vec4 captured = vec4(0.0); + float sum = 0.0; + for (int i = 0; i < 12; i++) { + float amount = max(0.0, dot(local_normal, cone_dirs[i])); //not correct, but creates a nice wrap around effect + captured += lightmap_captures[i] * amount; + sum += amount; + } - captured /= sum; + captured /= sum; - if (lightmap_capture_sky) { - ambient_light = mix(ambient_light, captured.rgb, captured.a); - } else { - ambient_light = captured.rgb; - } + if (lightmap_capture_sky) { + ambient_light = mix(ambient_light, captured.rgb, captured.a); + } else { + ambient_light = captured.rgb; } -#endif } +#endif + #endif //BASE PASS // @@ -2052,17 +2053,6 @@ FRAGMENT_SHADER_CODE specular_light += specular_interp * specular_blob_intensity * light_att; diffuse_light += diffuse_interp * albedo * light_att; - // Same as above, needed for VERTEX_LIGHTING or else lights are too bright - const vec4 c0 = vec4(-1.0, -0.0275, -0.572, 0.022); - const vec4 c1 = vec4(1.0, 0.0425, 1.04, -0.04); - vec4 r = roughness * c0 + c1; - float ndotv = clamp(dot(normal, eye_position), 0.0, 1.0); - float a004 = min(r.x * r.x, exp2(-9.28 * ndotv)) * r.x + r.y; - vec2 env = vec2(-1.04, 1.04) * a004 + r.zw; - - vec3 f0 = F0(metallic, specular, albedo); - specular_light *= env.x * f0 + env.y; - #else //fragment lighting light_compute( diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp index 55d16a6c2e..f5569490ad 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.cpp +++ b/drivers/gles3/rasterizer_canvas_gles3.cpp @@ -327,9 +327,8 @@ void RasterizerCanvasGLES3::_draw_polygon(const int *p_indices, int p_index_coun glBindBuffer(GL_ARRAY_BUFFER, data.polygon_buffer); #ifndef GLES_OVER_GL - // Orphan the buffers to avoid CPU/GPU sync points caused by glBufferSubData + // Orphan the buffer to avoid CPU/GPU sync points caused by glBufferSubData glBufferData(GL_ARRAY_BUFFER, data.polygon_buffer_size, NULL, GL_DYNAMIC_DRAW); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, data.polygon_index_buffer_size, NULL, GL_DYNAMIC_DRAW); #endif uint32_t buffer_ofs = 0; @@ -402,6 +401,10 @@ void RasterizerCanvasGLES3::_draw_polygon(const int *p_indices, int p_index_coun //bind the indices buffer. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, data.polygon_index_buffer); +#ifndef GLES_OVER_GL + // Orphan the buffer to avoid CPU/GPU sync points caused by glBufferSubData + glBufferData(GL_ELEMENT_ARRAY_BUFFER, data.polygon_index_buffer_size, NULL, GL_DYNAMIC_DRAW); +#endif glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, sizeof(int) * p_index_count, p_indices); //draw the triangles. @@ -416,6 +419,7 @@ void RasterizerCanvasGLES3::_draw_polygon(const int *p_indices, int p_index_coun } glBindVertexArray(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); } void RasterizerCanvasGLES3::_draw_generic(GLuint p_primitive, int p_vertex_count, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, bool p_singlecolor) { @@ -424,9 +428,8 @@ void RasterizerCanvasGLES3::_draw_generic(GLuint p_primitive, int p_vertex_count glBindBuffer(GL_ARRAY_BUFFER, data.polygon_buffer); #ifndef GLES_OVER_GL - // Orphan the buffers to avoid CPU/GPU sync points caused by glBufferSubData + // Orphan the buffer to avoid CPU/GPU sync points caused by glBufferSubData glBufferData(GL_ARRAY_BUFFER, data.polygon_buffer_size, NULL, GL_DYNAMIC_DRAW); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, data.polygon_index_buffer_size, NULL, GL_DYNAMIC_DRAW); #endif uint32_t buffer_ofs = 0; @@ -469,6 +472,80 @@ void RasterizerCanvasGLES3::_draw_generic(GLuint p_primitive, int p_vertex_count storage->frame.canvas_draw_commands++; glBindVertexArray(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); +} + +void RasterizerCanvasGLES3::_draw_generic_indices(GLuint p_primitive, const int *p_indices, int p_index_count, int p_vertex_count, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, bool p_singlecolor) { + + glBindVertexArray(data.polygon_buffer_pointer_array); + glBindBuffer(GL_ARRAY_BUFFER, data.polygon_buffer); + +#ifndef GLES_OVER_GL + // Orphan the buffer to avoid CPU/GPU sync points caused by glBufferSubData + glBufferData(GL_ARRAY_BUFFER, data.polygon_buffer_size, NULL, GL_DYNAMIC_DRAW); +#endif + + uint32_t buffer_ofs = 0; + + //vertex + glBufferSubData(GL_ARRAY_BUFFER, buffer_ofs, sizeof(Vector2) * p_vertex_count, p_vertices); + glEnableVertexAttribArray(VS::ARRAY_VERTEX); + glVertexAttribPointer(VS::ARRAY_VERTEX, 2, GL_FLOAT, false, sizeof(Vector2), CAST_INT_TO_UCHAR_PTR(buffer_ofs)); + buffer_ofs += sizeof(Vector2) * p_vertex_count; + //color +#ifdef DEBUG_ENABLED + ERR_FAIL_COND(buffer_ofs > data.polygon_buffer_size); +#endif + + if (p_singlecolor) { + glDisableVertexAttribArray(VS::ARRAY_COLOR); + Color m = *p_colors; + glVertexAttrib4f(VS::ARRAY_COLOR, m.r, m.g, m.b, m.a); + } else if (!p_colors) { + glDisableVertexAttribArray(VS::ARRAY_COLOR); + glVertexAttrib4f(VS::ARRAY_COLOR, 1, 1, 1, 1); + } else { + + glBufferSubData(GL_ARRAY_BUFFER, buffer_ofs, sizeof(Color) * p_vertex_count, p_colors); + glEnableVertexAttribArray(VS::ARRAY_COLOR); + glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, false, sizeof(Color), CAST_INT_TO_UCHAR_PTR(buffer_ofs)); + buffer_ofs += sizeof(Color) * p_vertex_count; + } + +#ifdef DEBUG_ENABLED + ERR_FAIL_COND(buffer_ofs > data.polygon_buffer_size); +#endif + + if (p_uvs) { + + glBufferSubData(GL_ARRAY_BUFFER, buffer_ofs, sizeof(Vector2) * p_vertex_count, p_uvs); + glEnableVertexAttribArray(VS::ARRAY_TEX_UV); + glVertexAttribPointer(VS::ARRAY_TEX_UV, 2, GL_FLOAT, false, sizeof(Vector2), CAST_INT_TO_UCHAR_PTR(buffer_ofs)); + buffer_ofs += sizeof(Vector2) * p_vertex_count; + + } else { + glDisableVertexAttribArray(VS::ARRAY_TEX_UV); + } + +#ifdef DEBUG_ENABLED + ERR_FAIL_COND(buffer_ofs > data.polygon_buffer_size); +#endif + + //bind the indices buffer. + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, data.polygon_index_buffer); +#ifndef GLES_OVER_GL + // Orphan the buffer to avoid CPU/GPU sync points caused by glBufferSubData + glBufferData(GL_ELEMENT_ARRAY_BUFFER, data.polygon_index_buffer_size, NULL, GL_DYNAMIC_DRAW); +#endif + glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, sizeof(int) * p_index_count, p_indices); + + //draw the triangles. + glDrawElements(p_primitive, p_index_count, GL_UNSIGNED_INT, 0); + + storage->frame.canvas_draw_commands++; + + glBindVertexArray(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); } void RasterizerCanvasGLES3::_draw_gui_primitive(int p_points, const Vector2 *p_vertices, const Color *p_colors, const Vector2 *p_uvs) { @@ -824,7 +901,7 @@ void RasterizerCanvasGLES3::_canvas_item_render_commands(Item *p_item, Item *cur #ifdef GLES_OVER_GL if (polygon->antialiased) { glEnable(GL_LINE_SMOOTH); - _draw_generic(GL_LINE_LOOP, polygon->points.size(), polygon->points.ptr(), polygon->uvs.ptr(), polygon->colors.ptr(), polygon->colors.size() == 1); + _draw_generic_indices(GL_LINE_STRIP, polygon->indices.ptr(), polygon->count, polygon->points.size(), polygon->points.ptr(), polygon->uvs.ptr(), polygon->colors.ptr(), polygon->colors.size() == 1); glDisable(GL_LINE_SMOOTH); } #endif @@ -1339,8 +1416,6 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 1); glBindTexture(GL_TEXTURE_2D, skeleton->texture); state.using_skeleton = true; - state.canvas_shader.set_uniform(CanvasShaderGLES3::SKELETON_TRANSFORM, state.skeleton_transform); - state.canvas_shader.set_uniform(CanvasShaderGLES3::SKELETON_TRANSFORM_INVERSE, state.skeleton_transform_inverse); } else { state.using_skeleton = false; } @@ -1527,6 +1602,11 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons state.final_transform = ci->final_transform; state.extra_matrix = Transform2D(); + if (state.using_skeleton) { + state.canvas_shader.set_uniform(CanvasShaderGLES3::SKELETON_TRANSFORM, state.skeleton_transform); + state.canvas_shader.set_uniform(CanvasShaderGLES3::SKELETON_TRANSFORM_INVERSE, state.skeleton_transform_inverse); + } + state.canvas_shader.set_uniform(CanvasShaderGLES3::FINAL_MODULATE, state.canvas_item_modulate); state.canvas_shader.set_uniform(CanvasShaderGLES3::MODELVIEW_MATRIX, state.final_transform); state.canvas_shader.set_uniform(CanvasShaderGLES3::EXTRA_MATRIX, state.extra_matrix); @@ -1810,9 +1890,20 @@ void RasterizerCanvasGLES3::canvas_light_shadow_buffer_update(RID p_buffer, cons } state.canvas_shadow_shader.set_uniform(CanvasShadowShaderGLES3::WORLD_MATRIX, instance->xform_cache); - if (cull != instance->cull_cache) { - cull = instance->cull_cache; + VS::CanvasOccluderPolygonCullMode transformed_cull_cache = instance->cull_cache; + + if (transformed_cull_cache != VS::CANVAS_OCCLUDER_POLYGON_CULL_DISABLED && + (p_light_xform.basis_determinant() * instance->xform_cache.basis_determinant()) < 0) { + transformed_cull_cache = + transformed_cull_cache == VS::CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE ? + VS::CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE : + VS::CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE; + } + + if (cull != transformed_cull_cache) { + + cull = transformed_cull_cache; switch (cull) { case VS::CANVAS_OCCLUDER_POLYGON_CULL_DISABLED: { diff --git a/drivers/gles3/rasterizer_canvas_gles3.h b/drivers/gles3/rasterizer_canvas_gles3.h index 382b1e5640..b1671a6d1c 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.h +++ b/drivers/gles3/rasterizer_canvas_gles3.h @@ -132,6 +132,7 @@ public: _FORCE_INLINE_ void _draw_gui_primitive(int p_points, const Vector2 *p_vertices, const Color *p_colors, const Vector2 *p_uvs); _FORCE_INLINE_ void _draw_polygon(const int *p_indices, int p_index_count, int p_vertex_count, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, bool p_singlecolor, const int *p_bones, const float *p_weights); _FORCE_INLINE_ void _draw_generic(GLuint p_primitive, int p_vertex_count, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, bool p_singlecolor); + _FORCE_INLINE_ void _draw_generic_indices(GLuint p_primitive, const int *p_indices, int p_index_count, int p_vertex_count, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, bool p_singlecolor); _FORCE_INLINE_ void _canvas_item_render_commands(Item *p_item, Item *current_clip, bool &reclip); _FORCE_INLINE_ void _copy_texscreen(const Rect2 &p_rect); diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index 9815936d1e..66ff0a1845 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -4147,7 +4147,11 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const ShadowAtlas *shadow_atlas = shadow_atlas_owner.getornull(p_shadow_atlas); ReflectionAtlas *reflection_atlas = reflection_atlas_owner.getornull(p_reflection_atlas); - if (shadow_atlas && shadow_atlas->size) { + bool use_shadows = shadow_atlas && shadow_atlas->size; + + state.scene_shader.set_conditional(SceneShaderGLES3::USE_SHADOW, use_shadows); + + if (use_shadows) { glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 5); glBindTexture(GL_TEXTURE_2D, shadow_atlas->depth); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE); @@ -4521,15 +4525,15 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const if (state.directional_light_count == 0) { directional_light = NULL; - _render_list(render_list.elements, render_list.element_count, p_cam_transform, p_cam_projection, sky, false, false, false, false, shadow_atlas != NULL); + _render_list(render_list.elements, render_list.element_count, p_cam_transform, p_cam_projection, sky, false, false, false, false, use_shadows); } else { for (int i = 0; i < state.directional_light_count; i++) { directional_light = directional_lights[i]; if (i > 0) { glEnable(GL_BLEND); } - _setup_directional_light(i, p_cam_transform.affine_inverse(), shadow_atlas != NULL && shadow_atlas->size > 0); - _render_list(render_list.elements, render_list.element_count, p_cam_transform, p_cam_projection, sky, false, false, false, i > 0, shadow_atlas != NULL); + _setup_directional_light(i, p_cam_transform.affine_inverse(), use_shadows); + _render_list(render_list.elements, render_list.element_count, p_cam_transform, p_cam_projection, sky, false, false, false, i > 0, use_shadows); } } @@ -4607,12 +4611,12 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const if (state.directional_light_count == 0) { directional_light = NULL; - _render_list(&render_list.elements[render_list.max_elements - render_list.alpha_element_count], render_list.alpha_element_count, p_cam_transform, p_cam_projection, sky, false, true, false, false, shadow_atlas != NULL); + _render_list(&render_list.elements[render_list.max_elements - render_list.alpha_element_count], render_list.alpha_element_count, p_cam_transform, p_cam_projection, sky, false, true, false, false, use_shadows); } else { for (int i = 0; i < state.directional_light_count; i++) { directional_light = directional_lights[i]; - _setup_directional_light(i, p_cam_transform.affine_inverse(), shadow_atlas != NULL && shadow_atlas->size > 0); - _render_list(&render_list.elements[render_list.max_elements - render_list.alpha_element_count], render_list.alpha_element_count, p_cam_transform, p_cam_projection, sky, false, true, false, i > 0, shadow_atlas != NULL); + _setup_directional_light(i, p_cam_transform.affine_inverse(), use_shadows); + _render_list(&render_list.elements[render_list.max_elements - render_list.alpha_element_count], render_list.alpha_element_count, p_cam_transform, p_cam_projection, sky, false, true, false, i > 0, use_shadows); } } diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp index 07d7416905..a0628a24dd 100644 --- a/drivers/gles3/rasterizer_storage_gles3.cpp +++ b/drivers/gles3/rasterizer_storage_gles3.cpp @@ -4454,6 +4454,7 @@ void RasterizerStorageGLES3::multimesh_allocate(RID p_multimesh, int p_instances if (multimesh->buffer) { glDeleteBuffers(1, &multimesh->buffer); multimesh->data.resize(0); + multimesh->buffer = 0; } multimesh->size = p_instances; diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp index 7499962da3..e78ecbae34 100644 --- a/drivers/gles3/shader_compiler_gles3.cpp +++ b/drivers/gles3/shader_compiler_gles3.cpp @@ -913,7 +913,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() { actions[VS::SHADER_CANVAS_ITEM].renames["VERTEX"] = "outvec.xy"; actions[VS::SHADER_CANVAS_ITEM].renames["UV"] = "uv"; - actions[VS::SHADER_CANVAS_ITEM].renames["POINT_SIZE"] = "gl_PointSize"; + actions[VS::SHADER_CANVAS_ITEM].renames["POINT_SIZE"] = "point_size"; actions[VS::SHADER_CANVAS_ITEM].renames["WORLD_MATRIX"] = "modelview_matrix"; actions[VS::SHADER_CANVAS_ITEM].renames["PROJECTION_MATRIX"] = "projection_matrix"; @@ -970,7 +970,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() { actions[VS::SHADER_SPATIAL].renames["UV"] = "uv_interp"; actions[VS::SHADER_SPATIAL].renames["UV2"] = "uv2_interp"; actions[VS::SHADER_SPATIAL].renames["COLOR"] = "color_interp"; - actions[VS::SHADER_SPATIAL].renames["POINT_SIZE"] = "gl_PointSize"; + actions[VS::SHADER_SPATIAL].renames["POINT_SIZE"] = "point_size"; actions[VS::SHADER_SPATIAL].renames["INSTANCE_ID"] = "gl_InstanceID"; //builtins diff --git a/drivers/gles3/shaders/canvas.glsl b/drivers/gles3/shaders/canvas.glsl index 7255b0425c..53f84abf51 100644 --- a/drivers/gles3/shaders/canvas.glsl +++ b/drivers/gles3/shaders/canvas.glsl @@ -150,6 +150,7 @@ void main() { #define extra_matrix extra_matrix_instance + float point_size = 1.0; //for compatibility with the fragment shader we need to use uv here vec2 uv = uv_interp; { @@ -160,6 +161,7 @@ VERTEX_SHADER_CODE /* clang-format on */ } + gl_PointSize = point_size; uv_interp = uv; #ifdef USE_NINEPATCH diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl index e1b0e9f595..a330dbef77 100644 --- a/drivers/gles3/shaders/scene.glsl +++ b/drivers/gles3/shaders/scene.glsl @@ -213,12 +213,10 @@ void light_compute(vec3 N, vec3 L, vec3 V, vec3 light_color, float roughness, in //normalized blinn always unless disabled vec3 H = normalize(V + L); float cNdotH = max(dot(N, H), 0.0); - float cVdotH = max(dot(V, H), 0.0); - float cLdotH = max(dot(L, H), 0.0); float shininess = exp2(15.0 * (1.0 - roughness) + 1.0) * 0.25; - float blinn = pow(cNdotH, shininess); + float blinn = pow(cNdotH, shininess) * cNdotL; blinn *= (shininess + 8.0) * (1.0 / (8.0 * M_PI)); - specular_brdf_NL = (blinn) / max(4.0 * cNdotV * cNdotL, 0.75); + specular_brdf_NL = blinn; #endif specular += specular_brdf_NL * light_color * (1.0 / M_PI); @@ -434,6 +432,8 @@ void main() { } #endif + float point_size = 1.0; + highp mat4 modelview = camera_inverse_matrix * world_matrix; { /* clang-format off */ @@ -443,6 +443,8 @@ VERTEX_SHADER_CODE /* clang-format on */ } + gl_PointSize = point_size; + // using local coordinates (default) #if !defined(SKIP_TRANSFORM_USED) && !defined(VERTEX_WORLD_COORDS_USED) @@ -895,18 +897,22 @@ float contact_shadow_compute(vec3 pos, vec3 dir, float max_distance) { bias += incr * 2.0; vec3 uv_depth = (source.xyz / source.w) * 0.5 + 0.5; - float depth = texture(depth_buffer, uv_depth.xy).r; - - if (depth < uv_depth.z) { - if (depth > (bias.z / bias.w) * 0.5 + 0.5) { - return min(pow(ratio, 4.0), 1.0); - } else { - return 1.0; + if (uv_depth.x > 0.0 && uv_depth.x < 1.0 && uv_depth.y > 0.0 && uv_depth.y < 1.0) { + float depth = texture(depth_buffer, uv_depth.xy).r; + + if (depth < uv_depth.z) { + if (depth > (bias.z / bias.w) * 0.5 + 0.5) { + return min(pow(ratio, 4.0), 1.0); + } else { + return 1.0; + } } - } - ratio += ratio_incr; - steps -= 1.0; + ratio += ratio_incr; + steps -= 1.0; + } else { + return 1.0; + } } return 1.0; @@ -1094,9 +1100,9 @@ LIGHT_SHADER_CODE //normalized blinn float shininess = exp2(15.0 * (1.0 - roughness) + 1.0) * 0.25; - float blinn = pow(cNdotH, shininess); + float blinn = pow(cNdotH, shininess) * cNdotL; blinn *= (shininess + 8.0) * (1.0 / (8.0 * M_PI)); - float intensity = (blinn) / max(4.0 * cNdotV * cNdotL, 0.75); + float intensity = blinn; specular_light += light_color * intensity * specular_blob_intensity * attenuation; @@ -1252,10 +1258,16 @@ void light_process_omni(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 bi vec3 light_rel_vec = omni_lights[idx].light_pos_inv_radius.xyz - vertex; float light_length = length(light_rel_vec); float normalized_distance = light_length * omni_lights[idx].light_pos_inv_radius.w; - float omni_attenuation = pow(max(1.0 - normalized_distance, 0.0), omni_lights[idx].light_direction_attenuation.w); + float omni_attenuation; + if (normalized_distance < 1.0) { + omni_attenuation = pow(1.0 - normalized_distance, omni_lights[idx].light_direction_attenuation.w); + } else { + omni_attenuation = 0.0; + } vec3 light_attenuation = vec3(omni_attenuation); #if !defined(SHADOWS_DISABLED) +#ifdef USE_SHADOW if (omni_lights[idx].light_params.w > 0.5) { // there is a shadowmap @@ -1300,6 +1312,7 @@ void light_process_omni(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 bi #endif light_attenuation *= mix(omni_lights[idx].shadow_color_contact.rgb, vec3(1.0), shadow); } +#endif //USE_SHADOW #endif //SHADOWS_DISABLED light_compute(normal, normalize(light_rel_vec), eye_vec, binormal, tangent, omni_lights[idx].light_color_energy.rgb, light_attenuation, albedo, transmission, omni_lights[idx].light_params.z * p_blob_intensity, roughness, metallic, specular, rim * omni_attenuation, rim_tint, clearcoat, clearcoat_gloss, anisotropy, diffuse_light, specular_light, alpha); } @@ -1309,7 +1322,12 @@ void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 bi vec3 light_rel_vec = spot_lights[idx].light_pos_inv_radius.xyz - vertex; float light_length = length(light_rel_vec); float normalized_distance = light_length * spot_lights[idx].light_pos_inv_radius.w; - float spot_attenuation = pow(max(1.0 - normalized_distance, 0.001), spot_lights[idx].light_direction_attenuation.w); + float spot_attenuation; + if (normalized_distance < 1.0) { + spot_attenuation = pow(1.0 - normalized_distance, spot_lights[idx].light_direction_attenuation.w); + } else { + spot_attenuation = 0.0; + } vec3 spot_dir = spot_lights[idx].light_direction_attenuation.xyz; float spot_cutoff = spot_lights[idx].light_params.y; float scos = max(dot(-normalize(light_rel_vec), spot_dir), spot_cutoff); @@ -1318,6 +1336,7 @@ void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 bi vec3 light_attenuation = vec3(spot_attenuation); #if !defined(SHADOWS_DISABLED) +#ifdef USE_SHADOW if (spot_lights[idx].light_params.w > 0.5) { //there is a shadowmap highp vec4 splane = (spot_lights[idx].shadow_matrix * vec4(vertex, 1.0)); @@ -1334,6 +1353,7 @@ void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 bi #endif light_attenuation *= mix(spot_lights[idx].shadow_color_contact.rgb, vec3(1.0), shadow); } +#endif //USE_SHADOW #endif //SHADOWS_DISABLED light_compute(normal, normalize(light_rel_vec), eye_vec, binormal, tangent, spot_lights[idx].light_color_energy.rgb, light_attenuation, albedo, transmission, spot_lights[idx].light_params.z * p_blob_intensity, roughness, metallic, specular, rim * spot_attenuation, rim_tint, clearcoat, clearcoat_gloss, anisotropy, diffuse_light, specular_light, alpha); diff --git a/drivers/register_driver_types.cpp b/drivers/register_driver_types.cpp index 20556d98af..148f69872a 100644 --- a/drivers/register_driver_types.cpp +++ b/drivers/register_driver_types.cpp @@ -30,18 +30,9 @@ #include "register_driver_types.h" -#include "core/math/geometry.h" #include "drivers/png/image_loader_png.h" #include "drivers/png/resource_saver_png.h" -#ifdef TOOLS_ENABLED -#include "drivers/convex_decomp/b2d_decompose.h" -#endif - -#ifdef TOOLS_ENABLED -#include "platform/windows/export/export.h" -#endif - static ImageLoaderPNG *image_loader_png; static Ref<ResourceSaverPNG> resource_saver_png; @@ -64,10 +55,6 @@ void unregister_core_driver_types() { } void register_driver_types() { - -#ifdef TOOLS_ENABLED - Geometry::_decompose_func = b2d_decompose; -#endif } void unregister_driver_types() { diff --git a/drivers/unix/net_socket_posix.cpp b/drivers/unix/net_socket_posix.cpp index 5f99a40c79..0e3d81ed66 100644 --- a/drivers/unix/net_socket_posix.cpp +++ b/drivers/unix/net_socket_posix.cpp @@ -189,7 +189,7 @@ NetSocketPosix::~NetSocketPosix() { #pragma GCC diagnostic ignored "-Wlogical-op" #endif -NetSocketPosix::NetError NetSocketPosix::_get_socket_error() { +NetSocketPosix::NetError NetSocketPosix::_get_socket_error() const { #if defined(WINDOWS_ENABLED) int err = WSAGetLastError(); @@ -199,7 +199,7 @@ NetSocketPosix::NetError NetSocketPosix::_get_socket_error() { return ERR_NET_IN_PROGRESS; if (err == WSAEWOULDBLOCK) return ERR_NET_WOULD_BLOCK; - ERR_PRINTS("Socket error: " + itos(err)); + print_verbose("Socket error: " + itos(err)); return ERR_NET_OTHER; #else if (errno == EISCONN) @@ -208,7 +208,7 @@ NetSocketPosix::NetError NetSocketPosix::_get_socket_error() { return ERR_NET_IN_PROGRESS; if (errno == EAGAIN || errno == EWOULDBLOCK) return ERR_NET_WOULD_BLOCK; - ERR_PRINTS("Socket error: " + itos(errno)); + print_verbose("Socket error: " + itos(errno)); return ERR_NET_OTHER; #endif } @@ -333,9 +333,10 @@ Error NetSocketPosix::open(Type p_sock_type, IP::Type &ip_type) { set_ipv6_only_enabled(ip_type != IP::TYPE_ANY); } - if (protocol == IPPROTO_UDP && ip_type != IP::TYPE_IPV6) { - // Enable broadcasting for UDP sockets if it's not IPv6 only (IPv6 has no broadcast option). - set_broadcasting_enabled(true); + if (protocol == IPPROTO_UDP) { + // Make sure to disable broadcasting for UDP sockets. + // Depending on the OS, this option might or might not be enabled by default. Let's normalize it. + set_broadcasting_enabled(false); } _is_stream = p_sock_type == TYPE_TCP; @@ -386,8 +387,10 @@ Error NetSocketPosix::bind(IP_Address p_addr, uint16_t p_port) { size_t addr_size = _set_addr_storage(&addr, p_addr, p_port, _ip_type); if (::bind(_sock, (struct sockaddr *)&addr, addr_size) != 0) { + _get_socket_error(); + print_verbose("Failed to bind socket."); close(); - ERR_FAIL_V(ERR_UNAVAILABLE); + return ERR_UNAVAILABLE; } return OK; @@ -397,9 +400,10 @@ Error NetSocketPosix::listen(int p_max_pending) { ERR_FAIL_COND_V(!is_open(), ERR_UNCONFIGURED); if (::listen(_sock, p_max_pending) != 0) { - + _get_socket_error(); + print_verbose("Failed to listen from socket."); close(); - ERR_FAIL_V(FAILED); + return FAILED; }; return OK; @@ -426,7 +430,7 @@ Error NetSocketPosix::connect_to_host(IP_Address p_host, uint16_t p_port) { case ERR_NET_IN_PROGRESS: return ERR_BUSY; default: - ERR_PRINT("Connection to remote host failed!"); + print_verbose("Connection to remote host failed!"); close(); return FAILED; } @@ -473,12 +477,18 @@ Error NetSocketPosix::poll(PollType p_type, int p_timeout) const { } int ret = select(1, rdp, wrp, &ex, tp); - ERR_FAIL_COND_V(ret == SOCKET_ERROR, FAILED); + if (ret == SOCKET_ERROR) { + return FAILED; + } if (ret == 0) return ERR_BUSY; - ERR_FAIL_COND_V(FD_ISSET(_sock, &ex), FAILED); + if (FD_ISSET(_sock, &ex)) { + _get_socket_error(); + print_verbose("Exception when polling socket."); + return FAILED; + } if (rdp && FD_ISSET(_sock, rdp)) ready = true; @@ -505,8 +515,11 @@ Error NetSocketPosix::poll(PollType p_type, int p_timeout) const { int ret = ::poll(&pfd, 1, p_timeout); - ERR_FAIL_COND_V(ret < 0, FAILED); - ERR_FAIL_COND_V(pfd.revents & POLLERR, FAILED); + if (ret < 0 || pfd.revents & POLLERR) { + _get_socket_error(); + print_verbose("Error when polling socket."); + return FAILED; + } if (ret == 0) return ERR_BUSY; @@ -603,15 +616,18 @@ Error NetSocketPosix::sendto(const uint8_t *p_buffer, int p_len, int &r_sent, IP return OK; } -void NetSocketPosix::set_broadcasting_enabled(bool p_enabled) { - ERR_FAIL_COND(!is_open()); +Error NetSocketPosix::set_broadcasting_enabled(bool p_enabled) { + ERR_FAIL_COND_V(!is_open(), ERR_UNCONFIGURED); // IPv6 has no broadcast support. - ERR_FAIL_COND(_ip_type == IP::TYPE_IPV6); + if (_ip_type == IP::TYPE_IPV6) + return ERR_UNAVAILABLE; int par = p_enabled ? 1 : 0; if (setsockopt(_sock, SOL_SOCKET, SO_BROADCAST, SOCK_CBUF(&par), sizeof(int)) != 0) { WARN_PRINT("Unable to change broadcast setting"); + return FAILED; } + return OK; } void NetSocketPosix::set_blocking_enabled(bool p_enabled) { @@ -681,11 +697,15 @@ bool NetSocketPosix::is_open() const { int NetSocketPosix::get_available_bytes() const { - ERR_FAIL_COND_V(_sock == SOCK_EMPTY, -1); + ERR_FAIL_COND_V(!is_open(), -1); unsigned long len; int ret = SOCK_IOCTL(_sock, FIONREAD, &len); - ERR_FAIL_COND_V(ret == -1, 0); + if (ret == -1) { + _get_socket_error(); + print_verbose("Error when checking available bytes on socket."); + return -1; + } return len; } @@ -697,7 +717,11 @@ Ref<NetSocket> NetSocketPosix::accept(IP_Address &r_ip, uint16_t &r_port) { struct sockaddr_storage their_addr; socklen_t size = sizeof(their_addr); SOCKET_TYPE fd = ::accept(_sock, (struct sockaddr *)&their_addr, &size); - ERR_FAIL_COND_V(fd == SOCK_EMPTY, out); + if (fd == SOCK_EMPTY) { + _get_socket_error(); + print_verbose("Error when accepting socket connection."); + return out; + } _set_ip_port(&their_addr, r_ip, r_port); diff --git a/drivers/unix/net_socket_posix.h b/drivers/unix/net_socket_posix.h index e549ea1d6a..b37e0ffb30 100644 --- a/drivers/unix/net_socket_posix.h +++ b/drivers/unix/net_socket_posix.h @@ -58,7 +58,7 @@ private: ERR_NET_OTHER }; - NetError _get_socket_error(); + NetError _get_socket_error() const; void _set_socket(SOCKET_TYPE p_sock, IP::Type p_ip_type, bool p_is_stream); _FORCE_INLINE_ Error _change_multicast_group(IP_Address p_ip, String p_if_name, bool p_add); _FORCE_INLINE_ void _set_close_exec_enabled(bool p_enabled); @@ -89,7 +89,7 @@ public: virtual bool is_open() const; virtual int get_available_bytes() const; - virtual void set_broadcasting_enabled(bool p_enabled); + virtual Error set_broadcasting_enabled(bool p_enabled); virtual void set_blocking_enabled(bool p_enabled); virtual void set_ipv6_only_enabled(bool p_enabled); virtual void set_tcp_no_delay_enabled(bool p_enabled); diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index 40aa9a28b2..4ec245eacf 100644 --- a/editor/animation_track_editor.cpp +++ b/editor/animation_track_editor.cpp @@ -266,7 +266,6 @@ public: else undo_redo->create_action(TTR("Anim Change Call")); - Variant prev = animation->track_get_key_value(track, key); setting = true; undo_redo->add_do_method(animation.ptr(), "track_set_key_value", track, key, d_new); undo_redo->add_undo_method(animation.ptr(), "track_set_key_value", track, key, d_old); diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index 16780a795f..42c5c7c4da 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -1182,6 +1182,19 @@ void CodeTextEditor::move_lines_down() { text_editor->update(); } +void CodeTextEditor::_delete_line(int p_line) { + // this is currently intended to be called within delete_lines() + // so `begin_complex_operation` is ommitted here + text_editor->set_line(p_line, ""); + if (p_line == 0 && text_editor->get_line_count() > 1) { + text_editor->cursor_set_line(1); + text_editor->cursor_set_column(0); + } + text_editor->backspace_at_cursor(); + text_editor->unfold_line(p_line); + text_editor->cursor_set_line(p_line); +} + void CodeTextEditor::delete_lines() { text_editor->begin_complex_operation(); if (text_editor->is_selection_active()) { @@ -1189,22 +1202,13 @@ void CodeTextEditor::delete_lines() { int from_line = text_editor->get_selection_from_line(); int count = Math::abs(to_line - from_line) + 1; - text_editor->cursor_set_line(to_line, false); - while (count) { - text_editor->set_line(text_editor->cursor_get_line(), ""); - text_editor->backspace_at_cursor(); - count--; - if (count) - text_editor->unfold_line(from_line); + text_editor->cursor_set_line(from_line, false); + for (int i = 0; i < count; i++) { + _delete_line(from_line); } - text_editor->cursor_set_line(from_line - 1); text_editor->deselect(); } else { - int line = text_editor->cursor_get_line(); - text_editor->set_line(text_editor->cursor_get_line(), ""); - text_editor->backspace_at_cursor(); - text_editor->unfold_line(line); - text_editor->cursor_set_line(line); + _delete_line(text_editor->cursor_get_line()); } text_editor->end_complex_operation(); } @@ -1504,6 +1508,10 @@ void CodeTextEditor::_set_show_warnings_panel(bool p_show) { emit_signal("show_warnings_panel", p_show); } +void CodeTextEditor::_toggle_scripts_pressed() { + toggle_scripts_button->set_icon(ScriptEditor::get_singleton()->toggle_scripts_panel() ? get_icon("Back", "EditorIcons") : get_icon("Forward", "EditorIcons")); +} + void CodeTextEditor::_error_pressed(const Ref<InputEvent> &p_event) { Ref<InputEventMouseButton> mb = p_event; if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { @@ -1519,6 +1527,9 @@ void CodeTextEditor::_notification(int p_what) { emit_signal("load_theme_settings"); } break; case NOTIFICATION_THEME_CHANGED: { + if (toggle_scripts_button->is_visible()) { + update_toggle_scripts_button(); + } _update_font(); } break; case NOTIFICATION_ENTER_TREE: { @@ -1526,6 +1537,9 @@ void CodeTextEditor::_notification(int p_what) { add_constant_override("separation", 4 * EDSCALE); } break; case NOTIFICATION_VISIBILITY_CHANGED: { + if (toggle_scripts_button->is_visible()) { + update_toggle_scripts_button(); + } set_process_input(is_visible_in_tree()); } break; default: @@ -1559,12 +1573,14 @@ void CodeTextEditor::goto_next_bookmark() { if (line >= bmarks[bmarks.size() - 1]) { text_editor->unfold_line(bmarks[0]); text_editor->cursor_set_line(bmarks[0]); + text_editor->center_viewport_to_cursor(); } else { for (List<int>::Element *E = bmarks.front(); E; E = E->next()) { int bline = E->get(); if (bline > line) { text_editor->unfold_line(bline); text_editor->cursor_set_line(bline); + text_editor->center_viewport_to_cursor(); return; } } @@ -1583,12 +1599,14 @@ void CodeTextEditor::goto_prev_bookmark() { if (line <= bmarks[0]) { text_editor->unfold_line(bmarks[bmarks.size() - 1]); text_editor->cursor_set_line(bmarks[bmarks.size() - 1]); + text_editor->center_viewport_to_cursor(); } else { for (List<int>::Element *E = bmarks.back(); E; E = E->prev()) { int bline = E->get(); if (bline < line) { text_editor->unfold_line(bline); text_editor->cursor_set_line(bline); + text_editor->center_viewport_to_cursor(); return; } } @@ -1617,6 +1635,7 @@ void CodeTextEditor::_bind_methods() { ClassDB::bind_method("_complete_request", &CodeTextEditor::_complete_request); ClassDB::bind_method("_font_resize_timeout", &CodeTextEditor::_font_resize_timeout); ClassDB::bind_method("_error_pressed", &CodeTextEditor::_error_pressed); + ClassDB::bind_method("_toggle_scripts_pressed", &CodeTextEditor::_toggle_scripts_pressed); ClassDB::bind_method("_warning_button_pressed", &CodeTextEditor::_warning_button_pressed); ClassDB::bind_method("_warning_label_gui_input", &CodeTextEditor::_warning_label_gui_input); @@ -1631,6 +1650,15 @@ void CodeTextEditor::set_code_complete_func(CodeTextEditorCodeCompleteFunc p_cod code_complete_ud = p_ud; } +void CodeTextEditor::show_toggle_scripts_button() { + toggle_scripts_button->show(); +} + +void CodeTextEditor::update_toggle_scripts_button() { + toggle_scripts_button->set_icon(ScriptEditor::get_singleton()->is_scripts_panel_toggled() ? get_icon("Back", "EditorIcons") : get_icon("Forward", "EditorIcons")); + toggle_scripts_button->set_tooltip(TTR("Toggle Scripts Panel") + " (" + ED_GET_SHORTCUT("script_editor/toggle_scripts_panel")->get_as_text() + ")"); +} + CodeTextEditor::CodeTextEditor() { code_complete_func = NULL; @@ -1672,6 +1700,11 @@ CodeTextEditor::CodeTextEditor() { error_line = 0; error_column = 0; + toggle_scripts_button = memnew(ToolButton); + toggle_scripts_button->connect("pressed", this, "_toggle_scripts_pressed"); + status_bar->add_child(toggle_scripts_button); + toggle_scripts_button->hide(); + // Error ScrollContainer *scroll = memnew(ScrollContainer); scroll->set_h_size_flags(SIZE_EXPAND_FILL); diff --git a/editor/code_editor.h b/editor/code_editor.h index f2a55cfb70..118d95a10e 100644 --- a/editor/code_editor.h +++ b/editor/code_editor.h @@ -145,6 +145,7 @@ class CodeTextEditor : public VBoxContainer { FindReplaceBar *find_replace_bar; HBoxContainer *status_bar; + ToolButton *toggle_scripts_button; ToolButton *warning_button; Label *warning_count_label; @@ -185,6 +186,9 @@ class CodeTextEditor : public VBoxContainer { void _set_show_warnings_panel(bool p_show); void _error_pressed(const Ref<InputEvent> &p_event); + void _delete_line(int p_line); + void _toggle_scripts_pressed(); + protected: virtual void _load_theme_settings() {} virtual void _validate_script() {} @@ -251,6 +255,9 @@ public: void validate_script(); + void show_toggle_scripts_button(); + void update_toggle_scripts_button(); + CodeTextEditor(); }; diff --git a/editor/collada/collada.cpp b/editor/collada/collada.cpp index 843d1006d7..745e31e18d 100644 --- a/editor/collada/collada.cpp +++ b/editor/collada/collada.cpp @@ -1488,7 +1488,6 @@ Collada::Node *Collada::_parse_visual_instance_geometry(XMLParser &parser) { Collada::Node *Collada::_parse_visual_instance_camera(XMLParser &parser) { - String type = parser.get_node_name(); NodeCamera *cam = memnew(NodeCamera); cam->camera = _uri_to_id(parser.get_attribute_value_safe("url")); @@ -1509,7 +1508,6 @@ Collada::Node *Collada::_parse_visual_instance_camera(XMLParser &parser) { Collada::Node *Collada::_parse_visual_instance_light(XMLParser &parser) { - String type = parser.get_node_name(); NodeLight *cam = memnew(NodeLight); cam->light = _uri_to_id(parser.get_attribute_value_safe("url")); diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index f5a01dfb04..235543d06d 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -32,6 +32,7 @@ #include "core/print_string.h" #include "editor_node.h" +#include "editor_scale.h" #include "editor_settings.h" #include "plugins/script_editor_plugin.h" #include "scene/gui/label.h" @@ -413,7 +414,7 @@ ConnectDialog::ConnectDialog() { vbc_right->add_margin_child(TTR("Extra Call Arguments:"), bind_editor, true); HBoxContainer *dstm_hb = memnew(HBoxContainer); - vbc_left->add_margin_child("Receiver Method:", dstm_hb); + vbc_left->add_margin_child(TTR("Receiver Method:"), dstm_hb); dst_method = memnew(LineEdit); dst_method->set_h_size_flags(SIZE_EXPAND_FILL); diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp index fb7cf494cd..5f0168d0a6 100644 --- a/editor/create_dialog.cpp +++ b/editor/create_dialog.cpp @@ -33,8 +33,10 @@ #include "core/class_db.h" #include "core/os/keyboard.h" #include "core/print_string.h" +#include "editor_feature_profile.h" #include "editor_help.h" #include "editor_node.h" +#include "editor_scale.h" #include "editor_settings.h" #include "scene/gui/box_container.h" diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index 1f58eda396..2743aa8b0c 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -33,6 +33,7 @@ #include "core/io/resource_loader.h" #include "core/os/file_access.h" #include "editor_node.h" +#include "editor_scale.h" #include "scene/gui/margin_container.h" void DependencyEditor::_searched(const String &p_path) { @@ -49,7 +50,6 @@ void DependencyEditor::_searched(const String &p_path) { void DependencyEditor::_load_pressed(Object *p_item, int p_cell, int p_button) { TreeItem *ti = Object::cast_to<TreeItem>(p_item); - String fname = ti->get_text(0); replacing = ti->get_text(1); search->set_title(TTR("Search Replacement For:") + " " + replacing.get_file()); diff --git a/editor/editor_asset_installer.cpp b/editor/editor_asset_installer.cpp index 98e670f952..a5accf2ec7 100644 --- a/editor/editor_asset_installer.cpp +++ b/editor/editor_asset_installer.cpp @@ -34,6 +34,7 @@ #include "core/os/dir_access.h" #include "core/os/file_access.h" #include "editor_node.h" +#include "progress_dialog.h" void EditorAssetInstaller::_update_subitems(TreeItem *p_item, bool p_check, bool p_first) { diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index acfdea28e2..f4f1dc58ba 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -34,6 +34,7 @@ #include "core/os/input.h" #include "core/os/keyboard.h" #include "editor_node.h" +#include "editor_scale.h" #include "filesystem_dock.h" #include "scene/resources/font.h" #include "servers/audio_server.h" diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp index f44e1b7b14..d26c77cf8c 100644 --- a/editor/editor_autoload_settings.cpp +++ b/editor/editor_autoload_settings.cpp @@ -33,6 +33,8 @@ #include "core/global_constants.h" #include "core/project_settings.h" #include "editor_node.h" +#include "editor_scale.h" +#include "project_settings_editor.h" #include "scene/main/viewport.h" #include "scene/resources/packed_scene.h" diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp index 1cafd1d1f4..0ac7b66ae4 100644 --- a/editor/editor_data.cpp +++ b/editor/editor_data.cpp @@ -727,7 +727,7 @@ uint64_t EditorData::get_edited_scene_version() const { return edited_scene[current_edited_scene].version; } uint64_t EditorData::get_scene_version(int p_idx) const { - ERR_FAIL_INDEX_V(p_idx, edited_scene.size(), false); + ERR_FAIL_INDEX_V(p_idx, edited_scene.size(), 0); return edited_scene[p_idx].version; } diff --git a/editor/editor_feature_profile.cpp b/editor/editor_feature_profile.cpp index 0182c3b4a2..4ff670884e 100644 --- a/editor/editor_feature_profile.cpp +++ b/editor/editor_feature_profile.cpp @@ -896,7 +896,7 @@ EditorFeatureProfileManager::EditorFeatureProfileManager() { import_profiles = memnew(EditorFileDialog); add_child(import_profiles); import_profiles->set_mode(EditorFileDialog::MODE_OPEN_FILES); - import_profiles->add_filter("*.profile; Godot Feature Profile"); + import_profiles->add_filter("*.profile; " + TTR("Godot Feature Profile")); import_profiles->connect("files_selected", this, "_import_profiles"); import_profiles->set_title(TTR("Import Profile(s)")); import_profiles->set_access(EditorFileDialog::ACCESS_FILESYSTEM); @@ -904,7 +904,7 @@ EditorFeatureProfileManager::EditorFeatureProfileManager() { export_profile = memnew(EditorFileDialog); add_child(export_profile); export_profile->set_mode(EditorFileDialog::MODE_SAVE_FILE); - export_profile->add_filter("*.profile; Godot Feature Profile"); + export_profile->add_filter("*.profile; " + TTR("Godot Feature Profile")); export_profile->connect("file_selected", this, "_export_profile"); export_profile->set_title(TTR("Export Profile")); export_profile->set_access(EditorFileDialog::ACCESS_FILESYSTEM); diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp index 2db4f03859..03da065658 100644 --- a/editor/editor_file_dialog.cpp +++ b/editor/editor_file_dialog.cpp @@ -907,25 +907,25 @@ void EditorFileDialog::update_filters() { const int max_filters = 5; for (int i = 0; i < MIN(max_filters, filters.size()); i++) { - String flt = filters[i].get_slice(";", 0); + String flt = filters[i].get_slice(";", 0).strip_edges(); if (i > 0) - all_filters += ","; + all_filters += ", "; all_filters += flt; } if (max_filters < filters.size()) all_filters += ", ..."; - filter->add_item(TTR("All Recognized") + " ( " + all_filters + " )"); + filter->add_item(TTR("All Recognized") + " (" + all_filters + ")"); } for (int i = 0; i < filters.size(); i++) { String flt = filters[i].get_slice(";", 0).strip_edges(); String desc = filters[i].get_slice(";", 1).strip_edges(); if (desc.length()) - filter->add_item(desc + " ( " + flt + " )"); + filter->add_item(desc + " (" + flt + ")"); else - filter->add_item("( " + flt + " )"); + filter->add_item("(" + flt + ")"); } filter->add_item(TTR("All Files (*)")); @@ -958,6 +958,8 @@ String EditorFileDialog::get_current_path() const { } void EditorFileDialog::set_current_dir(const String &p_dir) { + if (p_dir.is_rel_path()) + dir_access->change_dir(OS::get_singleton()->get_resource_dir()); dir_access->change_dir(p_dir); update_dir(); invalidate(); diff --git a/editor/editor_folding.cpp b/editor/editor_folding.cpp index 9f13049a6b..9ed74b0d84 100644 --- a/editor/editor_folding.cpp +++ b/editor/editor_folding.cpp @@ -55,7 +55,6 @@ void EditorFolding::save_resource_folding(const RES &p_resource, const String &p PoolVector<String> unfolds = _get_unfolds(p_resource.ptr()); config->set_value("folding", "sections_unfolded", unfolds); - String path = EditorSettings::get_singleton()->get_project_settings_dir(); String file = p_path.get_file() + "-folding-" + p_path.md5_text() + ".cfg"; file = EditorSettings::get_singleton()->get_project_settings_dir().plus_file(file); config->save(file); @@ -76,7 +75,6 @@ void EditorFolding::load_resource_folding(RES p_resource, const String &p_path) Ref<ConfigFile> config; config.instance(); - String path = EditorSettings::get_singleton()->get_project_settings_dir(); String file = p_path.get_file() + "-folding-" + p_path.md5_text() + ".cfg"; file = EditorSettings::get_singleton()->get_project_settings_dir().plus_file(file); @@ -151,7 +149,6 @@ void EditorFolding::save_scene_folding(const Node *p_scene, const String &p_path config->set_value("folding", "resource_unfolds", res_unfolds); config->set_value("folding", "nodes_folded", nodes_folded); - String path = EditorSettings::get_singleton()->get_project_settings_dir(); String file = p_path.get_file() + "-folding-" + p_path.md5_text() + ".cfg"; file = EditorSettings::get_singleton()->get_project_settings_dir().plus_file(file); config->save(file); diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index 4f7432cd65..2730e5cf89 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -35,6 +35,7 @@ #include "doc_data_compressed.gen.h" #include "editor/plugins/script_editor_plugin.h" #include "editor_node.h" +#include "editor_scale.h" #include "editor_settings.h" #define CONTRIBUTE_URL "https://docs.godotengine.org/en/latest/community/contributing/updating_the_class_reference.html" @@ -185,11 +186,11 @@ void EditorHelp::_class_desc_resized() { void EditorHelp::_add_type(const String &p_type, const String &p_enum) { String t = p_type; - if (t == "") + if (t.empty()) t = "void"; - bool can_ref = (t != "int" && t != "real" && t != "bool" && t != "void") || p_enum != String(); + bool can_ref = (t != "void") || !p_enum.empty(); - if (p_enum != String()) { + if (!p_enum.empty()) { if (p_enum.get_slice_count(".") > 1) { t = p_enum.get_slice(".", 1); } else { @@ -200,7 +201,7 @@ void EditorHelp::_add_type(const String &p_type, const String &p_enum) { const Color type_color = get_color("accent_color", "Editor").linear_interpolate(text_color, 0.5); class_desc->push_color(type_color); if (can_ref) { - if (p_enum == "") { + if (p_enum.empty()) { class_desc->push_meta("#" + t); //class } else { class_desc->push_meta("$" + p_enum); //class @@ -798,7 +799,7 @@ void EditorHelp::_update_doc() { class_desc->pop(); class_desc->push_font(doc_code_font); String e = E->key(); - if (e.get_slice_count(".")) { + if ((e.get_slice_count(".") > 1) && (e.get_slice(".", 0) == edited_class)) { e = e.get_slice(".", 1); } diff --git a/editor/editor_help_search.cpp b/editor/editor_help_search.cpp index 517a1c34d1..2249fb48ab 100644 --- a/editor/editor_help_search.cpp +++ b/editor/editor_help_search.cpp @@ -31,6 +31,7 @@ #include "editor_help_search.h" #include "core/os/keyboard.h" +#include "editor_feature_profile.h" #include "editor_node.h" void EditorHelpSearch::_update_icons() { diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index 96b6a32914..29a6f9365e 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -31,6 +31,7 @@ #include "editor_inspector.h" #include "array_property_edit.h" #include "dictionary_property_edit.h" +#include "editor_feature_profile.h" #include "editor_node.h" #include "editor_scale.h" #include "multi_node_edit.h" diff --git a/editor/editor_log.cpp b/editor/editor_log.cpp index 5474f86c74..5b4c61ef8e 100644 --- a/editor/editor_log.cpp +++ b/editor/editor_log.cpp @@ -33,6 +33,7 @@ #include "core/os/keyboard.h" #include "core/version.h" #include "editor_node.h" +#include "editor_scale.h" #include "scene/gui/center_container.h" #include "scene/resources/dynamic_font.h" diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index ab41019ac3..c8d87868ae 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -49,16 +49,44 @@ #include "core/version.h" #include "main/input_default.h" #include "main/main.h" +#include "scene/gui/center_container.h" +#include "scene/gui/control.h" +#include "scene/gui/dialogs.h" +#include "scene/gui/file_dialog.h" +#include "scene/gui/menu_button.h" +#include "scene/gui/panel.h" +#include "scene/gui/panel_container.h" +#include "scene/gui/split_container.h" +#include "scene/gui/tab_container.h" +#include "scene/gui/tabs.h" +#include "scene/gui/texture_progress.h" +#include "scene/gui/tool_button.h" #include "scene/resources/packed_scene.h" #include "servers/physics_2d_server.h" +#include "editor/audio_stream_preview.h" +#include "editor/dependency_editor.h" +#include "editor/editor_about.h" #include "editor/editor_audio_buses.h" +#include "editor/editor_export.h" +#include "editor/editor_feature_profile.h" #include "editor/editor_file_system.h" #include "editor/editor_help.h" +#include "editor/editor_inspector.h" +#include "editor/editor_layouts_dialog.h" +#include "editor/editor_log.h" +#include "editor/editor_plugin.h" #include "editor/editor_properties.h" +#include "editor/editor_resource_preview.h" +#include "editor/editor_run_native.h" +#include "editor/editor_run_script.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" #include "editor/editor_spin_slider.h" #include "editor/editor_themes.h" +#include "editor/export_template_manager.h" +#include "editor/fileserver/editor_file_server.h" +#include "editor/filesystem_dock.h" #include "editor/import/editor_import_collada.h" #include "editor/import/editor_scene_importer_gltf.h" #include "editor/import/resource_importer_bitmask.h" @@ -71,7 +99,11 @@ #include "editor/import/resource_importer_texture.h" #include "editor/import/resource_importer_texture_atlas.h" #include "editor/import/resource_importer_wav.h" +#include "editor/import_dock.h" #include "editor/multi_node_edit.h" +#include "editor/node_dock.h" +#include "editor/pane_drag.h" +#include "editor/plugin_config_dialog.h" #include "editor/plugins/animation_blend_space_1d_editor.h" #include "editor/plugins/animation_blend_space_2d_editor.h" #include "editor/plugins/animation_blend_tree_editor_plugin.h" @@ -128,9 +160,15 @@ #include "editor/plugins/tile_set_editor_plugin.h" #include "editor/plugins/version_control_editor_plugin.h" #include "editor/plugins/visual_shader_editor_plugin.h" +#include "editor/progress_dialog.h" +#include "editor/project_export.h" +#include "editor/project_settings_editor.h" #include "editor/pvrtc_compress.h" +#include "editor/quick_open.h" #include "editor/register_exporters.h" +#include "editor/run_settings_dialog.h" #include "editor/script_editor_debugger.h" +#include "editor/settings_config_dialog.h" #include <stdio.h> @@ -630,7 +668,7 @@ void EditorNode::_editor_select_next() { } else { editor++; } - } while (main_editor_buttons[editor]->is_visible()); + } while (!main_editor_buttons[editor]->is_visible()); _editor_select(editor); } @@ -645,7 +683,7 @@ void EditorNode::_editor_select_prev() { } else { editor--; } - } while (main_editor_buttons[editor]->is_visible()); + } while (!main_editor_buttons[editor]->is_visible()); _editor_select(editor); } @@ -963,7 +1001,7 @@ bool EditorNode::_find_and_save_edited_subresources(Object *obj, Map<RES, bool> int len = varray.size(); for (int i = 0; i < len; i++) { - Variant v = varray.get(i); + const Variant &v = varray.get(i); RES res = v; if (_find_and_save_resource(res, processed, flags)) ret_changed = true; @@ -1021,74 +1059,75 @@ void EditorNode::_find_node_types(Node *p_node, int &count_2d, int &count_3d) { void EditorNode::_save_scene_with_preview(String p_file, int p_idx) { EditorProgress save("save", TTR("Saving Scene"), 4); - save.step(TTR("Analyzing"), 0); - int c2d = 0; - int c3d = 0; - _find_node_types(editor_data.get_edited_scene_root(), c2d, c3d); + if (editor_data.get_edited_scene_root() != NULL) { + save.step(TTR("Analyzing"), 0); - RID viewport; - bool is2d; - if (c3d < c2d) { - viewport = scene_root->get_viewport_rid(); - is2d = true; - } else { - viewport = SpatialEditor::get_singleton()->get_editor_viewport(0)->get_viewport_node()->get_viewport_rid(); - is2d = false; - } - save.step(TTR("Creating Thumbnail"), 1); - //current view? + int c2d = 0; + int c3d = 0; - Ref<Image> img; - if (is2d) { - img = scene_root->get_texture()->get_data(); - } else { - img = SpatialEditor::get_singleton()->get_editor_viewport(0)->get_viewport_node()->get_texture()->get_data(); - } + _find_node_types(editor_data.get_edited_scene_root(), c2d, c3d); - if (img.is_valid()) { + bool is2d; + if (c3d < c2d) { + is2d = true; + } else { + is2d = false; + } + save.step(TTR("Creating Thumbnail"), 1); + //current view? - img = img->duplicate(); + Ref<Image> img; + if (is2d) { + img = scene_root->get_texture()->get_data(); + } else { + img = SpatialEditor::get_singleton()->get_editor_viewport(0)->get_viewport_node()->get_texture()->get_data(); + } - save.step(TTR("Creating Thumbnail"), 2); - save.step(TTR("Creating Thumbnail"), 3); + if (img.is_valid()) { - int preview_size = EditorSettings::get_singleton()->get("filesystem/file_dialog/thumbnail_size"); - preview_size *= EDSCALE; + img = img->duplicate(); - // consider a square region - int vp_size = MIN(img->get_width(), img->get_height()); - int x = (img->get_width() - vp_size) / 2; - int y = (img->get_height() - vp_size) / 2; + save.step(TTR("Creating Thumbnail"), 2); + save.step(TTR("Creating Thumbnail"), 3); - if (vp_size < preview_size) { - // just square it. - img->crop_from_point(x, y, vp_size, vp_size); - } else { - int ratio = vp_size / preview_size; - int size = preview_size * MAX(1, ratio / 2); + int preview_size = EditorSettings::get_singleton()->get("filesystem/file_dialog/thumbnail_size"); + preview_size *= EDSCALE; - x = (img->get_width() - size) / 2; - y = (img->get_height() - size) / 2; + // consider a square region + int vp_size = MIN(img->get_width(), img->get_height()); + int x = (img->get_width() - vp_size) / 2; + int y = (img->get_height() - vp_size) / 2; - img->crop_from_point(x, y, size, size); - img->resize(preview_size, preview_size, Image::INTERPOLATE_LANCZOS); - } - img->convert(Image::FORMAT_RGB8); + if (vp_size < preview_size) { + // just square it. + img->crop_from_point(x, y, vp_size, vp_size); + } else { + int ratio = vp_size / preview_size; + int size = preview_size * MAX(1, ratio / 2); + + x = (img->get_width() - size) / 2; + y = (img->get_height() - size) / 2; - img->flip_y(); + img->crop_from_point(x, y, size, size); + img->resize(preview_size, preview_size, Image::INTERPOLATE_LANCZOS); + } + img->convert(Image::FORMAT_RGB8); - //save thumbnail directly, as thumbnailer may not update due to actual scene not changing md5 - String temp_path = EditorSettings::get_singleton()->get_cache_dir(); - String cache_base = ProjectSettings::get_singleton()->globalize_path(p_file).md5_text(); - cache_base = temp_path.plus_file("resthumb-" + cache_base); + img->flip_y(); - //does not have it, try to load a cached thumbnail + //save thumbnail directly, as thumbnailer may not update due to actual scene not changing md5 + String temp_path = EditorSettings::get_singleton()->get_cache_dir(); + String cache_base = ProjectSettings::get_singleton()->globalize_path(p_file).md5_text(); + cache_base = temp_path.plus_file("resthumb-" + cache_base); - String file = cache_base + ".png"; + //does not have it, try to load a cached thumbnail - post_process_preview(img); - img->save_png(file); + String file = cache_base + ".png"; + + post_process_preview(img); + img->save_png(file); + } } save.step(TTR("Saving Scene"), 4); @@ -1282,7 +1321,6 @@ void EditorNode::restart_editor() { } _exit_editor(); - String exec = OS::get_singleton()->get_executable_path(); List<String> args; args.push_back("--path"); @@ -2049,14 +2087,17 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { case FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER: case FILE_CLOSE: { - if (!p_confirmed && (unsaved_cache || p_option == FILE_CLOSE_ALL_AND_QUIT || p_option == FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER)) { + if (!p_confirmed) { tab_closing = p_option == FILE_CLOSE ? editor_data.get_edited_scene() : _next_unsaved_scene(false); - String scene_filename = editor_data.get_edited_scene_root(tab_closing)->get_filename(); - save_confirmation->get_ok()->set_text(TTR("Save & Close")); - save_confirmation->set_text(vformat(TTR("Save changes to '%s' before closing?"), scene_filename != "" ? scene_filename : "unsaved scene")); - save_confirmation->popup_centered_minsize(); - break; - } else { + + if (unsaved_cache || p_option == FILE_CLOSE_ALL_AND_QUIT || p_option == FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER) { + String scene_filename = editor_data.get_edited_scene_root(tab_closing)->get_filename(); + save_confirmation->get_ok()->set_text(TTR("Save & Close")); + save_confirmation->set_text(vformat(TTR("Save changes to '%s' before closing?"), scene_filename != "" ? scene_filename : "unsaved scene")); + save_confirmation->popup_centered_minsize(); + break; + } + } else if (p_option == FILE_CLOSE) { tab_closing = editor_data.get_edited_scene(); } if (!editor_data.get_edited_scene_root(tab_closing)) { @@ -5829,6 +5870,7 @@ EditorNode::EditorNode() { Label *dock_label = memnew(Label); dock_label->set_text(TTR("Dock Position")); dock_label->set_h_size_flags(Control::SIZE_EXPAND_FILL); + dock_label->set_align(Label::ALIGN_CENTER); dock_hb->add_child(dock_label); dock_tab_move_right = memnew(ToolButton); @@ -6479,7 +6521,7 @@ EditorNode::EditorNode() { file_templates->set_mode(EditorFileDialog::MODE_OPEN_FILE); file_templates->set_access(EditorFileDialog::ACCESS_FILESYSTEM); file_templates->clear_filters(); - file_templates->add_filter("*.tpz ; Template Package"); + file_templates->add_filter("*.tpz ; " + TTR("Template Package")); file = memnew(EditorFileDialog); gui_base->add_child(file); diff --git a/editor/editor_node.h b/editor/editor_node.h index b7775b5e83..38f529252f 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -31,66 +31,59 @@ #ifndef EDITOR_NODE_H #define EDITOR_NODE_H -#include "core/print_string.h" -#include "editor/audio_stream_preview.h" -#include "editor/connections_dialog.h" -#include "editor/create_dialog.h" -#include "editor/editor_about.h" #include "editor/editor_data.h" -#include "editor/editor_export.h" -#include "editor/editor_feature_profile.h" #include "editor/editor_folding.h" -#include "editor/editor_inspector.h" -#include "editor/editor_layouts_dialog.h" -#include "editor/editor_log.h" -#include "editor/editor_plugin.h" -#include "editor/editor_resource_preview.h" #include "editor/editor_run.h" -#include "editor/editor_run_native.h" -#include "editor/editor_run_script.h" -#include "editor/editor_scale.h" -#include "editor/editor_sub_scene.h" -#include "editor/export_template_manager.h" -#include "editor/fileserver/editor_file_server.h" -#include "editor/filesystem_dock.h" -#include "editor/groups_editor.h" -#include "editor/import_dock.h" #include "editor/inspector_dock.h" -#include "editor/node_dock.h" -#include "editor/pane_drag.h" -#include "editor/plugin_config_dialog.h" -#include "editor/progress_dialog.h" -#include "editor/project_export.h" -#include "editor/project_settings_editor.h" #include "editor/property_editor.h" -#include "editor/quick_open.h" -#include "editor/reparent_dialog.h" -#include "editor/run_settings_dialog.h" #include "editor/scene_tree_dock.h" -#include "editor/scene_tree_editor.h" -#include "editor/script_create_dialog.h" -#include "editor/settings_config_dialog.h" -#include "scene/gui/center_container.h" -#include "scene/gui/control.h" -#include "scene/gui/dialogs.h" -#include "scene/gui/file_dialog.h" -#include "scene/gui/menu_button.h" -#include "scene/gui/panel.h" -#include "scene/gui/panel_container.h" -#include "scene/gui/separator.h" -#include "scene/gui/split_container.h" -#include "scene/gui/tab_container.h" -#include "scene/gui/tabs.h" -#include "scene/gui/texture_progress.h" -#include "scene/gui/tool_button.h" -#include "scene/gui/tree.h" -#include "scene/gui/viewport_container.h" typedef void (*EditorNodeInitCallback)(); typedef void (*EditorPluginInitializeCallback)(); typedef bool (*EditorBuildCallback)(); +class AcceptDialog; +class AudioStreamPreviewGenerator; +class BackgroundProgress; +class CenterContainer; +class ConfirmationDialog; +class Control; +class DependencyEditor; +class DependencyErrorDialog; +class EditorAbout; +class EditorExport; +class EditorFeatureProfileManager; +class EditorFileServer; +class EditorInspector; +class EditorLayoutsDialog; +class EditorLog; +class EditorPlugin; class EditorPluginList; +class EditorQuickOpen; +class EditorResourcePreview; +class EditorRunNative; +class EditorSettingsDialog; +class ExportTemplateManager; +class FileSystemDock; +class HSplitContainer; +class ImportDock; +class MenuButton; +class NodeDock; +class OrphanResourcesDialog; +class PaneDrag; +class Panel; +class PanelContainer; +class PluginConfigDialog; +class ProgressDialog; +class ProjectExportDialog; +class ProjectSettingsEditor; +class RunSettingsDialog; +class ScriptCreateDialog; +class TabContainer; +class Tabs; +class TextureProgress; +class ToolButton; +class VSplitContainer; class EditorNode : public Node { @@ -789,7 +782,7 @@ public: Ref<Texture> get_class_icon(const String &p_class, const String &p_fallback = "Object") const; void show_accept(const String &p_text, const String &p_title); - void show_warning(const String &p_text, const String &p_title = "Warning!"); + void show_warning(const String &p_text, const String &p_title = TTR("Warning!")); void _copy_warning(const String &p_str); diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp index 310a107ca9..b6ccacb03e 100644 --- a/editor/editor_plugin.cpp +++ b/editor/editor_plugin.cpp @@ -30,8 +30,11 @@ #include "editor_plugin.h" +#include "editor/editor_export.h" #include "editor/editor_node.h" #include "editor/editor_settings.h" +#include "editor/filesystem_dock.h" +#include "editor/project_settings_editor.h" #include "editor_resource_preview.h" #include "main/main.h" #include "plugins/canvas_item_editor_plugin.h" diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp index 514b3ff5d2..6de4030a30 100644 --- a/editor/editor_plugin_settings.cpp +++ b/editor/editor_plugin_settings.cpp @@ -35,6 +35,7 @@ #include "core/os/main_loop.h" #include "core/project_settings.h" #include "editor_node.h" +#include "editor_scale.h" #include "scene/gui/margin_container.h" void EditorPluginSettings::_notification(int p_what) { diff --git a/editor/editor_profiler.cpp b/editor/editor_profiler.cpp index 020cb3bada..c88fb4f937 100644 --- a/editor/editor_profiler.cpp +++ b/editor/editor_profiler.cpp @@ -397,6 +397,7 @@ void EditorProfiler::_update_frame() { item->set_metadata(0, it.signature); item->set_metadata(1, it.script); item->set_metadata(2, it.line); + item->set_text_align(2, TreeItem::ALIGN_RIGHT); item->set_tooltip(0, it.script + ":" + itos(it.line)); float time = dtime == DISPLAY_SELF_TIME ? it.self : it.total; diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index e14beabfa2..4ed87c67dc 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -31,8 +31,10 @@ #include "editor_properties.h" #include "editor/editor_resource_preview.h" +#include "editor/filesystem_dock.h" #include "editor_node.h" #include "editor_properties_array_dict.h" +#include "editor_scale.h" #include "scene/main/viewport.h" ///////////////////// NULL ///////////////////////// @@ -979,8 +981,6 @@ void EditorPropertyEasing::_draw_easing() { RID ci = easing_draw->get_canvas_item(); Size2 s = easing_draw->get_size(); - Rect2 r(Point2(), s); - r = r.grow(3); const int points = 48; diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 87e8a53e94..0bbc3424b5 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -34,6 +34,7 @@ #include "core/io/compression.h" #include "core/io/config_file.h" #include "core/io/file_access_memory.h" +#include "core/io/ip.h" #include "core/io/resource_loader.h" #include "core/io/resource_saver.h" #include "core/io/translation_loader_po.h" diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index f05c7709d4..6ac20e6719 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -587,11 +587,24 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_color("icon_color_pressed", "Button", icon_color_pressed); // OptionButton - theme->set_stylebox("normal", "OptionButton", style_widget); - theme->set_stylebox("hover", "OptionButton", style_widget_hover); - theme->set_stylebox("pressed", "OptionButton", style_widget_pressed); - theme->set_stylebox("focus", "OptionButton", style_widget_focus); - theme->set_stylebox("disabled", "OptionButton", style_widget_disabled); + Ref<StyleBoxFlat> style_option_button_normal = style_widget->duplicate(); + Ref<StyleBoxFlat> style_option_button_hover = style_widget_hover->duplicate(); + Ref<StyleBoxFlat> style_option_button_pressed = style_widget_pressed->duplicate(); + Ref<StyleBoxFlat> style_option_button_focus = style_widget_focus->duplicate(); + Ref<StyleBoxFlat> style_option_button_disabled = style_widget_disabled->duplicate(); + + int option_button_arrow_margin = theme->get_icon("GuiOptionArrow", "EditorIcons")->get_size().width + (default_margin_size + 4) * EDSCALE; + style_option_button_normal->set_default_margin(MARGIN_RIGHT, option_button_arrow_margin); + style_option_button_hover->set_default_margin(MARGIN_RIGHT, option_button_arrow_margin); + style_option_button_pressed->set_default_margin(MARGIN_RIGHT, option_button_arrow_margin); + style_option_button_focus->set_default_margin(MARGIN_RIGHT, option_button_arrow_margin); + style_option_button_disabled->set_default_margin(MARGIN_RIGHT, option_button_arrow_margin); + + theme->set_stylebox("normal", "OptionButton", style_option_button_normal); + theme->set_stylebox("hover", "OptionButton", style_option_button_hover); + theme->set_stylebox("pressed", "OptionButton", style_option_button_pressed); + theme->set_stylebox("focus", "OptionButton", style_option_button_focus); + theme->set_stylebox("disabled", "OptionButton", style_option_button_disabled); theme->set_color("font_color", "OptionButton", font_color); theme->set_color("font_color_hover", "OptionButton", font_color_hl); @@ -848,6 +861,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("normal", "LineEdit", style_widget); theme->set_stylebox("focus", "LineEdit", style_widget_focus); theme->set_stylebox("read_only", "LineEdit", style_widget_disabled); + theme->set_icon("clear", "LineEdit", theme->get_icon("GuiClose", "EditorIcons")); theme->set_color("read_only", "LineEdit", font_color_disabled); theme->set_color("font_color", "LineEdit", font_color); theme->set_color("font_color_selected", "LineEdit", mono_color); @@ -1093,6 +1107,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { // FileDialog theme->set_icon("folder", "FileDialog", theme->get_icon("Folder", "EditorIcons")); + theme->set_icon("parent_folder", "FileDialog", theme->get_icon("ArrowUp", "EditorIcons")); + theme->set_icon("reload", "FileDialog", theme->get_icon("Reload", "EditorIcons")); + theme->set_icon("toggle_hidden", "FileDialog", theme->get_icon("GuiVisibilityVisible", "EditorIcons")); // Use a different color for folder icons to make them easier to distinguish from files. // On a light theme, the icon will be dark, so we need to lighten it before blending it with the accent color. theme->set_color("folder_icon_modulate", "FileDialog", (dark_theme ? Color(1, 1, 1) : Color(4.25, 4.25, 4.25)).linear_interpolate(accent_color, 0.7)); diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp index f47f9b8b92..8f2b0cee2b 100644 --- a/editor/export_template_manager.cpp +++ b/editor/export_template_manager.cpp @@ -38,6 +38,8 @@ #include "core/version.h" #include "editor_node.h" #include "editor_scale.h" +#include "progress_dialog.h" +#include "scene/gui/link_button.h" void ExportTemplateManager::_update_template_list() { @@ -172,7 +174,7 @@ void ExportTemplateManager::_uninstall_template_confirm() { ERR_FAIL_COND_MSG(err != OK, "Could not remove all templates in '" + templates_dir.plus_file(to_remove) + "'."); da->change_dir(".."); - da->remove(to_remove); + err = da->remove(to_remove); ERR_FAIL_COND_MSG(err != OK, "Could not remove templates directory at '" + templates_dir.plus_file(to_remove) + "'."); _update_template_list(); @@ -691,7 +693,7 @@ ExportTemplateManager::ExportTemplateManager() { template_open = memnew(FileDialog); template_open->set_title(TTR("Select Template File")); - template_open->add_filter("*.tpz ; Godot Export Templates"); + template_open->add_filter("*.tpz ; " + TTR("Godot Export Templates")); template_open->set_access(FileDialog::ACCESS_FILESYSTEM); template_open->set_mode(FileDialog::MODE_OPEN_FILE); template_open->connect("file_selected", this, "_install_from_file", varray(true)); diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index eb3ae33065..5b08c3c567 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -36,8 +36,12 @@ #include "core/os/keyboard.h" #include "core/os/os.h" #include "core/project_settings.h" +#include "editor_feature_profile.h" #include "editor_node.h" +#include "editor_resource_preview.h" +#include "editor_scale.h" #include "editor_settings.h" +#include "import_dock.h" #include "scene/main/viewport.h" #include "scene/resources/packed_scene.h" @@ -1746,8 +1750,8 @@ void FileSystemDock::_file_option(int p_option, const Vector<String> &p_selected if (!fpath.ends_with("/")) { fpath = fpath.get_base_dir(); } - make_script_dialog_text->config("Node", fpath.plus_file("new_script.gd"), false); - make_script_dialog_text->popup_centered(Size2(300, 300) * EDSCALE); + make_script_dialog->config("Node", fpath.plus_file("new_script.gd"), false); + make_script_dialog->popup_centered(Size2(300, 300) * EDSCALE); } break; case FILE_COPY_PATH: { @@ -2682,9 +2686,9 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) { make_scene_dialog->register_text_enter(make_scene_dialog_text); make_scene_dialog->connect("confirmed", this, "_make_scene_confirm"); - make_script_dialog_text = memnew(ScriptCreateDialog); - make_script_dialog_text->set_title(TTR("Create Script")); - add_child(make_script_dialog_text); + make_script_dialog = memnew(ScriptCreateDialog); + make_script_dialog->set_title(TTR("Create Script")); + add_child(make_script_dialog); new_resource_dialog = memnew(CreateDialog); add_child(new_resource_dialog); diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h index d81a5133f2..f8e0eb4d71 100644 --- a/editor/filesystem_dock.h +++ b/editor/filesystem_dock.h @@ -140,7 +140,7 @@ private: ConfirmationDialog *make_scene_dialog; LineEdit *make_scene_dialog_text; ConfirmationDialog *overwrite_dialog; - ScriptCreateDialog *make_script_dialog_text; + ScriptCreateDialog *make_script_dialog; CreateDialog *new_resource_dialog; bool always_show_folders; diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp index 752e49a932..01d645e231 100644 --- a/editor/find_in_files.cpp +++ b/editor/find_in_files.cpp @@ -889,7 +889,6 @@ String FindInFilesPanel::get_replace_text() { void FindInFilesPanel::update_replace_buttons() { - String text = get_replace_text(); bool disabled = _finder->is_searching(); _replace_all_button->set_disabled(disabled); diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp index 74d81bf561..41878d18b0 100644 --- a/editor/groups_editor.cpp +++ b/editor/groups_editor.cpp @@ -31,6 +31,7 @@ #include "groups_editor.h" #include "editor/scene_tree_editor.h" #include "editor_node.h" +#include "editor_scale.h" #include "scene/gui/box_container.h" #include "scene/gui/label.h" #include "scene/resources/packed_scene.h" @@ -404,7 +405,7 @@ void GroupDialog::_bind_methods() { } GroupDialog::GroupDialog() { - set_custom_minimum_size(Size2(600, 400)); + set_custom_minimum_size(Size2(600, 400) * EDSCALE); scene_tree = SceneTree::get_singleton(); @@ -446,7 +447,7 @@ GroupDialog::GroupDialog() { add_group_text->connect("text_entered", this, "_add_group_pressed"); Button *add_group_button = memnew(Button); - add_group_button->set_text("Add"); + add_group_button->set_text(TTR("Add")); chbc->add_child(add_group_button); add_group_button->connect("pressed", this, "_add_group_pressed", varray(String())); diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp index d604a95320..2eef0a07b5 100644 --- a/editor/import/editor_import_collada.cpp +++ b/editor/import/editor_import_collada.cpp @@ -1015,8 +1015,6 @@ Error ColladaImport::_create_resources(Collada::Node *p_node, bool p_use_compres Path *path = Object::cast_to<Path>(node); - String curve = ng->source; - if (curve_cache.has(ng->source)) { path->set_curve(curve_cache[ng->source]); diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp index be066e15a5..796b950444 100644 --- a/editor/import/editor_scene_importer_gltf.cpp +++ b/editor/import/editor_scene_importer_gltf.cpp @@ -855,25 +855,24 @@ PoolVector<Color> EditorSceneImporterGLTF::_decode_accessor_as_color(GLTFState & const int type = state.accessors[p_accessor].type; ERR_FAIL_COND_V(!(type == TYPE_VEC3 || type == TYPE_VEC4), ret); - int components; - if (type == TYPE_VEC3) { - components = 3; - } else { // TYPE_VEC4 - components = 4; + int vec_len = 3; + if (type == TYPE_VEC4) { + vec_len = 4; } - ERR_FAIL_COND_V(attribs.size() % components != 0, ret); + ERR_FAIL_COND_V(attribs.size() % vec_len != 0, ret); const double *attribs_ptr = attribs.ptr(); - const int ret_size = attribs.size() / components; + const int ret_size = attribs.size() / vec_len; ret.resize(ret_size); { PoolVector<Color>::Write w = ret.write(); for (int i = 0; i < ret_size; i++) { - w[i] = Color(attribs_ptr[i * 4 + 0], attribs_ptr[i * 4 + 1], attribs_ptr[i * 4 + 2], components == 4 ? attribs_ptr[i * 4 + 3] : 1.0); + w[i] = Color(attribs_ptr[i * vec_len + 0], attribs_ptr[i * vec_len + 1], attribs_ptr[i * vec_len + 2], vec_len == 4 ? attribs_ptr[i * 4 + 3] : 1.0); } } return ret; } + Vector<Quat> EditorSceneImporterGLTF::_decode_accessor_as_quat(GLTFState &state, const GLTFAccessorIndex p_accessor, const bool p_for_vertex) { const Vector<double> attribs = _decode_accessor(state, p_accessor, p_for_vertex); diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp index 947e322075..7e9c9d958e 100644 --- a/editor/import_dock.cpp +++ b/editor/import_dock.cpp @@ -30,6 +30,7 @@ #include "import_dock.h" #include "editor_node.h" +#include "editor_resource_preview.h" class ImportDockParameters : public Object { GDCLASS(ImportDockParameters, Object); diff --git a/editor/node_dock.cpp b/editor/node_dock.cpp index 7ba1796600..e666135346 100644 --- a/editor/node_dock.cpp +++ b/editor/node_dock.cpp @@ -31,6 +31,7 @@ #include "node_dock.h" #include "editor_node.h" +#include "editor_scale.h" void NodeDock::show_groups() { diff --git a/editor/plugin_config_dialog.cpp b/editor/plugin_config_dialog.cpp index 971e746509..0291a08118 100644 --- a/editor/plugin_config_dialog.cpp +++ b/editor/plugin_config_dialog.cpp @@ -33,6 +33,8 @@ #include "core/os/dir_access.h" #include "editor/editor_node.h" #include "editor/editor_plugin.h" +#include "editor/editor_scale.h" +#include "editor/project_settings_editor.h" #include "modules/gdscript/gdscript.h" #include "scene/gui/grid_container.h" diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp index 7f023af848..f84d383606 100644 --- a/editor/plugins/abstract_polygon_2d_editor.cpp +++ b/editor/plugins/abstract_polygon_2d_editor.cpp @@ -32,6 +32,7 @@ #include "canvas_item_editor_plugin.h" #include "core/os/keyboard.h" +#include "editor/editor_scale.h" AbstractPolygon2DEditor::Vertex::Vertex() : polygon(-1), diff --git a/editor/plugins/animation_blend_space_1d_editor.cpp b/editor/plugins/animation_blend_space_1d_editor.cpp index 475e4c8d67..f684745d1d 100644 --- a/editor/plugins/animation_blend_space_1d_editor.cpp +++ b/editor/plugins/animation_blend_space_1d_editor.cpp @@ -31,6 +31,7 @@ #include "animation_blend_space_1d_editor.h" #include "core/os/keyboard.h" +#include "editor/editor_scale.h" #include "scene/animation/animation_blend_tree.h" StringName AnimationNodeBlendSpace1DEditor::get_blend_position_path() const { diff --git a/editor/plugins/animation_blend_space_2d_editor.cpp b/editor/plugins/animation_blend_space_2d_editor.cpp index b422e3e927..fe13bbdb99 100644 --- a/editor/plugins/animation_blend_space_2d_editor.cpp +++ b/editor/plugins/animation_blend_space_2d_editor.cpp @@ -35,6 +35,7 @@ #include "core/os/input.h" #include "core/os/keyboard.h" #include "core/project_settings.h" +#include "editor/editor_scale.h" #include "scene/animation/animation_blend_tree.h" #include "scene/animation/animation_player.h" #include "scene/gui/menu_button.h" diff --git a/editor/plugins/animation_blend_tree_editor_plugin.cpp b/editor/plugins/animation_blend_tree_editor_plugin.cpp index e147206ec4..d101dec642 100644 --- a/editor/plugins/animation_blend_tree_editor_plugin.cpp +++ b/editor/plugins/animation_blend_tree_editor_plugin.cpp @@ -35,9 +35,11 @@ #include "core/os/keyboard.h" #include "core/project_settings.h" #include "editor/editor_inspector.h" +#include "editor/editor_scale.h" #include "scene/animation/animation_player.h" #include "scene/gui/menu_button.h" #include "scene/gui/panel.h" +#include "scene/gui/progress_bar.h" #include "scene/main/viewport.h" void AnimationNodeBlendTreeEditor::add_custom_type(const String &p_name, const Ref<Script> &p_script) { diff --git a/editor/plugins/animation_blend_tree_editor_plugin.h b/editor/plugins/animation_blend_tree_editor_plugin.h index 77b57a50d0..df3e681322 100644 --- a/editor/plugins/animation_blend_tree_editor_plugin.h +++ b/editor/plugins/animation_blend_tree_editor_plugin.h @@ -41,6 +41,8 @@ #include "scene/gui/popup.h" #include "scene/gui/tree.h" +class ProgressBar; + class AnimationNodeBlendTreeEditor : public AnimationTreeNodeEditorPlugin { GDCLASS(AnimationNodeBlendTreeEditor, AnimationTreeNodeEditorPlugin); diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp index 80353bab01..16be9f0781 100644 --- a/editor/plugins/animation_player_editor_plugin.cpp +++ b/editor/plugins/animation_player_editor_plugin.cpp @@ -36,6 +36,7 @@ #include "core/os/keyboard.h" #include "core/project_settings.h" #include "editor/animation_track_editor.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" // For onion skinning. @@ -85,6 +86,9 @@ void AnimationPlayerEditor::_notification(int p_what) { track_editor->set_anim_pos(player->get_current_animation_position()); EditorNode::get_singleton()->get_inspector()->refresh(); + } else if (!player->is_valid()) { + // Reset timeline when the player has been stopped externally + frame->set_value(0); } else if (last_active) { // Need the last frame after it stopped. frame->set_value(player->get_current_animation_position()); @@ -1089,8 +1093,6 @@ void AnimationPlayerEditor::_animation_key_editor_seek(float p_pos, bool p_drag) if (!player->has_animation(player->get_assigned_animation())) return; - Ref<Animation> anim = player->get_animation(player->get_assigned_animation()); - updating = true; frame->set_value(Math::stepify(p_pos, _get_editor_step())); updating = false; diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp index ce400ad6dd..e56d9d070f 100644 --- a/editor/plugins/animation_state_machine_editor.cpp +++ b/editor/plugins/animation_state_machine_editor.cpp @@ -35,6 +35,7 @@ #include "core/os/input.h" #include "core/os/keyboard.h" #include "core/project_settings.h" +#include "editor/editor_scale.h" #include "scene/animation/animation_blend_tree.h" #include "scene/animation/animation_player.h" #include "scene/gui/menu_button.h" @@ -1329,7 +1330,7 @@ AnimationNodeStateMachineEditor::AnimationNodeStateMachineEditor() { top_hb->add_spacer(); - top_hb->add_child(memnew(Label("Play Mode:"))); + top_hb->add_child(memnew(Label(TTR("Play Mode:")))); play_mode = memnew(OptionButton); top_hb->add_child(play_mode); diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index 95767a96d8..a4d6071099 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -33,7 +33,9 @@ #include "core/io/json.h" #include "core/version.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" +#include "editor/project_settings_editor.h" void EditorAssetLibraryItem::configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, const String &p_cost) { @@ -652,12 +654,12 @@ const char *EditorAssetLibrary::sort_key[SORT_MAX] = { }; const char *EditorAssetLibrary::sort_text[SORT_MAX] = { - "Recently Updated", - "Least Recently Updated", - "Name (A-Z)", - "Name (Z-A)", - "License (A-Z)", // "cost" stores the SPDX license name in the Godot Asset Library. - "License (Z-A)", // "cost" stores the SPDX license name in the Godot Asset Library. + TTRC("Recently Updated"), + TTRC("Least Recently Updated"), + TTRC("Name (A-Z)"), + TTRC("Name (Z-A)"), + TTRC("License (A-Z)"), // "cost" stores the SPDX license name in the Godot Asset Library. + TTRC("License (Z-A)"), // "cost" stores the SPDX license name in the Godot Asset Library. }; const char *EditorAssetLibrary::support_key[SUPPORT_MAX] = { @@ -1383,7 +1385,7 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) { search_hb2->add_child(memnew(Label(TTR("Sort:") + " "))); sort = memnew(OptionButton); for (int i = 0; i < SORT_MAX; i++) { - sort->add_item(sort_text[i]); + sort->add_item(TTRGET(sort_text[i])); } search_hb2->add_child(sort); @@ -1494,6 +1496,7 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) { error_label->add_color_override("color", get_color("error_color", "Editor")); error_hb->add_child(error_label); error_tr = memnew(TextureRect); + error_tr->set_v_size_flags(Control::SIZE_SHRINK_CENTER); error_hb->add_child(error_tr); description = NULL; diff --git a/editor/plugins/audio_stream_editor_plugin.cpp b/editor/plugins/audio_stream_editor_plugin.cpp index 0ab3d26c85..c6a375d3aa 100644 --- a/editor/plugins/audio_stream_editor_plugin.cpp +++ b/editor/plugins/audio_stream_editor_plugin.cpp @@ -32,6 +32,7 @@ #include "core/io/resource_loader.h" #include "core/project_settings.h" +#include "editor/audio_stream_preview.h" #include "editor/editor_settings.h" void AudioStreamEditor::_notification(int p_what) { diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 9894c8c562..4512a228ef 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -35,6 +35,7 @@ #include "core/print_string.h" #include "core/project_settings.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" #include "editor/plugins/animation_player_editor_plugin.h" #include "editor/plugins/script_editor_plugin.h" @@ -47,6 +48,7 @@ #include "scene/2d/touch_screen_button.h" #include "scene/gui/grid_container.h" #include "scene/gui/nine_patch_rect.h" +#include "scene/gui/viewport_container.h" #include "scene/main/canvas_layer.h" #include "scene/main/viewport.h" #include "scene/resources/packed_scene.h" @@ -54,7 +56,7 @@ #define MIN_ZOOM 0.01 #define MAX_ZOOM 100 -#define RULER_WIDTH 15 * EDSCALE +#define RULER_WIDTH (15 * EDSCALE) #define SCALE_HANDLE_DISTANCE 25 class SnapDialog : public ConfirmationDialog { @@ -1111,7 +1113,11 @@ bool CanvasItemEditor::_gui_input_rulers_and_guides(const Ref<InputEvent> &p_eve if (dragged_guide_index >= 0) { vguides.remove(dragged_guide_index); undo_redo->create_action(TTR("Remove Vertical Guide")); - undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", vguides); + if (vguides.empty()) { + undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "remove_meta", "_edit_vertical_guides_"); + } else { + undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", vguides); + } undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", prev_vguides); undo_redo->add_undo_method(viewport, "update"); undo_redo->commit_action(); @@ -1140,7 +1146,11 @@ bool CanvasItemEditor::_gui_input_rulers_and_guides(const Ref<InputEvent> &p_eve if (dragged_guide_index >= 0) { hguides.remove(dragged_guide_index); undo_redo->create_action(TTR("Remove Horizontal Guide")); - undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", hguides); + if (hguides.empty()) { + undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "remove_meta", "_edit_horizontal_guides_"); + } else { + undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", hguides); + } undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", prev_hguides); undo_redo->add_undo_method(viewport, "update"); undo_redo->commit_action(); @@ -3202,7 +3212,7 @@ void CanvasItemEditor::_draw_selection() { int next = (i + 1) % 4; Vector2 ofs = ((endpoints[i] - endpoints[prev]).normalized() + ((endpoints[i] - endpoints[next]).normalized())).normalized(); - ofs *= 1.4144 * (select_handle->get_size().width / 2); + ofs *= Math_SQRT2 * (select_handle->get_size().width / 2); select_handle->draw(ci, (endpoints[i] + ofs - (select_handle->get_size() / 2)).floor()); @@ -3836,50 +3846,50 @@ void CanvasItemEditor::_notification(int p_what) { PopupMenu *p = presets_menu->get_popup(); p->clear(); - p->add_icon_item(get_icon("ControlAlignTopLeft", "EditorIcons"), "Top Left", ANCHORS_AND_MARGINS_PRESET_TOP_LEFT); - p->add_icon_item(get_icon("ControlAlignTopRight", "EditorIcons"), "Top Right", ANCHORS_AND_MARGINS_PRESET_TOP_RIGHT); - p->add_icon_item(get_icon("ControlAlignBottomRight", "EditorIcons"), "Bottom Right", ANCHORS_AND_MARGINS_PRESET_BOTTOM_RIGHT); - p->add_icon_item(get_icon("ControlAlignBottomLeft", "EditorIcons"), "Bottom Left", ANCHORS_AND_MARGINS_PRESET_BOTTOM_LEFT); + p->add_icon_item(get_icon("ControlAlignTopLeft", "EditorIcons"), TTR("Top Left"), ANCHORS_AND_MARGINS_PRESET_TOP_LEFT); + p->add_icon_item(get_icon("ControlAlignTopRight", "EditorIcons"), TTR("Top Right"), ANCHORS_AND_MARGINS_PRESET_TOP_RIGHT); + p->add_icon_item(get_icon("ControlAlignBottomRight", "EditorIcons"), TTR("Bottom Right"), ANCHORS_AND_MARGINS_PRESET_BOTTOM_RIGHT); + p->add_icon_item(get_icon("ControlAlignBottomLeft", "EditorIcons"), TTR("Bottom Left"), ANCHORS_AND_MARGINS_PRESET_BOTTOM_LEFT); p->add_separator(); - p->add_icon_item(get_icon("ControlAlignLeftCenter", "EditorIcons"), "Center Left", ANCHORS_AND_MARGINS_PRESET_CENTER_LEFT); - p->add_icon_item(get_icon("ControlAlignTopCenter", "EditorIcons"), "Center Top", ANCHORS_AND_MARGINS_PRESET_CENTER_TOP); - p->add_icon_item(get_icon("ControlAlignRightCenter", "EditorIcons"), "Center Right", ANCHORS_AND_MARGINS_PRESET_CENTER_RIGHT); - p->add_icon_item(get_icon("ControlAlignBottomCenter", "EditorIcons"), "Center Bottom", ANCHORS_AND_MARGINS_PRESET_CENTER_BOTTOM); - p->add_icon_item(get_icon("ControlAlignCenter", "EditorIcons"), "Center", ANCHORS_AND_MARGINS_PRESET_CENTER); + p->add_icon_item(get_icon("ControlAlignLeftCenter", "EditorIcons"), TTR("Center Left"), ANCHORS_AND_MARGINS_PRESET_CENTER_LEFT); + p->add_icon_item(get_icon("ControlAlignTopCenter", "EditorIcons"), TTR("Center Top"), ANCHORS_AND_MARGINS_PRESET_CENTER_TOP); + p->add_icon_item(get_icon("ControlAlignRightCenter", "EditorIcons"), TTR("Center Right"), ANCHORS_AND_MARGINS_PRESET_CENTER_RIGHT); + p->add_icon_item(get_icon("ControlAlignBottomCenter", "EditorIcons"), TTR("Center Bottom"), ANCHORS_AND_MARGINS_PRESET_CENTER_BOTTOM); + p->add_icon_item(get_icon("ControlAlignCenter", "EditorIcons"), TTR("Center"), ANCHORS_AND_MARGINS_PRESET_CENTER); p->add_separator(); - p->add_icon_item(get_icon("ControlAlignLeftWide", "EditorIcons"), "Left Wide", ANCHORS_AND_MARGINS_PRESET_LEFT_WIDE); - p->add_icon_item(get_icon("ControlAlignTopWide", "EditorIcons"), "Top Wide", ANCHORS_AND_MARGINS_PRESET_TOP_WIDE); - p->add_icon_item(get_icon("ControlAlignRightWide", "EditorIcons"), "Right Wide", ANCHORS_AND_MARGINS_PRESET_RIGHT_WIDE); - p->add_icon_item(get_icon("ControlAlignBottomWide", "EditorIcons"), "Bottom Wide", ANCHORS_AND_MARGINS_PRESET_BOTTOM_WIDE); - p->add_icon_item(get_icon("ControlVcenterWide", "EditorIcons"), "VCenter Wide ", ANCHORS_AND_MARGINS_PRESET_VCENTER_WIDE); - p->add_icon_item(get_icon("ControlHcenterWide", "EditorIcons"), "HCenter Wide ", ANCHORS_AND_MARGINS_PRESET_HCENTER_WIDE); + p->add_icon_item(get_icon("ControlAlignLeftWide", "EditorIcons"), TTR("Left Wide"), ANCHORS_AND_MARGINS_PRESET_LEFT_WIDE); + p->add_icon_item(get_icon("ControlAlignTopWide", "EditorIcons"), TTR("Top Wide"), ANCHORS_AND_MARGINS_PRESET_TOP_WIDE); + p->add_icon_item(get_icon("ControlAlignRightWide", "EditorIcons"), TTR("Right Wide"), ANCHORS_AND_MARGINS_PRESET_RIGHT_WIDE); + p->add_icon_item(get_icon("ControlAlignBottomWide", "EditorIcons"), TTR("Bottom Wide"), ANCHORS_AND_MARGINS_PRESET_BOTTOM_WIDE); + p->add_icon_item(get_icon("ControlVcenterWide", "EditorIcons"), TTR("VCenter Wide"), ANCHORS_AND_MARGINS_PRESET_VCENTER_WIDE); + p->add_icon_item(get_icon("ControlHcenterWide", "EditorIcons"), TTR("HCenter Wide"), ANCHORS_AND_MARGINS_PRESET_HCENTER_WIDE); p->add_separator(); - p->add_icon_item(get_icon("ControlAlignWide", "EditorIcons"), "Full Rect", ANCHORS_AND_MARGINS_PRESET_WIDE); - p->add_icon_item(get_icon("Anchor", "EditorIcons"), "Keep Ratio", ANCHORS_AND_MARGINS_PRESET_KEEP_RATIO); + p->add_icon_item(get_icon("ControlAlignWide", "EditorIcons"), TTR("Full Rect"), ANCHORS_AND_MARGINS_PRESET_WIDE); + p->add_icon_item(get_icon("Anchor", "EditorIcons"), TTR("Keep Ratio"), ANCHORS_AND_MARGINS_PRESET_KEEP_RATIO); p->add_separator(); p->add_submenu_item(TTR("Anchors only"), "Anchors"); p->set_item_icon(21, get_icon("Anchor", "EditorIcons")); anchors_popup->clear(); - anchors_popup->add_icon_item(get_icon("ControlAlignTopLeft", "EditorIcons"), "Top Left", ANCHORS_PRESET_TOP_LEFT); - anchors_popup->add_icon_item(get_icon("ControlAlignTopRight", "EditorIcons"), "Top Right", ANCHORS_PRESET_TOP_RIGHT); - anchors_popup->add_icon_item(get_icon("ControlAlignBottomRight", "EditorIcons"), "Bottom Right", ANCHORS_PRESET_BOTTOM_RIGHT); - anchors_popup->add_icon_item(get_icon("ControlAlignBottomLeft", "EditorIcons"), "Bottom Left", ANCHORS_PRESET_BOTTOM_LEFT); + anchors_popup->add_icon_item(get_icon("ControlAlignTopLeft", "EditorIcons"), TTR("Top Left"), ANCHORS_PRESET_TOP_LEFT); + anchors_popup->add_icon_item(get_icon("ControlAlignTopRight", "EditorIcons"), TTR("Top Right"), ANCHORS_PRESET_TOP_RIGHT); + anchors_popup->add_icon_item(get_icon("ControlAlignBottomRight", "EditorIcons"), TTR("Bottom Right"), ANCHORS_PRESET_BOTTOM_RIGHT); + anchors_popup->add_icon_item(get_icon("ControlAlignBottomLeft", "EditorIcons"), TTR("Bottom Left"), ANCHORS_PRESET_BOTTOM_LEFT); anchors_popup->add_separator(); - anchors_popup->add_icon_item(get_icon("ControlAlignLeftCenter", "EditorIcons"), "Center Left", ANCHORS_PRESET_CENTER_LEFT); - anchors_popup->add_icon_item(get_icon("ControlAlignTopCenter", "EditorIcons"), "Center Top", ANCHORS_PRESET_CENTER_TOP); - anchors_popup->add_icon_item(get_icon("ControlAlignRightCenter", "EditorIcons"), "Center Right", ANCHORS_PRESET_CENTER_RIGHT); - anchors_popup->add_icon_item(get_icon("ControlAlignBottomCenter", "EditorIcons"), "Center Bottom", ANCHORS_PRESET_CENTER_BOTTOM); - anchors_popup->add_icon_item(get_icon("ControlAlignCenter", "EditorIcons"), "Center", ANCHORS_PRESET_CENTER); + anchors_popup->add_icon_item(get_icon("ControlAlignLeftCenter", "EditorIcons"), TTR("Center Left"), ANCHORS_PRESET_CENTER_LEFT); + anchors_popup->add_icon_item(get_icon("ControlAlignTopCenter", "EditorIcons"), TTR("Center Top"), ANCHORS_PRESET_CENTER_TOP); + anchors_popup->add_icon_item(get_icon("ControlAlignRightCenter", "EditorIcons"), TTR("Center Right"), ANCHORS_PRESET_CENTER_RIGHT); + anchors_popup->add_icon_item(get_icon("ControlAlignBottomCenter", "EditorIcons"), TTR("Center Bottom"), ANCHORS_PRESET_CENTER_BOTTOM); + anchors_popup->add_icon_item(get_icon("ControlAlignCenter", "EditorIcons"), TTR("Center"), ANCHORS_PRESET_CENTER); anchors_popup->add_separator(); - anchors_popup->add_icon_item(get_icon("ControlAlignLeftWide", "EditorIcons"), "Left Wide", ANCHORS_PRESET_LEFT_WIDE); - anchors_popup->add_icon_item(get_icon("ControlAlignTopWide", "EditorIcons"), "Top Wide", ANCHORS_PRESET_TOP_WIDE); - anchors_popup->add_icon_item(get_icon("ControlAlignRightWide", "EditorIcons"), "Right Wide", ANCHORS_PRESET_RIGHT_WIDE); - anchors_popup->add_icon_item(get_icon("ControlAlignBottomWide", "EditorIcons"), "Bottom Wide", ANCHORS_PRESET_BOTTOM_WIDE); - anchors_popup->add_icon_item(get_icon("ControlVcenterWide", "EditorIcons"), "VCenter Wide ", ANCHORS_PRESET_VCENTER_WIDE); - anchors_popup->add_icon_item(get_icon("ControlHcenterWide", "EditorIcons"), "HCenter Wide ", ANCHORS_PRESET_HCENTER_WIDE); + anchors_popup->add_icon_item(get_icon("ControlAlignLeftWide", "EditorIcons"), TTR("Left Wide"), ANCHORS_PRESET_LEFT_WIDE); + anchors_popup->add_icon_item(get_icon("ControlAlignTopWide", "EditorIcons"), TTR("Top Wide"), ANCHORS_PRESET_TOP_WIDE); + anchors_popup->add_icon_item(get_icon("ControlAlignRightWide", "EditorIcons"), TTR("Right Wide"), ANCHORS_PRESET_RIGHT_WIDE); + anchors_popup->add_icon_item(get_icon("ControlAlignBottomWide", "EditorIcons"), TTR("Bottom Wide"), ANCHORS_PRESET_BOTTOM_WIDE); + anchors_popup->add_icon_item(get_icon("ControlVcenterWide", "EditorIcons"), TTR("VCenter Wide"), ANCHORS_PRESET_VCENTER_WIDE); + anchors_popup->add_icon_item(get_icon("ControlHcenterWide", "EditorIcons"), TTR("HCenter Wide"), ANCHORS_PRESET_HCENTER_WIDE); anchors_popup->add_separator(); - anchors_popup->add_icon_item(get_icon("ControlAlignWide", "EditorIcons"), "Full Rect", ANCHORS_PRESET_WIDE); + anchors_popup->add_icon_item(get_icon("ControlAlignWide", "EditorIcons"), TTR("Full Rect"), ANCHORS_PRESET_WIDE); anchor_mode_button->set_icon(get_icon("Anchor", "EditorIcons")); } @@ -4068,10 +4078,9 @@ void CanvasItemEditor::_popup_warning_depop(Control *p_control) { ERR_FAIL_COND(!popup_temporarily_timers.has(p_control)); Timer *timer = popup_temporarily_timers[p_control]; + timer->queue_delete(); p_control->hide(); - remove_child(timer); popup_temporarily_timers.erase(p_control); - memdelete(timer); info_overlay->set_margin(MARGIN_LEFT, (show_rulers ? RULER_WIDTH : 0) + 10); } @@ -4752,19 +4761,21 @@ void CanvasItemEditor::_popup_callback(int p_op) { } break; case CLEAR_GUIDES: { - if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_horizontal_guides_") || EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) { + Node *const root = EditorNode::get_singleton()->get_edited_scene(); + + if (root && (root->has_meta("_edit_horizontal_guides_") || root->has_meta("_edit_vertical_guides_"))) { undo_redo->create_action(TTR("Clear Guides")); - if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_horizontal_guides_")) { - Array hguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_horizontal_guides_"); + if (root->has_meta("_edit_horizontal_guides_")) { + Array hguides = root->get_meta("_edit_horizontal_guides_"); - undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", Array()); - undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", hguides); + undo_redo->add_do_method(root, "remove_meta", "_edit_horizontal_guides_"); + undo_redo->add_undo_method(root, "set_meta", "_edit_horizontal_guides_", hguides); } - if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) { - Array vguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_vertical_guides_"); + if (root->has_meta("_edit_vertical_guides_")) { + Array vguides = root->get_meta("_edit_vertical_guides_"); - undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", Array()); - undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", vguides); + undo_redo->add_do_method(root, "remove_meta", "_edit_vertical_guides_"); + undo_redo->add_undo_method(root, "set_meta", "_edit_vertical_guides_", vguides); } undo_redo->add_undo_method(viewport, "update"); undo_redo->commit_action(); @@ -4928,8 +4939,8 @@ void CanvasItemEditor::_focus_selection(int p_op) { center = rect.position + rect.size / 2; Vector2 offset = viewport->get_size() / 2 - editor->get_scene_root()->get_global_canvas_transform().xform(center); - view_offset.x -= offset.x / zoom; - view_offset.y -= offset.y / zoom; + view_offset.x -= Math::round(offset.x / zoom); + view_offset.y -= Math::round(offset.y / zoom); update_viewport(); } else { // VIEW_FRAME_TO_SELECTION diff --git a/editor/plugins/curve_editor_plugin.cpp b/editor/plugins/curve_editor_plugin.cpp index 727d92ba05..9b0ddab0ce 100644 --- a/editor/plugins/curve_editor_plugin.cpp +++ b/editor/plugins/curve_editor_plugin.cpp @@ -34,6 +34,7 @@ #include "core/core_string_names.h" #include "core/os/input.h" #include "core/os/keyboard.h" +#include "editor/editor_scale.h" CurveEditor::CurveEditor() { _selected_point = -1; @@ -510,8 +511,8 @@ void CurveEditor::set_hover_point_index(int index) { } void CurveEditor::update_view_transform() { - Vector2 control_size = get_size(); - const real_t margin = 24; + Ref<Font> font = get_font("font", "Label"); + const real_t margin = font->get_height() + 2 * EDSCALE; float min_y = 0; float max_y = 1; @@ -521,15 +522,19 @@ void CurveEditor::update_view_transform() { max_y = _curve_ref->get_max_value(); } - Rect2 world_rect = Rect2(Curve::MIN_X, min_y, Curve::MAX_X, max_y - min_y); - Vector2 wm = Vector2(margin, margin) / control_size; - wm.y *= (max_y - min_y); - world_rect.position -= wm; - world_rect.size += 2.0 * wm; + const Rect2 world_rect = Rect2(Curve::MIN_X, min_y, Curve::MAX_X, max_y - min_y); + const Size2 view_margin(margin, margin); + const Size2 view_size = get_size() - view_margin * 2; + const Vector2 scale = view_size / world_rect.size; + + Transform2D world_trans; + world_trans.translate(-world_rect.position - Vector2(0, world_rect.size.y)); + world_trans.scale(Vector2(scale.x, -scale.y)); + + Transform2D view_trans; + view_trans.translate(view_margin); - _world_to_view = Transform2D(); - _world_to_view.translate(-world_rect.position - Vector2(0, world_rect.size.y)); - _world_to_view.scale(Vector2(control_size.x, -control_size.y) / world_rect.size); + _world_to_view = view_trans * world_trans; } Vector2 CurveEditor::get_tangent_view_pos(int i, TangentIndex tangent) const { @@ -735,10 +740,10 @@ void CurveEditor::_draw() { if (_selected_point > 0 && _selected_point + 1 < curve.get_point_count()) { text_color.a *= 0.4; - draw_string(font, Vector2(50, font_height), TTR("Hold Shift to edit tangents individually"), text_color); + draw_string(font, Vector2(50 * EDSCALE, font_height), TTR("Hold Shift to edit tangents individually"), text_color); } else if (curve.get_point_count() == 0) { text_color.a *= 0.4; - draw_string(font, Vector2(50, font_height), TTR("Right click to add point"), text_color); + draw_string(font, Vector2(50 * EDSCALE, font_height), TTR("Right click to add point"), text_color); } } diff --git a/editor/plugins/curve_editor_plugin.h b/editor/plugins/curve_editor_plugin.h index 9071146863..bf655400db 100644 --- a/editor/plugins/curve_editor_plugin.h +++ b/editor/plugins/curve_editor_plugin.h @@ -33,6 +33,7 @@ #include "editor/editor_node.h" #include "editor/editor_plugin.h" +#include "editor/editor_resource_preview.h" #include "scene/resources/curve.h" // Edits a y(x) curve diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp index 204562ac38..75ae050612 100644 --- a/editor/plugins/editor_preview_plugins.cpp +++ b/editor/plugins/editor_preview_plugins.cpp @@ -40,6 +40,7 @@ #include "scene/resources/dynamic_font.h" #include "scene/resources/material.h" #include "scene/resources/mesh.h" +#include "servers/audio/audio_stream.h" void post_process_preview(Ref<Image> p_image) { diff --git a/editor/plugins/gradient_editor_plugin.cpp b/editor/plugins/gradient_editor_plugin.cpp index e85c475ad7..d4c6622674 100644 --- a/editor/plugins/gradient_editor_plugin.cpp +++ b/editor/plugins/gradient_editor_plugin.cpp @@ -31,6 +31,7 @@ #include "gradient_editor_plugin.h" #include "canvas_item_editor_plugin.h" +#include "editor/editor_scale.h" #include "spatial_editor_plugin.h" Size2 GradientEditor::get_minimum_size() const { diff --git a/editor/plugins/item_list_editor_plugin.cpp b/editor/plugins/item_list_editor_plugin.cpp index b3f3ccf501..2c1cb32143 100644 --- a/editor/plugins/item_list_editor_plugin.cpp +++ b/editor/plugins/item_list_editor_plugin.cpp @@ -31,6 +31,7 @@ #include "item_list_editor_plugin.h" #include "core/io/resource_loader.h" +#include "editor/editor_scale.h" bool ItemListPlugin::_set(const StringName &p_name, const Variant &p_value) { diff --git a/editor/plugins/material_editor_plugin.cpp b/editor/plugins/material_editor_plugin.cpp index e125c18ef1..840787dda1 100644 --- a/editor/plugins/material_editor_plugin.cpp +++ b/editor/plugins/material_editor_plugin.cpp @@ -30,6 +30,8 @@ #include "material_editor_plugin.h" +#include "editor/editor_scale.h" +#include "scene/gui/viewport_container.h" #include "scene/resources/particles_material.h" void MaterialEditor::_notification(int p_what) { diff --git a/editor/plugins/material_editor_plugin.h b/editor/plugins/material_editor_plugin.h index 1405127ab3..c54c780c7e 100644 --- a/editor/plugins/material_editor_plugin.h +++ b/editor/plugins/material_editor_plugin.h @@ -41,6 +41,8 @@ #include "scene/3d/mesh_instance.h" #include "scene/resources/material.h" +class ViewportContainer; + class MaterialEditor : public Control { GDCLASS(MaterialEditor, Control); diff --git a/editor/plugins/mesh_editor_plugin.cpp b/editor/plugins/mesh_editor_plugin.cpp index 442110cc84..d3bdca14e7 100644 --- a/editor/plugins/mesh_editor_plugin.cpp +++ b/editor/plugins/mesh_editor_plugin.cpp @@ -30,6 +30,8 @@ #include "mesh_editor_plugin.h" +#include "editor/editor_scale.h" + void MeshEditor::_gui_input(Ref<InputEvent> p_event) { Ref<InputEventMouseMotion> mm = p_event; diff --git a/editor/plugins/mesh_editor_plugin.h b/editor/plugins/mesh_editor_plugin.h index 4c2a81ed70..1a2741d00a 100644 --- a/editor/plugins/mesh_editor_plugin.h +++ b/editor/plugins/mesh_editor_plugin.h @@ -36,6 +36,7 @@ #include "scene/3d/camera.h" #include "scene/3d/light.h" #include "scene/3d/mesh_instance.h" +#include "scene/gui/viewport_container.h" #include "scene/resources/material.h" class MeshEditor : public ViewportContainer { diff --git a/editor/plugins/mesh_instance_editor_plugin.cpp b/editor/plugins/mesh_instance_editor_plugin.cpp index 22df8fd8f4..3f9e1da5e7 100644 --- a/editor/plugins/mesh_instance_editor_plugin.cpp +++ b/editor/plugins/mesh_instance_editor_plugin.cpp @@ -30,6 +30,7 @@ #include "mesh_instance_editor_plugin.h" +#include "editor/editor_scale.h" #include "scene/3d/collision_shape.h" #include "scene/3d/navigation_mesh.h" #include "scene/3d/physics_body.h" diff --git a/editor/plugins/mesh_library_editor_plugin.cpp b/editor/plugins/mesh_library_editor_plugin.cpp index 7fbb35e565..fc3ca38104 100644 --- a/editor/plugins/mesh_library_editor_plugin.cpp +++ b/editor/plugins/mesh_library_editor_plugin.cpp @@ -273,7 +273,7 @@ MeshLibraryEditor::MeshLibraryEditor(EditorNode *p_editor) { menu = memnew(MenuButton); SpatialEditor::get_singleton()->add_control_to_menu_panel(menu); menu->set_position(Point2(1, 1)); - menu->set_text("Mesh Library"); + menu->set_text(TTR("Mesh Library")); menu->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("MeshLibrary", "EditorIcons")); menu->get_popup()->add_item(TTR("Add Item"), MENU_OPTION_ADD_ITEM); menu->get_popup()->add_item(TTR("Remove Selected Item"), MENU_OPTION_REMOVE_ITEM); diff --git a/editor/plugins/path_2d_editor_plugin.cpp b/editor/plugins/path_2d_editor_plugin.cpp index f02dc0bd6d..dcb32641e8 100644 --- a/editor/plugins/path_2d_editor_plugin.cpp +++ b/editor/plugins/path_2d_editor_plugin.cpp @@ -33,6 +33,7 @@ #include "canvas_item_editor_plugin.h" #include "core/os/file_access.h" #include "core/os/keyboard.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" void Path2DEditor::_notification(int p_what) { diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp index bd532a6418..5512366f4f 100644 --- a/editor/plugins/polygon_2d_editor_plugin.cpp +++ b/editor/plugins/polygon_2d_editor_plugin.cpp @@ -34,6 +34,7 @@ #include "core/os/file_access.h" #include "core/os/input.h" #include "core/os/keyboard.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" #include "scene/2d/skeleton_2d.h" @@ -1444,7 +1445,7 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) : uv_mode_hb->add_child(uv_icon_zoom); uv_zoom = memnew(HSlider); uv_zoom->set_min(0.01); - uv_zoom->set_max(4); + uv_zoom->set_max(16); uv_zoom->set_value(1); uv_zoom->set_step(0.01); uv_zoom->set_v_size_flags(SIZE_SHRINK_CENTER); diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 54bf8ce5a2..b809397b95 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -37,7 +37,10 @@ #include "core/os/os.h" #include "core/project_settings.h" #include "editor/editor_node.h" +#include "editor/editor_run_script.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" +#include "editor/filesystem_dock.h" #include "editor/find_in_files.h" #include "editor/node_dock.h" #include "editor/plugins/shader_editor_plugin.h" @@ -987,8 +990,18 @@ Array ScriptEditor::_get_open_scripts() const { return ret; } +bool ScriptEditor::toggle_scripts_panel() { + list_split->set_visible(!list_split->is_visible()); + return list_split->is_visible(); +} + +bool ScriptEditor::is_scripts_panel_toggled() { + return list_split->is_visible(); +} + void ScriptEditor::_menu_option(int p_option) { + ScriptEditorBase *current = _get_current_editor(); switch (p_option) { case FILE_NEW: { script_create_dialog->config("Node", "new_script"); @@ -1127,11 +1140,18 @@ void ScriptEditor::_menu_option(int p_option) { debug_menu->get_popup()->set_item_checked(debug_menu->get_popup()->get_item_index(DEBUG_WITH_EXTERNAL_EDITOR), debug_with_external_editor); } break; case TOGGLE_SCRIPTS_PANEL: { - list_split->set_visible(!list_split->is_visible()); + if (current) { + ScriptTextEditor *editor = Object::cast_to<ScriptTextEditor>(current); + toggle_scripts_panel(); + if (editor) { + editor->update_toggle_scripts_button(); + } + } else { + toggle_scripts_panel(); + } } } - ScriptEditorBase *current = _get_current_editor(); if (current) { switch (p_option) { @@ -1208,7 +1228,7 @@ void ScriptEditor::_menu_option(int p_option) { Ref<Script> scr = current->get_edited_resource(); if (scr == NULL || scr.is_null()) { - EditorNode::get_singleton()->show_warning("Can't obtain the script for running."); + EditorNode::get_singleton()->show_warning(TTR("Can't obtain the script for running.")); break; } @@ -1216,18 +1236,18 @@ void ScriptEditor::_menu_option(int p_option) { Error err = scr->reload(false); //hard reload script before running always if (err != OK) { - EditorNode::get_singleton()->show_warning("Script failed reloading, check console for errors."); + EditorNode::get_singleton()->show_warning(TTR("Script failed reloading, check console for errors.")); return; } if (!scr->is_tool()) { - EditorNode::get_singleton()->show_warning("Script is not in tool mode, will not be able to run."); + EditorNode::get_singleton()->show_warning(TTR("Script is not in tool mode, will not be able to run.")); return; } if (!ClassDB::is_parent_class(scr->get_instance_base_type(), "EditorScript")) { - EditorNode::get_singleton()->show_warning("To run this script, it must inherit EditorScript and be set to tool mode."); + EditorNode::get_singleton()->show_warning(TTR("To run this script, it must inherit EditorScript and be set to tool mode.")); return; } diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h index 294294fc56..e2fd67676b 100644 --- a/editor/plugins/script_editor_plugin.h +++ b/editor/plugins/script_editor_plugin.h @@ -419,6 +419,8 @@ protected: public: static ScriptEditor *get_singleton() { return script_editor; } + bool toggle_scripts_panel(); + bool is_scripts_panel_toggled(); void ensure_focus_current(); void apply_scripts() const; void open_script_create_dialog(const String &p_base_name, const String &p_base_path); diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index f63445dab8..4c23e3fcd2 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -33,6 +33,7 @@ #include "core/math/expression.h" #include "core/os/keyboard.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" #include "editor/script_editor_debugger.h" @@ -707,6 +708,7 @@ void ScriptTextEditor::_bookmark_item_pressed(int p_idx) { _edit_option(bookmarks_menu->get_item_id(p_idx)); } else { code_editor->goto_line(bookmarks_menu->get_item_metadata(p_idx)); + code_editor->get_text_edit()->call_deferred("center_viewport_to_cursor"); //Need to be deferred, because goto uses call_deferred(). } } @@ -856,6 +858,7 @@ void ScriptTextEditor::_breakpoint_item_pressed(int p_idx) { _edit_option(breakpoints_menu->get_item_id(p_idx)); } else { code_editor->goto_line(breakpoints_menu->get_item_metadata(p_idx)); + code_editor->get_text_edit()->call_deferred("center_viewport_to_cursor"); //Need to be deferred, because goto uses call_deferred(). } } @@ -964,6 +967,12 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c } } +void ScriptTextEditor::update_toggle_scripts_button() { + if (code_editor != NULL) { + code_editor->update_toggle_scripts_button(); + } +} + void ScriptTextEditor::_update_connected_methods() { TextEdit *text_edit = code_editor->get_text_edit(); text_edit->clear_info_icons(); @@ -1301,12 +1310,14 @@ void ScriptTextEditor::_edit_option(int p_op) { if (line >= bpoints[bpoints.size() - 1]) { tx->unfold_line(bpoints[0]); tx->cursor_set_line(bpoints[0]); + tx->center_viewport_to_cursor(); } else { for (List<int>::Element *E = bpoints.front(); E; E = E->next()) { int bline = E->get(); if (bline > line) { tx->unfold_line(bline); tx->cursor_set_line(bline); + tx->center_viewport_to_cursor(); return; } } @@ -1326,12 +1337,14 @@ void ScriptTextEditor::_edit_option(int p_op) { if (line <= bpoints[0]) { tx->unfold_line(bpoints[bpoints.size() - 1]); tx->cursor_set_line(bpoints[bpoints.size() - 1]); + tx->center_viewport_to_cursor(); } else { for (List<int>::Element *E = bpoints.back(); E; E = E->prev()) { int bline = E->get(); if (bline < line) { tx->unfold_line(bline); tx->cursor_set_line(bline); + tx->center_viewport_to_cursor(); return; } } @@ -1756,6 +1769,7 @@ ScriptTextEditor::ScriptTextEditor() { code_editor->get_text_edit()->connect("symbol_lookup", this, "_lookup_symbol"); code_editor->get_text_edit()->connect("info_clicked", this, "_lookup_connections"); code_editor->set_v_size_flags(SIZE_EXPAND_FILL); + code_editor->show_toggle_scripts_button(); warnings_panel = memnew(RichTextLabel); editor_box->add_child(warnings_panel); diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h index 2ba0be8feb..ac29e90c02 100644 --- a/editor/plugins/script_text_editor.h +++ b/editor/plugins/script_text_editor.h @@ -191,6 +191,7 @@ public: virtual void add_syntax_highlighter(SyntaxHighlighter *p_highlighter); virtual void set_syntax_highlighter(SyntaxHighlighter *p_highlighter); + void update_toggle_scripts_button(); virtual void apply_code(); virtual RES get_edited_resource() const; diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index 10e4559805..a7c1becabd 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -37,6 +37,7 @@ #include "core/project_settings.h" #include "core/sort_array.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" #include "editor/plugins/animation_player_editor_plugin.h" #include "editor/plugins/script_editor_plugin.h" @@ -47,6 +48,7 @@ #include "scene/3d/mesh_instance.h" #include "scene/3d/physics_body.h" #include "scene/3d/visual_instance.h" +#include "scene/gui/viewport_container.h" #include "scene/resources/packed_scene.h" #include "scene/resources/surface_tool.h" @@ -298,6 +300,7 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, Vector3 ray = _get_ray(p_pos); Vector3 pos = _get_ray_pos(p_pos); + Vector2 shrinked_pos = p_pos / viewport_container->get_stretch_shrink(); Vector<ObjectID> instances = VisualServer::get_singleton()->instances_cull_ray(pos, ray, get_tree()->get_root()->get_world()->get_scenario()); Set<Ref<EditorSpatialGizmo> > found_gizmos; @@ -326,7 +329,7 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, Vector3 normal; int handle = -1; - bool inters = seg->intersect_ray(camera, p_pos, point, normal, &handle, p_alt_select); + bool inters = seg->intersect_ray(camera, shrinked_pos, point, normal, &handle, p_alt_select); if (!inters) continue; diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h index 65e3c32ca8..ecb7363401 100644 --- a/editor/plugins/spatial_editor_plugin.h +++ b/editor/plugins/spatial_editor_plugin.h @@ -41,6 +41,7 @@ class Camera; class SpatialEditor; class EditorSpatialGizmoPlugin; +class ViewportContainer; class EditorSpatialGizmo : public SpatialGizmo { diff --git a/editor/plugins/sprite_editor_plugin.cpp b/editor/plugins/sprite_editor_plugin.cpp index 40734cffc4..6846b810a0 100644 --- a/editor/plugins/sprite_editor_plugin.cpp +++ b/editor/plugins/sprite_editor_plugin.cpp @@ -31,6 +31,7 @@ #include "sprite_editor_plugin.h" #include "canvas_item_editor_plugin.h" +#include "editor/editor_scale.h" #include "scene/2d/collision_polygon_2d.h" #include "scene/2d/light_occluder_2d.h" #include "scene/2d/mesh_instance_2d.h" diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp index 34780af59e..27a5a1fb42 100644 --- a/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/editor/plugins/sprite_frames_editor_plugin.cpp @@ -32,8 +32,10 @@ #include "core/io/resource_loader.h" #include "core/project_settings.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" #include "scene/3d/sprite_3d.h" +#include "scene/gui/center_container.h" void SpriteFramesEditor::_gui_input(Ref<InputEvent> p_event) { } @@ -403,7 +405,6 @@ void SpriteFramesEditor::_up_pressed() { sel = to_move; sel -= 1; - Ref<Texture> r = frames->get_frame(edited_anim, to_move); undo_redo->create_action(TTR("Delete Resource")); undo_redo->add_do_method(frames, "set_frame", edited_anim, to_move, frames->get_frame(edited_anim, to_move - 1)); undo_redo->add_do_method(frames, "set_frame", edited_anim, to_move - 1, frames->get_frame(edited_anim, to_move)); @@ -428,7 +429,6 @@ void SpriteFramesEditor::_down_pressed() { sel = to_move; sel += 1; - Ref<Texture> r = frames->get_frame(edited_anim, to_move); undo_redo->create_action(TTR("Delete Resource")); undo_redo->add_do_method(frames, "set_frame", edited_anim, to_move, frames->get_frame(edited_anim, to_move + 1)); undo_redo->add_do_method(frames, "set_frame", edited_anim, to_move + 1, frames->get_frame(edited_anim, to_move)); diff --git a/editor/plugins/style_box_editor_plugin.cpp b/editor/plugins/style_box_editor_plugin.cpp index 7e5e278689..90a47999e0 100644 --- a/editor/plugins/style_box_editor_plugin.cpp +++ b/editor/plugins/style_box_editor_plugin.cpp @@ -30,6 +30,8 @@ #include "style_box_editor_plugin.h" +#include "editor/editor_scale.h" + bool EditorInspectorPluginStyleBox::can_handle(Object *p_object) { return Object::cast_to<StyleBox>(p_object) != NULL; diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp index a2f4040152..f576eb96c9 100644 --- a/editor/plugins/texture_region_editor_plugin.cpp +++ b/editor/plugins/texture_region_editor_plugin.cpp @@ -33,6 +33,7 @@ #include "core/core_string_names.h" #include "core/os/input.h" #include "core/os/keyboard.h" +#include "editor/editor_scale.h" #include "scene/gui/check_box.h" /** @@ -150,7 +151,7 @@ void TextureRegionEditor::_region_draw() { int next = (i + 1) % 4; Vector2 ofs = ((endpoints[i] - endpoints[prev]).normalized() + ((endpoints[i] - endpoints[next]).normalized())).normalized(); - ofs *= 1.4144 * (select_handle->get_size().width / 2); + ofs *= Math_SQRT2 * (select_handle->get_size().width / 2); edit_draw->draw_line(endpoints[i] - draw_ofs * draw_zoom, endpoints[next] - draw_ofs * draw_zoom, color, 2); diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp index d501a04016..52c28b84f6 100644 --- a/editor/plugins/theme_editor_plugin.cpp +++ b/editor/plugins/theme_editor_plugin.cpp @@ -32,6 +32,8 @@ #include "core/os/file_access.h" #include "core/version.h" +#include "editor/editor_scale.h" +#include "scene/gui/progress_bar.h" void ThemeEditor::edit(const Ref<Theme> &p_theme) { @@ -870,7 +872,7 @@ ThemeEditor::ThemeEditor() { add_del_dialog->get_ok()->connect("pressed", this, "_dialog_cbk"); file_dialog = memnew(EditorFileDialog); - file_dialog->add_filter("*.theme ; Theme File"); + file_dialog->add_filter("*.theme ; " + TTR("Theme File")); add_child(file_dialog); file_dialog->connect("file_selected", this, "_save_template_cbk"); } @@ -908,7 +910,7 @@ ThemeEditorPlugin::ThemeEditorPlugin(EditorNode *p_node) { editor = p_node; theme_editor = memnew(ThemeEditor); - theme_editor->set_custom_minimum_size(Size2(0, 200)); + theme_editor->set_custom_minimum_size(Size2(0, 200) * EDSCALE); button = editor->add_bottom_panel_item(TTR("Theme"), theme_editor); button->hide(); diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp index a8cf5b46e1..f6dbbbb0a9 100644 --- a/editor/plugins/tile_set_editor_plugin.cpp +++ b/editor/plugins/tile_set_editor_plugin.cpp @@ -32,6 +32,7 @@ #include "core/os/input.h" #include "core/os/keyboard.h" +#include "editor/editor_scale.h" #include "editor/plugins/canvas_item_editor_plugin.h" #include "scene/2d/physics_body_2d.h" #include "scene/2d/sprite.h" @@ -404,10 +405,15 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { HBoxContainer *tool_hb = memnew(HBoxContainer); Ref<ButtonGroup> g(memnew(ButtonGroup)); - String workspace_label[WORKSPACE_MODE_MAX] = { "Edit", "New Single Tile", "New Autotile", "New Atlas" }; + String workspace_label[WORKSPACE_MODE_MAX] = { + TTR("Edit"), + TTR("New Single Tile"), + TTR("New Autotile"), + TTR("New Atlas") + }; for (int i = 0; i < (int)WORKSPACE_MODE_MAX; i++) { tool_workspacemode[i] = memnew(Button); - tool_workspacemode[i]->set_text(TTR(workspace_label[i])); + tool_workspacemode[i]->set_text(workspace_label[i]); tool_workspacemode[i]->set_toggle_mode(true); tool_workspacemode[i]->set_button_group(g); tool_workspacemode[i]->connect("pressed", this, "_on_workspace_mode_changed", varray(i)); @@ -445,7 +451,16 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { tool_hb = memnew(HBoxContainer); g = Ref<ButtonGroup>(memnew(ButtonGroup)); - String label[EDITMODE_MAX] = { "Region", "Collision", "Occlusion", "Navigation", "Bitmask", "Priority", "Icon", "Z Index" }; + String label[EDITMODE_MAX] = { + TTR("Region"), + TTR("Collision"), + TTR("Occlusion"), + TTR("Navigation"), + TTR("Bitmask"), + TTR("Priority"), + TTR("Icon"), + TTR("Z Index") + }; for (int i = 0; i < (int)EDITMODE_MAX; i++) { tool_editmode[i] = memnew(Button); tool_editmode[i]->set_text(label[i]); @@ -637,8 +652,8 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) { tile_names_visible = false; // Config scale. - max_scale = 10.0f; - min_scale = 0.1f; + max_scale = 16.0f; + min_scale = 0.01f; scale_ratio = 1.2f; } @@ -1176,6 +1191,31 @@ void TileSetEditor::_on_workspace_overlay_draw() { } } +int TileSetEditor::get_grabbed_point(const Vector2 &p_mouse_pos, real_t p_grab_threshold) { + Transform2D xform = workspace->get_transform(); + + int grabbed_point = -1; + real_t min_distance = 1e10; + + for (int i = 0; i < current_shape.size(); i++) { + const real_t distance = xform.xform(current_shape[i]).distance_to(xform.xform(p_mouse_pos)); + if (distance < p_grab_threshold && distance < min_distance) { + min_distance = distance; + grabbed_point = i; + } + } + + return grabbed_point; +} + +bool TileSetEditor::is_within_grabbing_distance_of_first_point(const Vector2 &p_pos, real_t p_grab_threshold) { + Transform2D xform = workspace->get_transform(); + + const real_t distance = xform.xform(current_shape[0]).distance_to(xform.xform(p_pos)); + + return distance < p_grab_threshold; +} + void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { if (tileset.is_null() || !get_current_texture().is_valid()) @@ -1528,18 +1568,19 @@ void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { shape_anchor.x *= (size.x + spacing); shape_anchor.y *= (size.y + spacing); } + const real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius"); shape_anchor += current_tile_region.position; if (tools[TOOL_SELECT]->is_pressed()) { if (mb.is_valid()) { if (mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { if (edit_mode != EDITMODE_PRIORITY && current_shape.size() > 0) { - for (int i = 0; i < current_shape.size(); i++) { - if ((current_shape[i] - mb->get_position()).length_squared() <= grab_threshold) { - dragging_point = i; - workspace->update(); - return; - } + int grabbed_point = get_grabbed_point(mb->get_position(), grab_threshold); + + if (grabbed_point >= 0) { + dragging_point = grabbed_point; + workspace->update(); + return; } } if ((tileset->tile_get_tile_mode(get_current_tile()) == TileSet::AUTO_TILE || tileset->tile_get_tile_mode(get_current_tile()) == TileSet::ATLAS_TILE) && current_tile_region.has_point(mb->get_position())) { @@ -1633,13 +1674,12 @@ void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { Vector2 pos = mb->get_position(); pos = snap_point(pos); if (creating_shape) { - if (current_shape.size() > 0) { - if ((pos - current_shape[0]).length_squared() <= grab_threshold) { - if (current_shape.size() > 2) { - close_shape(shape_anchor); - workspace->update(); - return; - } + if (current_shape.size() > 2) { + + if (is_within_grabbing_distance_of_first_point(mb->get_position(), grab_threshold)) { + close_shape(shape_anchor); + workspace->update(); + return; } } current_shape.push_back(pos); @@ -1685,12 +1725,15 @@ void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { } } else if (!mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { if (creating_shape) { - if ((current_shape[0] - current_shape[1]).length_squared() <= grab_threshold) { + + // if the first two corners are within grabbing distance of one another, expand the rect to fill the tile + if (is_within_grabbing_distance_of_first_point(current_shape[1], grab_threshold)) { current_shape.set(0, snap_point(shape_anchor)); current_shape.set(1, snap_point(shape_anchor + Vector2(current_tile_region.size.x, 0))); current_shape.set(2, snap_point(shape_anchor + current_tile_region.size)); current_shape.set(3, snap_point(shape_anchor + Vector2(0, current_tile_region.size.y))); } + close_shape(shape_anchor); workspace->update(); return; @@ -2535,7 +2578,7 @@ void TileSetEditor::draw_grid_snap() { if (i == 0 && snap_offset.y != 0) { last_p = snap_offset.y; } - if (snap_separation.x != 0) { + if (snap_separation.y != 0) { if (i != 0) { workspace->draw_rect(Rect2(0, last_p, s.width, snap_separation.y), grid_color); last_p += snap_separation.y; diff --git a/editor/plugins/tile_set_editor_plugin.h b/editor/plugins/tile_set_editor_plugin.h index 944dc04e4e..5ff86000c5 100644 --- a/editor/plugins/tile_set_editor_plugin.h +++ b/editor/plugins/tile_set_editor_plugin.h @@ -244,6 +244,8 @@ private: void update_workspace_tile_mode(); void update_workspace_minsize(); void update_edited_region(const Vector2 &end_point); + int get_grabbed_point(const Vector2 &p_mouse_pos, real_t grab_threshold); + bool is_within_grabbing_distance_of_first_point(const Vector2 &p_pos, real_t p_grab_threshold); int get_current_tile() const; void set_current_tile(int p_id); diff --git a/editor/plugins/version_control_editor_plugin.cpp b/editor/plugins/version_control_editor_plugin.cpp index aa3bd74c49..d5dca9b61e 100644 --- a/editor/plugins/version_control_editor_plugin.cpp +++ b/editor/plugins/version_control_editor_plugin.cpp @@ -33,6 +33,7 @@ #include "core/script_language.h" #include "editor/editor_file_system.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" VersionControlEditorPlugin *VersionControlEditorPlugin::singleton = NULL; diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 1a74779fb5..427b810672 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -35,7 +35,9 @@ #include "core/os/input.h" #include "core/os/keyboard.h" #include "core/project_settings.h" +#include "editor/editor_log.h" #include "editor/editor_properties.h" +#include "editor/editor_scale.h" #include "scene/animation/animation_player.h" #include "scene/gui/menu_button.h" #include "scene/gui/panel.h" diff --git a/editor/project_export.cpp b/editor/project_export.cpp index 617ad62d4a..cca40054a4 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -40,6 +40,7 @@ #include "core/project_settings.h" #include "editor_data.h" #include "editor_node.h" +#include "editor_scale.h" #include "editor_settings.h" #include "scene/gui/box_container.h" #include "scene/gui/margin_container.h" @@ -253,9 +254,9 @@ void ProjectExportDialog::_edit_preset(int p_index) { TreeItem *patch_add = patches->create_item(patch_root); patch_add->set_metadata(0, patchlist.size()); if (patchlist.size() == 0) - patch_add->set_text(0, "Add initial export..."); + patch_add->set_text(0, TTR("Add initial export...")); else - patch_add->set_text(0, "Add previous patches..."); + patch_add->set_text(0, TTR("Add previous patches...")); patch_add->add_button(0, get_icon("folder", "FileDialog"), 1); @@ -1186,7 +1187,7 @@ ProjectExportDialog::ProjectExportDialog() { patches_hb->add_spacer(); patch_dialog = memnew(EditorFileDialog); - patch_dialog->add_filter("*.pck ; Pack File"); + patch_dialog->add_filter("*.pck ; " + TTR("Pack File")); patch_dialog->set_mode(EditorFileDialog::MODE_OPEN_FILE); patch_dialog->connect("file_selected", this, "_patch_selected"); add_child(patch_dialog); @@ -1269,8 +1270,8 @@ ProjectExportDialog::ProjectExportDialog() { export_all_button->set_disabled(true); export_pck_zip = memnew(EditorFileDialog); - export_pck_zip->add_filter("*.zip ; ZIP File"); - export_pck_zip->add_filter("*.pck ; Godot Game Pack"); + export_pck_zip->add_filter("*.zip ; " + TTR("ZIP File")); + export_pck_zip->add_filter("*.pck ; " + TTR("Godot Game Pack")); export_pck_zip->set_access(EditorFileDialog::ACCESS_FILESYSTEM); export_pck_zip->set_mode(EditorFileDialog::MODE_SAVE_FILE); add_child(export_pck_zip); diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index ab62a59be1..a913c494a3 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -349,16 +349,15 @@ private: void _path_selected(const String &p_path) { - String p = p_path; - String sp = p.simplify_path(); + String sp = p_path.simplify_path(); project_path->set_text(sp); _path_text_changed(sp); get_ok()->call_deferred("grab_focus"); } void _install_path_selected(const String &p_path) { - String p = p_path; - String sp = p.simplify_path(); + + String sp = p_path.simplify_path(); install_path->set_text(sp); _path_text_changed(sp); get_ok()->call_deferred("grab_focus"); @@ -372,8 +371,8 @@ private: fdialog->set_mode(FileDialog::MODE_OPEN_FILE); fdialog->clear_filters(); - fdialog->add_filter("project.godot ; " VERSION_NAME " Project"); - fdialog->add_filter("*.zip ; Zip File"); + fdialog->add_filter(vformat("project.godot ; %s %s", VERSION_NAME, TTR("Project"))); + fdialog->add_filter("*.zip ; " + TTR("ZIP File")); } else { fdialog->set_mode(FileDialog::MODE_OPEN_DIR); } @@ -2466,9 +2465,9 @@ ProjectManager::ProjectManager() { sort_label->set_text(TTR("Sort:")); sort_filters->add_child(sort_label); Vector<String> sort_filter_titles; - sort_filter_titles.push_back("Name"); - sort_filter_titles.push_back("Path"); - sort_filter_titles.push_back("Last Modified"); + sort_filter_titles.push_back(TTR("Name")); + sort_filter_titles.push_back(TTR("Path")); + sort_filter_titles.push_back(TTR("Last Modified")); project_order_filter = memnew(ProjectListFilter); project_order_filter->add_filter_option(); project_order_filter->_setup_filters(sort_filter_titles); @@ -2696,7 +2695,7 @@ void ProjectListFilter::_setup_filters(Vector<String> options) { filter_option->clear(); for (int i = 0; i < options.size(); i++) - filter_option->add_item(TTR(options[i])); + filter_option->add_item(options[i]); } void ProjectListFilter::_search_text_changed(const String &p_newtext) { diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp index 0428aafe7e..0dbc15fc78 100644 --- a/editor/project_settings_editor.cpp +++ b/editor/project_settings_editor.cpp @@ -35,7 +35,9 @@ #include "core/os/keyboard.h" #include "core/project_settings.h" #include "core/translation.h" +#include "editor/editor_export.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "scene/gui/margin_container.h" #include "scene/gui/tab_container.h" diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp index ce82d44164..945eb4bfb7 100644 --- a/editor/property_editor.cpp +++ b/editor/property_editor.cpp @@ -47,7 +47,9 @@ #include "editor/editor_file_system.h" #include "editor/editor_help.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" +#include "editor/filesystem_dock.h" #include "editor/multi_node_edit.h" #include "editor/property_selector.h" #include "scene/gui/label.h" diff --git a/editor/rename_dialog.cpp b/editor/rename_dialog.cpp index cc9e14975f..9f77f9d82a 100644 --- a/editor/rename_dialog.cpp +++ b/editor/rename_dialog.cpp @@ -32,6 +32,7 @@ #include "core/print_string.h" #include "editor_node.h" +#include "editor_scale.h" #include "editor_settings.h" #include "editor_themes.h" #include "modules/regex/regex.h" @@ -106,7 +107,7 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und // -- Feature Tabs - const int feature_min_height = 160; + const int feature_min_height = 160 * EDSCALE; Ref<Theme> collapse_theme = create_editor_theme(); collapse_theme->set_icon("checked", "CheckBox", collapse_theme->get_icon("GuiTreeArrowDown", "EditorIcons")); diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 5c08482aa4..95e4b05586 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -35,7 +35,9 @@ #include "core/os/keyboard.h" #include "core/project_settings.h" +#include "editor/editor_feature_profile.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "editor/editor_settings.h" #include "editor/multi_node_edit.h" #include "editor/plugins/animation_player_editor_plugin.h" diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index dc5eb4bbd0..433b1d91d4 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -32,9 +32,10 @@ #include "core/message_queue.h" #include "core/print_string.h" +#include "editor/editor_node.h" +#include "editor/node_dock.h" #include "editor/plugins/animation_player_editor_plugin.h" #include "editor/plugins/canvas_item_editor_plugin.h" -#include "editor_node.h" #include "scene/gui/label.h" #include "scene/main/viewport.h" #include "scene/resources/packed_scene.h" diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp index 8e7aac896a..c7ed612f29 100644 --- a/editor/script_editor_debugger.cpp +++ b/editor/script_editor_debugger.cpp @@ -35,9 +35,11 @@ #include "core/ustring.h" #include "editor/plugins/canvas_item_editor_plugin.h" #include "editor/plugins/spatial_editor_plugin.h" +#include "editor_log.h" #include "editor_network_profiler.h" #include "editor_node.h" #include "editor_profiler.h" +#include "editor_scale.h" #include "editor_settings.h" #include "main/performance.h" #include "property_editor.h" @@ -846,7 +848,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da time_vals.push_back(err[2]); time_vals.push_back(err[3]); bool e; - String time = String("%d:%02d:%02d:%04d").sprintf(time_vals, &e); + String time = String("%d:%02d:%02d.%03d").sprintf(time_vals, &e); // Rest of the error data. String method = err[4]; @@ -2247,7 +2249,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) { add_constant_override("margin_right", -EditorNode::get_singleton()->get_gui_base()->get_stylebox("BottomPanelDebuggerOverride", "EditorStyles")->get_margin(MARGIN_RIGHT)); ppeer = Ref<PacketPeerStream>(memnew(PacketPeerStream)); - ppeer->set_input_buffer_max_size(1024 * 1024 * 8); //8mb should be enough + ppeer->set_input_buffer_max_size((1024 * 1024 * 8) - 4); // 8 MiB should be enough, minus 4 bytes for separator. editor = p_editor; editor->get_inspector()->connect("object_id_selected", this, "_scene_tree_property_select_object"); diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index a38c6b98cc..5c3856ac27 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -33,7 +33,9 @@ #include "core/os/keyboard.h" #include "core/project_settings.h" #include "editor_file_system.h" +#include "editor_log.h" #include "editor_node.h" +#include "editor_scale.h" #include "editor_settings.h" #include "scene/gui/margin_container.h" #include "script_editor_debugger.h" @@ -233,14 +235,23 @@ void EditorSettingsDialog::_update_shortcuts() { section->set_custom_bg_color(1, get_color("prop_subsection", "Editor")); } - if (shortcut_filter.is_subsequence_ofi(sc->get_name()) || shortcut_filter.is_subsequence_ofi(sc->get_as_text())) { + // Don't match unassigned shortcuts when searching for assigned keys in search results. + // This prevents all unassigned shortcuts from appearing when searching a string like "no". + if (shortcut_filter.is_subsequence_ofi(sc->get_name()) || (sc->get_as_text() != "None" && shortcut_filter.is_subsequence_ofi(sc->get_as_text()))) { TreeItem *item = shortcuts->create_item(section); item->set_text(0, sc->get_name()); item->set_text(1, sc->get_as_text()); + if (!sc->is_shortcut(original) && !(sc->get_shortcut().is_null() && original.is_null())) { item->add_button(1, get_icon("Reload", "EditorIcons"), 2); } + + if (sc->get_as_text() == "None") { + // Fade out unassigned shortcut labels for easier visual grepping. + item->set_custom_color(1, get_color("font_color", "Label") * Color(1, 1, 1, 0.5)); + } + item->add_button(1, get_icon("Edit", "EditorIcons"), 0); item->add_button(1, get_icon("Close", "EditorIcons"), 1); item->set_tooltip(0, E->get()); diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp index cfd9ec19d2..fd9e44cd5f 100644 --- a/editor/spatial_editor_gizmos.cpp +++ b/editor/spatial_editor_gizmos.cpp @@ -202,6 +202,9 @@ void EditorSpatialGizmo::add_mesh(const Ref<ArrayMesh> &p_mesh, bool p_billboard } void EditorSpatialGizmo::add_lines(const Vector<Vector3> &p_lines, const Ref<Material> &p_material, bool p_billboard) { + if (p_lines.empty()) { + return; + } ERR_FAIL_COND(!spatial_node); Instance ins; @@ -4190,8 +4193,19 @@ void JointSpatialGizmoPlugin::redraw(EditorSpatialGizmo *p_gizmo) { p_gizmo->clear(); - const Spatial *node_body_a = Object::cast_to<Spatial>(joint->get_node(joint->get_node_a())); - const Spatial *node_body_b = Object::cast_to<Spatial>(joint->get_node(joint->get_node_b())); + Spatial *node_body_a = NULL; + if (!joint->get_node_a().is_empty()) { + node_body_a = Object::cast_to<Spatial>(joint->get_node(joint->get_node_a())); + } + + Spatial *node_body_b = NULL; + if (!joint->get_node_b().is_empty()) { + node_body_b = Object::cast_to<Spatial>(joint->get_node(joint->get_node_b())); + } + + if (!node_body_a && !node_body_b) { + return; + } Ref<Material> common_material = get_material("joint_material", p_gizmo); Ref<Material> body_a_material = get_material("joint_body_a_material", p_gizmo); diff --git a/editor/translations/af.po b/editor/translations/af.po index bbcaf092e7..6066c713b2 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -544,8 +544,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -739,6 +740,10 @@ msgstr "Slegs Seleksie" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -822,6 +827,11 @@ msgid "Extra Call Arguments:" msgstr "Ekstra Roep Argumente:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Eienskappe" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -1009,7 +1019,7 @@ msgid "Resource" msgstr "Hulpbron" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Pad" @@ -1500,7 +1510,8 @@ msgid "Node Name:" msgstr "Nodus Naam:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Naam" @@ -1759,6 +1770,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2707,7 +2722,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -3023,6 +3039,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -3079,6 +3099,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3518,6 +3542,10 @@ msgid "Select Template File" msgstr "Skep Vouer" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4707,6 +4735,11 @@ msgstr "" msgid "Transition: " msgstr "Oorgang" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Pad na Nodus:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -4964,6 +4997,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Lisensie" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Lisensie" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5164,6 +5223,77 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Lineêr" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Lineêr" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Skaal Verhouding:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5832,6 +5962,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6475,6 +6609,23 @@ msgid "Save File As..." msgstr "Stoor Hulpbron As..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6607,10 +6758,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7766,6 +7913,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7785,6 +7933,11 @@ msgstr "" msgid "Constant" msgstr "Konstant" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Open 'n Lêer" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7899,6 +8052,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7915,6 +8080,37 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Skep Intekening" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Skep Intekening" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Skep Intekening" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -9087,6 +9283,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Gunstelinge:" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9186,6 +9391,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Verpak" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9237,6 +9447,15 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr "Lêer:" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9500,6 +9719,10 @@ msgid "Projects" msgstr "Projek Stigters" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11113,6 +11336,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Gunstelinge:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Gunstelinge:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "" "Ongeldige naam. Dit moet nie met bestaande ingeboude tiepename bots nie." @@ -11179,16 +11412,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Gunstelinge:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Gunstelinge:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Hernoem AutoLaai" @@ -11364,6 +11587,21 @@ msgid "Members:" msgstr "Lede:" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change Base Type:" +msgstr "Verander Skikking Waarde-Soort" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Skuif Gunsteling Op" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Maak Funksie" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11565,27 +11803,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12239,9 +12460,6 @@ msgstr "" #~ msgid "Enabled Classes" #~ msgstr "Deursoek Klasse" -#~ msgid "Path to Node:" -#~ msgstr "Pad na Nodus:" - #~ msgid "Delete selected files?" #~ msgstr "Skrap gekose lêers?" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index 6be373b1f1..a6af372745 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -30,12 +30,13 @@ # PhoenixHO <oussamahaddouche0@gmail.com>, 2019. # orcstudio <orcstudio@orcstudio.org>, 2019. # Rachid Graphicos <graphicos1d@gmail.com>, 2019. +# traveller010 <manar.bushnaq.001@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-04 03:15+0000\n" -"Last-Translator: Omar Aglan <omar.aglan91@yahoo.com>\n" +"PO-Revision-Date: 2019-12-12 09:06+0000\n" +"Last-Translator: traveller010 <manar.bushnaq.001@gmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" "Language: ar\n" @@ -44,7 +45,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 3.9-dev\n" +"X-Generator: Weblate 3.10-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -182,29 +183,24 @@ msgid "Anim Change Call" msgstr "نداء تغيير Ø§Ù„ØªØØ±ÙŠÙƒ" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Time" -msgstr "تغيير وقت الإطار الرئيسي Ù„Ù„ØØ±ÙƒØ©" +msgstr "وقت الإطار متعدد التغييرات للرسم Ø§Ù„Ù…ØªØØ±Ùƒ" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "تغيير المقطع الإنتقالي" +msgstr "المراØÙ„ الانتقالية للرسم Ø§Ù„Ù…ØªØØ±Ùƒ متعدد التغييرات" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "تØÙˆÙŠÙ„ تغيير Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "التَØÙŽÙˆÙ‘Ù„ متعدد التغيير للرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ©" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Value" -msgstr "تغيير قيمة الإطار الأساسي Ù„Ù„ØØ±ÙƒØ©" +msgstr "قيمة الإطار متعدد التغييرات للرسم Ø§Ù„Ù…ØªØØ±Ùƒ" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Call" -msgstr "نداء تغيير Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "استدعاء الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ© متعددة التغيير" #: editor/animation_track_editor.cpp msgid "Change Animation Length" @@ -443,9 +439,8 @@ msgid "Not possible to add a new track without a root" msgstr "لا يمكن Ø¥Ø¶Ø§ÙØ© مقطع جديد بدون جذر" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Bezier Track" -msgstr "Ø¥Ø¶Ø§ÙØ© مسار" +msgstr "Ø¥Ø¶Ø§ÙØ© مسار لمنØÙ†Ù‰ بريزير" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." @@ -517,12 +512,12 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" -msgstr "" +msgstr "ØªØØ°ÙŠØ±: تعديل رسوم Ù…ØªØØ±ÙƒØ© مستوردة" #: editor/animation_track_editor.cpp #, fuzzy msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "ØØ¯Ø¯ مشغل ØØ±ÙƒØ© من شجرة المشهد لكي تعدل Ø§Ù„ØØ±ÙƒØ©." +msgstr "إختر مشغل الرسم Ø§Ù„Ù…ØªØØ±Ùƒ من شجرة المشهد لكي تنشئ أو تعدل Ø§Ù„ØØ±ÙƒØ©." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." @@ -533,9 +528,8 @@ msgid "Group tracks by node or display them as plain list." msgstr "قم بتجميع المقاطع ØØ³Ø¨ العقد (Nodes) أو إظهارهم كقائمة بسيطة." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Snap:" -msgstr "خطوة أو خطوات: " +msgstr "إنطباق أو Ù…ØØ§Ø°Ø§Ø©:" #: editor/animation_track_editor.cpp msgid "Animation step value." @@ -553,8 +547,9 @@ msgstr "إطار خلال ثانية" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "تعديل" @@ -655,9 +650,8 @@ msgid "Scale Ratio:" msgstr "نسبة التكبير:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "ØØ¯Ø¯ مقاطع لنسخ:" +msgstr "إختر المقاطع المراد نسخها" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -669,9 +663,8 @@ msgid "Copy" msgstr "أنسخ" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "ØªØØ¯ÙŠØ¯ الوضع" +msgstr "إختر الكل/لا شيء" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -711,12 +704,11 @@ msgstr "Ø¥Ø³ØªØ¨ÙØ¯Ù„ %d ØØ§Ø¯Ø«Ø©(ØÙˆØ§Ø¯Ø«)." #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d match." -msgstr "" +msgstr "تطابق %d." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d matches." -msgstr "لا مطابقة" +msgstr "%d تطابقات." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" @@ -741,6 +733,10 @@ msgstr "Ø§Ù„Ù…ØØ¯Ø¯ Ùقط" #: editor/code_editor.cpp editor/plugins/script_text_editor.cpp #: editor/plugins/text_editor.cpp msgid "Standard" +msgstr "معياري" + +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" msgstr "" #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp @@ -768,21 +764,18 @@ msgid "Line and column numbers." msgstr "أرقام الخط Ùˆ العمود." #: editor/connections_dialog.cpp -#, fuzzy msgid "Method in target node must be specified." -msgstr "الطريقة ÙÙŠ العقدة Ø§Ù„Ù…Ø³ØªÙ‡Ø¯ÙØ© يجب أن تكون Ù…ØØ¯Ù‘دة!" +msgstr "يجب ØªØØ¯ÙŠØ¯ الدالة ÙÙŠ العقدة Ø§Ù„Ù…Ø³ØªÙ‡Ø¯ÙØ©." #: editor/connections_dialog.cpp -#, fuzzy msgid "" "Target method not found. Specify a valid method or attach a script to the " "target node." msgstr "" -"لم يتم العثور على الطريقة Ø§Ù„Ù…Ø³ØªÙ‡Ø¯ÙØ©! ØØ¯Ù‘د طريقة سليمة أو أرÙÙ‚ كود لإستهدا٠" -"العقدة." +"لم يتم العثور على الدالة Ø§Ù„Ù…Ø³ØªÙ‡Ø¯ÙØ©. ØØ¯Ù‘د دالة سليمة أو أرÙÙ‚ كود للعقدة " +"Ø§Ù„Ù…Ø³ØªÙ‡Ø¯ÙØ©." #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect to Node:" msgstr "صلها بالعقدة:" @@ -791,14 +784,12 @@ msgid "Connect to Script:" msgstr "الإتصال بالمخطوطة:" #: editor/connections_dialog.cpp -#, fuzzy msgid "From Signal:" -msgstr "الإشارات:" +msgstr "من إشارة:" #: editor/connections_dialog.cpp -#, fuzzy 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 @@ -826,6 +817,11 @@ msgid "Extra Call Arguments:" msgstr "وسائط إستدعاء إضاÙية :" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "إختر طريقة" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "إعدادات متقدمة" @@ -836,7 +832,7 @@ msgstr "مؤجل" #: editor/connections_dialog.cpp msgid "" "Defers the signal, storing it in a queue and only firing it at idle time." -msgstr "" +msgstr "تأخير الإشارة وتخزينها ÙÙŠ قائمة الانتظار Ùˆ تشغيلها Ùقط ÙÙŠ وقت Ø§Ù„ÙØ±Ø§Øº." #: editor/connections_dialog.cpp msgid "Oneshot" @@ -844,12 +840,11 @@ msgstr "لقطة ÙˆØ§ØØ¯Ø©" #: editor/connections_dialog.cpp msgid "Disconnects the signal after its first emission." -msgstr "" +msgstr "ÙØµÙ„ الإشارة بعد انبعاثها الأول." #: editor/connections_dialog.cpp -#, fuzzy msgid "Cannot connect signal" -msgstr "قم بوصل الإشارة: " +msgstr "إشارة غير قادر على الاتصال" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/export_template_manager.cpp editor/groups_editor.cpp @@ -873,7 +868,7 @@ msgstr "وصل" #: editor/connections_dialog.cpp #, fuzzy msgid "Signal:" -msgstr "الإشارات:" +msgstr "إشارة:" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" @@ -897,14 +892,12 @@ msgid "Disconnect" msgstr "قطع الاتصال" #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect a Signal to a Method" -msgstr "قم بوصل الإشارة: " +msgstr "قم بوصل الإشارة إلى الدالة" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit Connection:" -msgstr "قم بتعديل الإتصال: " +msgstr "تعديل الإتصال:" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" @@ -980,22 +973,20 @@ msgid "Dependencies For:" msgstr "تابعة لـ:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Scene '%s' is currently being edited.\n" "Changes will only take effect when reloaded." msgstr "" "المشهد '%s' هو ØØ§Ù„ياً جاري تعديله.\n" -"التغييرات لن ØªØØµÙ„ ØØªÙŠ ÙŠØªÙ… إعادة التشغيل." +"ستسري التغييرات Ùقط عند إعادة التØÙ…يل." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Resource '%s' is in use.\n" "Changes will only take effect when reloaded." msgstr "" "المورد '%s' قيد الإستخدام.\n" -"التغييرات ستظهر بعد إعادة التشغيل." +" ستسري التغييرات Ùقط عند إعادة التØÙ…يل." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -1007,7 +998,7 @@ msgid "Resource" msgstr "مورد" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "المسار" @@ -1042,9 +1033,8 @@ msgid "Owners Of:" msgstr "ملاك:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Remove selected files from the project? (Can't be restored)" -msgstr "Ø¥Ù…Ø³Ø Ø§Ù„Ù…Ù„ÙØ§Øª Ø§Ù„Ù…ØØ¯Ø¯Ø© من المشروع؟ (لا رجعة)" +msgstr "Ø¥Ù…Ø³Ø Ø§Ù„Ù…Ù„ÙØ§Øª المختارة من المشروع؟ (لا يمكن استعادتها)" #: editor/dependency_editor.cpp msgid "" @@ -1088,9 +1078,8 @@ msgid "Permanently delete %d item(s)? (No undo!)" msgstr "Ø¥Ù…Ø³Ø Ù†Ù‡Ø§Ø¦ÙŠØ§ %d عنصر(عناصر)ØŸ (بلا رجعة!)" #: editor/dependency_editor.cpp -#, fuzzy msgid "Show Dependencies" -msgstr "التبعيات" +msgstr "إظهار التبعيات" #: editor/dependency_editor.cpp msgid "Orphan Resource Explorer" @@ -1181,12 +1170,10 @@ msgid "License" msgstr "الرخصة" #: editor/editor_about.cpp -#, fuzzy msgid "Third-party Licenses" -msgstr "ترخيص الطر٠الثالث" +msgstr "تراخيص الجهات الخارجية" #: editor/editor_about.cpp -#, fuzzy msgid "" "Godot Engine relies on a number of third-party free and open source " "libraries, all compatible with the terms of its MIT license. The following " @@ -1211,9 +1198,8 @@ msgid "Licenses" msgstr "تراخيص" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Error opening package file, not in ZIP format." -msgstr "خطأ Ø¹Ù†Ø¯ÙØªØ Ù…Ù„Ù Ø§Ù„ØØ²Ù…Ø© بسبب أن المل٠ليس ÙÙŠ صيغة \"ZIP\"." +msgstr "ØØ¯Ø« خطأ Ø¹Ù†Ø¯ÙØªØ Ù…Ù„Ù Ø§Ù„ØØ²Ù…Ø© بسبب أن المل٠ليس ÙÙŠ صيغة \"ZIP\"." #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" @@ -1281,9 +1267,8 @@ msgid "Delete Bus Effect" msgstr "Ù…Ø³Ø ØªØ£Ø«ÙŠØ± البيوس" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Drag & drop to rearrange." -msgstr "بيوس الصوت، Ø³ØØ¨ وإسقاط لإعادة الترتيب." +msgstr "Ø¥Ø³ØØ¨ وأسقط لإعادة الترتيب." #: editor/editor_audio_buses.cpp msgid "Solo" @@ -1356,7 +1341,7 @@ 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" @@ -1413,9 +1398,8 @@ msgid "Valid characters:" msgstr "Ø§Ù„Ø£ØØ±Ù Ø§Ù„ØµØ§Ù„ØØ©:" #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Must not collide with an existing engine class name." -msgstr "إسم غير ØµØ§Ù„ØØŒ يجب أن لا يتصادم مع أسم ÙØµÙ„ خاص Ø¨Ø§Ù„Ù…ØØ±Ùƒ." +msgstr "إسم غير ØµØ§Ù„ØØŒ يجب أن لا يتصادم مع أسم ÙØ¦Ø© خاصة Ø¨Ø§Ù„Ù…ØØ±Ùƒ." #: editor/editor_autoload_settings.cpp #, fuzzy @@ -1488,7 +1472,8 @@ msgid "Node Name:" msgstr "إسم العقدة:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "الأسم" @@ -1755,6 +1740,11 @@ msgstr "زر Ø§Ù„ÙØ£Ø±Ø© الأيمن: Ù…Ø³Ø Ø§Ù„Ù†Ù‚Ø·Ø©." #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "إدارة قوالب التصدير" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "%d مزيد من Ø§Ù„Ù…Ù„ÙØ§Øª" @@ -2738,7 +2728,8 @@ msgstr "إعادة المشهد" msgid "Miscellaneous project or scene-wide tools." msgstr "ادوات لكل-المشهد او لمشاريع متنوعه." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "مشروع" @@ -3086,6 +3077,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "إستيراد القوالب من مل٠مضغوط بصيغة Zip" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "‌تصدير مدير القوالب" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "تصدير المشروع" @@ -3142,6 +3138,11 @@ msgstr "ÙØªØ ÙÙŠ Ø§Ù„Ù…ÙØ¹Ø¯Ù„ التالي" msgid "Open the previous Editor" msgstr "Ø¥ÙØªØ Ø§Ù„Ù…ÙØ¹Ø¯Ù„ السابق" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "ØªØØ°ÙŠØ±Ø§Øª" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3591,6 +3592,11 @@ msgid "Select Template File" msgstr "ØØ¯Ø¯ مل٠القالب" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "إدارة قوالب التصدير" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "‌تصدير مدير القوالب" @@ -4806,6 +4812,11 @@ msgstr "" msgid "Transition: " msgstr "تØÙˆÙ„" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "وضع Ø§Ù„Ø³ØØ¨" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -5068,6 +5079,32 @@ msgid "Download for this asset is already in progress!" msgstr "تØÙ…يل هذا الأصل قيد التنÙيذ أصلاً!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "الرخصة" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "الرخصة" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "الأول" @@ -5279,6 +5316,85 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "وضع التدوير" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "وضع التدوير" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "وضع التدوير" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "وضع التدوير" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Ù†ØµÙ Ø§Ù„Ù…ÙØØ¯Ø¯" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Ù†ØµÙ Ø§Ù„Ù…ÙØØ¯Ø¯" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "وضع التدوير" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Ù†ØµÙ Ø§Ù„Ù…ÙØØ¯Ø¯" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "الخط الشمالي" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "الخط اليميني" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "نسبة التكبير:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "المرتكزات Ùقط" @@ -5974,6 +6090,11 @@ msgid "Remove item %d?" msgstr "Ù…Ø³Ø Ø§Ù„Ø¹Ù†ØµØ± %dØŸ" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "مكتبة الميش..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Ø¥Ø¶Ø§ÙØ© عنصر" @@ -6635,6 +6756,23 @@ msgid "Save File As..." msgstr "ØÙظ باسم..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6768,10 +6906,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7947,6 +8081,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7966,6 +8101,11 @@ msgstr "" msgid "Constant" msgstr "ثابت" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Ø¥ÙØªØ ملÙ" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -8083,6 +8223,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "إظهار Ø§Ù„Ù…Ù„ÙØ§Øª" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -8101,6 +8254,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "وضع التدوير" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "وضعية Ø§Ù„Ø£Ø³ØªÙŠÙØ§Ø¡" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "تعديل البولي" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "أنشئ ميش التنقل" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "وضع التدوير" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "تصدير المشروع" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "وضع Ø§Ù„Ø³ØØ¨" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "وضع التدوير" @@ -9300,6 +9488,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "أض٠مدخله" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9402,6 +9599,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Ù…Ù„ÙØ§Øª" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9457,6 +9659,15 @@ msgstr "تصدير المشروع" msgid "Export All" msgstr "تصدير" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Ù…Ù„ÙØ§Øª" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9721,6 +9932,10 @@ msgid "Projects" msgstr "مشروع" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11369,6 +11584,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "أض٠مدخله" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "أض٠مدخله" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "إسم غير ØµØ§Ù„ØØŒ يجب أن لا يتصادم مع الأسماء المبنية تلقائياً الموجودة." @@ -11434,16 +11659,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "أض٠مدخله" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "أض٠مدخله" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Ù…Ø³Ø Ø§Ù„Ù†Ù‚Ø·Ø©" @@ -11622,6 +11837,21 @@ msgstr "الأعضاء:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "غير نوع %s" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Ø¥Ø¶Ø§ÙØ© %s..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Ù…Ø³Ø Ø§Ù„Ù…Ù‡Ù…Ø©" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "الإعدادات:" @@ -11823,27 +12053,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12707,10 +12920,6 @@ msgstr "" #~ msgstr "زر Ø§Ù„ÙØ£Ø±Ø© الأيمن: Ù…Ø³Ø Ø§Ù„Ù†Ù‚Ø·Ø©." #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "إظهار Ø§Ù„Ù…Ù„ÙØ§Øª" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "تقريب" diff --git a/editor/translations/bg.po b/editor/translations/bg.po index 9f82d5e72d..384f569078 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -539,8 +539,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -733,6 +734,11 @@ msgstr "Само СелекциÑта" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Toggle Scripts Panel" +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 @@ -813,6 +819,11 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Изберете метод" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -990,7 +1001,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1461,7 +1472,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1720,6 +1732,10 @@ msgid "Erase Profile" msgstr "Изтрий точки." #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp #, fuzzy msgid "Import Profile(s)" msgstr "ВнеÑен проект" @@ -2670,7 +2686,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Проект" @@ -2994,6 +3011,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "ВнаÑÑне на шаблони от архив във формат ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Шаблони" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "ИзнаÑÑне на проекта" @@ -3051,6 +3073,11 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "ПредупреждениÑ:" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3499,6 +3526,11 @@ msgid "Select Template File" msgstr "Избиране на вÑичко" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Шаблони" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4712,6 +4744,11 @@ msgstr "" msgid "Transition: " msgstr "Преход" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Панорамен режим на ОтмеÑтване (на Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†)" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -4973,6 +5010,32 @@ msgid "Download for this asset is already in progress!" msgstr "Този актив вече Ñе ÑвалÑ!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Лиценз" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Лиценз" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Ðачална" @@ -5177,6 +5240,86 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Режим на Завъртане" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Завъртане на Полигон" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Завъртане на Полигон" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Режим на Завъртане" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Центрирай върху СелекциÑта" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Центрирай върху СелекциÑта" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Завъртане на Полигон" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Центрирай върху СелекциÑта" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Изглед ОтлÑво." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Изглед Отгоре." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Изглед ОтдÑÑно." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Изглед Отдолу." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5856,6 +5999,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "ИзнаÑÑне на библиотеката" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6501,6 +6649,23 @@ msgid "Save File As..." msgstr "Запази Файла Като..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "ВнаÑÑне на тема" @@ -6634,11 +6799,6 @@ msgstr "Затвори ДокументациÑта" msgid "Run" msgstr "ПуÑкане" -#: editor/plugins/script_editor_plugin.cpp -#, fuzzy -msgid "Toggle Scripts Panel" -msgstr "ВидимоÑÑ‚ на Панела ÑÑŠÑ Ð¡ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ð²Ðµ" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7808,6 +7968,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7827,6 +7988,11 @@ msgstr "" msgid "Constant" msgstr "ПоÑтоÑнно" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Тема" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7943,6 +8109,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Ðов TextFile" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "Следващ Ñкрипт" @@ -7962,6 +8141,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Режим на Завъртане" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Промени ÑъщеÑтвуващ полигон:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "ПриÑтавки" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Ðнимационен Възел" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Режим на Завъртане" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Режим на изнаÑÑне:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Панорамен режим на ОтмеÑтване (на Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†)" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Режим на Завъртане" @@ -9151,6 +9365,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Любими:" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9252,6 +9475,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Файл:" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9308,6 +9536,15 @@ msgstr "Режим на изнаÑÑне:" msgid "Export All" msgstr "ИзнаÑÑне" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr "Файл:" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9577,6 +9814,10 @@ msgid "Projects" msgstr "Проект" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Сканиране" @@ -11234,6 +11475,16 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Любими:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Любими:" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -11299,16 +11550,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Любими:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Любими:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "ЗатварÑне на вÑичко" @@ -11488,6 +11729,20 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Добави Възел..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Отиди на Ред" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11688,27 +11943,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12495,10 +12733,6 @@ msgstr "" #~ msgid "RMB: Erase Point." #~ msgstr "RMB: Изтрий Точка." -#, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Ðов TextFile" - #~ msgid "Save Theme As" #~ msgstr "Запази Темата Като" diff --git a/editor/translations/bn.po b/editor/translations/bn.po index da5e8b41ac..f38b2dc09a 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -6,12 +6,13 @@ # Abdullah Zubair <abdullahzubair109@gmail.com>, 2017. # Tahmid Karim <tahmidk15@gmail.com>, 2016. # Tawhid H. <Tawhidk757@yahoo.com>, 2019. +# Hasibul Hasan <hasibeng78@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-09-26 11:50+0000\n" -"Last-Translator: Tawhid H. <Tawhidk757@yahoo.com>\n" +"PO-Revision-Date: 2019-12-13 09:38+0000\n" +"Last-Translator: Hasibul Hasan <hasibeng78@gmail.com>\n" "Language-Team: Bengali <https://hosted.weblate.org/projects/godot-engine/" "godot/bn/>\n" "Language: bn\n" @@ -19,7 +20,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 3.9-dev\n" +"X-Generator: Weblate 3.10-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -39,7 +40,7 @@ msgstr "অবৈধ ইনপà§à¦Ÿ %i (পাস করা হয়নি) ঠ#: core/math/expression.cpp #, fuzzy msgid "self can't be used because instance is null (not passed)" -msgstr "সà§à¦¬ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা যাবে না কারণ উদাহরণটি হলো null(উতà§à¦¤à§€à¦°à§à¦£ হয়নি)" +msgstr "self বà§à¦¯à¦¬à¦¾à¦¹à¦¾à¦° করা যাবে না কারণ instance যà§à¦•à§à¦¤à¦¿à¦¯à§à¦•à§à¦¤ নয়" #: core/math/expression.cpp #, fuzzy @@ -564,8 +565,9 @@ msgstr "à¦à¦« পি à¦à¦¸" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)" @@ -760,6 +762,11 @@ msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Toggle Scripts Panel" +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 @@ -846,6 +853,11 @@ msgstr "ডাকযোগà§à¦¯ অতিরিকà§à¦¤ মান/আরà§à¦— #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "মেথড/পদà§à¦§à¦¤à¦¿ বাছাই করà§à¦¨" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ" @@ -1035,7 +1047,7 @@ msgid "Resource" msgstr "রিসোরà§à¦¸" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "পথ" @@ -1529,7 +1541,8 @@ msgid "Node Name:" msgstr "নোডের নাম:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "নাম" @@ -1801,6 +1814,11 @@ msgstr "TileMap মà§à¦›à§‡ ফেলà§à¦¨" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হয়েছে" @@ -2827,7 +2845,8 @@ msgstr "দৃশà§à¦¯ পà§à¦°à¦¤à§à¦¯à¦¾à¦¬à§ƒà¦¤à§à¦¤ করà§à¦¨" msgid "Miscellaneous project or scene-wide tools." msgstr "পà§à¦°à¦•লà§à¦ª অথবা দৃশà§à¦¯à§‡-বà§à¦¯à¦¾à¦ªà§€ বিবিধ সরঞà§à¦œà¦¾à¦®-সমূহ।" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp #, fuzzy msgid "Project" msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª" @@ -3180,6 +3199,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "ZIP ফাইল হতে টেমপà§à¦²à§‡à¦Ÿ-সমূহ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "পà§à¦°à¦•লà§à¦ª à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨" @@ -3243,6 +3267,11 @@ msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨" msgid "Open the previous Editor" msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "সতরà§à¦•তা" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3728,6 +3757,11 @@ msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ অপসারণ #: editor/export_template_manager.cpp #, fuzzy +msgid "Godot Export Templates" +msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡" + +#: editor/export_template_manager.cpp +#, fuzzy msgid "Export Template Manager" msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡" @@ -4986,6 +5020,11 @@ msgstr "" msgid "Transition: " msgstr "টà§à¦°à§à¦¯à¦¾à¦¨à¦œà¦¿à¦¶à¦¨/সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦°à¦£" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "পà§à¦¯à¦¾à¦¨ মোড" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -5256,6 +5295,32 @@ msgid "Download for this asset is already in progress!" msgstr "à¦à¦‡ অà§à¦¯à¦¾à¦¸à§‡à¦Ÿà¦Ÿà¦¿ ইতমধà§à¦¯à§‡ ডাউনলোড হচà§à¦›à§‡!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "লাইসেনà§à¦¸" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "লাইসেনà§à¦¸" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "পà§à¦°à¦¥à¦®" @@ -5469,6 +5534,88 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Top Left" +msgstr "বাম" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "ডান" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "ডানে সরান" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "নিমà§à¦¨ দরà§à¦¶à¦¨" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "বামে মাতà§à¦°à¦¾ দিন" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "নিরà§à¦¬à¦¾à¦šà¦¨à¦•ে কেনà§à¦¦à§à¦°à§€à¦à§‚ত করà§à¦¨" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "ডানে মাতà§à¦°à¦¾ দিন" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "নিমà§à¦¨" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "বাম দরà§à¦¶à¦¨" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "শীরà§à¦· দরà§à¦¶à¦¨" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "ডান দরà§à¦¶à¦¨" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "নিমà§à¦¨ দরà§à¦¶à¦¨" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Full Rect" +msgstr "পূরà§à¦£ নাম" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "সà§à¦•েল/মাপের অনà§à¦ªà¦¾à¦¤:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Anchors only" msgstr "অà§à¦¯à¦¾à¦‚কর" @@ -6186,6 +6333,11 @@ msgid "Remove item %d?" msgstr "%d টি বসà§à¦¤à§ অপসারণ করবেন?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary (মেস-লাইবà§à¦°à§‡à¦°à¦¿)..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "বসà§à¦¤à§ যোগ করà§à¦¨" @@ -6867,6 +7019,23 @@ msgid "Save File As..." msgstr "à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "থিম ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨" @@ -7002,11 +7171,6 @@ msgstr "ডকà§à¦®à§‡à¦¨à§à¦Ÿà¦¸à¦®à§‚হ বনà§à¦§ করà§à¦¨" msgid "Run" msgstr "চালান" -#: editor/plugins/script_editor_plugin.cpp -#, fuzzy -msgid "Toggle Scripts Panel" -msgstr "ফেবরিট/পà§à¦°à¦¿à¦¯à¦¼-সমূহ অদলবদল/টগল করà§à¦¨" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "পদারà§à¦ªà¦£ করà§à¦¨" @@ -8235,6 +8399,7 @@ msgid "Data Type:" msgstr "ডাটার ধরণ:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "আইকন" @@ -8254,6 +8419,11 @@ msgstr "রঙ" msgid "Constant" msgstr "ধà§à¦°à§à¦¬à¦•/কনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦Ÿ" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "থিম" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -8377,6 +8547,20 @@ msgid "Merge from Scene" msgstr "দৃশà§à¦¯ হতে à¦à¦•তà§à¦°à¦¿à¦¤ করবেন" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ টà§à¦•রো" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€:" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ" @@ -8396,6 +8580,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "চালানোর মোড:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° নোড" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Navigation Mesh তৈরি করà§à¦¨" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "ঘূরà§à¦£à¦¾à§Ÿà¦¨ মোড" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ মোড:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "ইনà§à¦¡à§‡à¦•à§à¦¸:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "চালানোর মোড:" @@ -9617,6 +9836,15 @@ msgstr "সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨" #: editor/project_export.cpp #, fuzzy +msgid "Add initial export..." +msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp +#, fuzzy msgid "Delete patch '%s' from list?" msgstr "ইনপà§à¦Ÿ অপসারণ করà§à¦¨" @@ -9736,6 +9964,11 @@ msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথ:" #: editor/project_export.cpp #, fuzzy +msgid "Pack File" +msgstr "ফাইল" + +#: editor/project_export.cpp +#, fuzzy msgid "Features" msgstr "গঠনবিনà§à¦¯à¦¾à¦¸" @@ -9791,6 +10024,15 @@ msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ মোড:" msgid "Export All" msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr "ফাইল" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "à¦à¦‡ পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡à¦° জনà§à¦¯ দরকারি à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦—à§à¦²à¦¿ খà§à¦à¦œà§‡ পাওয়া যাচà§à¦›à§‡ না:" @@ -10083,6 +10325,10 @@ msgid "Projects" msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "সà§à¦•à§à¦¯à¦¾à¦¨" @@ -11832,6 +12078,16 @@ msgstr "চলক/à¦à§‡à¦°à¦¿à§Ÿà§‡à¦¬à¦² সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "" "অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ নাম। নামটি অবশà§à¦¯à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨ পূরà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ধরণের নামের সাথে পরমà§à¦ªà¦°à¦¬à¦¿à¦°à§‡à¦¾à¦§à§€ " @@ -11899,16 +12155,6 @@ msgstr "সংকেত/সিগনà§à¦¯à¦¾à¦² সংযোজন করà§à¦¨ #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "পথের বিনà§à¦¦à§ অপসারণ করà§à¦¨" @@ -12108,6 +12354,21 @@ msgstr "সদসà§à¦¯à¦—ণ (Members):" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "নোড সংযোজন করà§à¦¨" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "ফাংশন সংযোজন করà§à¦¨" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "ফাংশন:" @@ -12312,28 +12573,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "নামটি কারà§à¦¯à¦•র সনাকà§à¦¤à¦•ারী নয়:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -13513,9 +13757,6 @@ msgstr "" #~ msgid "Rotate 270 degrees" #~ msgstr "২à§à§¦ ডিগà§à¦°à¦¿ ঘোরানà§â€Œ" -#~ msgid "Warning" -#~ msgstr "সতরà§à¦•তা" - #~ msgid "Variable" #~ msgstr "চলক/à¦à§‡à¦°à¦¿à§Ÿà§‡à¦¬à¦²" @@ -13999,9 +14240,6 @@ msgstr "" #~ msgid "Re-Import Changed Resources" #~ msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ রিসোরà§à¦¸-সমূহ পরিবরà§à¦¤à¦¿à¦¤ হয়েছে" -#~ msgid "Loading Export Templates" -#~ msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡" - #, fuzzy #~ msgid "" #~ "\n" @@ -14586,9 +14824,6 @@ msgstr "" #~ msgid "Create Android keystore" #~ msgstr "অà§à¦¯à¦¾à¦¨à§à¦¡à§à¦°à¦¯à¦¼à§‡à¦¡ কীসà§à¦Ÿà§‹à¦° (keystore) তৈরি করà§à¦¨" -#~ msgid "Full name" -#~ msgstr "পূরà§à¦£ নাম" - #~ msgid "Organizational unit" #~ msgstr "সাংগঠনিক à¦à¦•ক (Organizational unit)" @@ -14693,9 +14928,6 @@ msgstr "" #~ msgid "Lossy Quality:" #~ msgstr "ধà§à¦¬à¦‚সাতà§à¦®à¦• গà§à¦£à§‡à¦°:" -#~ msgid "Atlas:" -#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€:" - #~ msgid "Shrink By:" #~ msgstr "সঙà§à¦•োচন দà§à¦¬à¦¾à¦°à¦¾:" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index 4740b9ac89..d3f4648c43 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-04 03:15+0000\n" +"PO-Revision-Date: 2019-12-21 08:37+0000\n" "Last-Translator: roger <616steam@gmail.com>\n" "Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/" "godot/ca/>\n" @@ -21,7 +21,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 3.9-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -63,7 +63,6 @@ msgid "On call to '%s':" msgstr "En la crida a '%s':" #: core/ustring.cpp -#, fuzzy msgid "B" msgstr "B" @@ -72,9 +71,8 @@ msgid "KiB" msgstr "KiB" #: core/ustring.cpp -#, fuzzy msgid "MiB" -msgstr "Mesclar" +msgstr "MiB" #: core/ustring.cpp msgid "GiB" @@ -531,8 +529,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Edita" @@ -633,9 +632,8 @@ msgid "Scale Ratio:" msgstr "Relació d'Escala:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Tria les Pistes per copiar:" +msgstr "Seleccioneu les Pistes a Copiar" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -649,7 +647,7 @@ msgstr "Copia" #: editor/animation_track_editor.cpp #, fuzzy msgid "Select All/None" -msgstr "No seleccionar-ne cap" +msgstr "Seleccionar Totes/Cap" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -690,12 +688,12 @@ msgstr "%d ocurrència/es reemplaçades." #: editor/code_editor.cpp editor/editor_help.cpp #, fuzzy msgid "%d match." -msgstr "S'han trobat %d coincidències." +msgstr "%d coincidència." #: editor/code_editor.cpp editor/editor_help.cpp #, fuzzy msgid "%d matches." -msgstr "S'han trobat %d coincidències." +msgstr "%d coincidències." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" @@ -722,6 +720,10 @@ msgstr "Selecció Només" msgid "Standard" msgstr "Està ndard" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Panell d'Scripts" + #: 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 @@ -800,6 +802,11 @@ msgid "Extra Call Arguments:" msgstr "Arguments de Crida addicionals:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Selecciona un Mètode" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Avançat" @@ -978,7 +985,7 @@ msgid "Resource" msgstr "Recurs" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "CamÃ" @@ -1152,7 +1159,7 @@ msgstr "Llicència" #: editor/editor_about.cpp #, fuzzy msgid "Third-party Licenses" -msgstr "Llicència externa" +msgstr "Llicències de Tercers" #: editor/editor_about.cpp #, fuzzy @@ -1182,7 +1189,7 @@ msgstr "Llicències" #: editor/editor_asset_installer.cpp editor/project_manager.cpp #, fuzzy msgid "Error opening package file, not in ZIP format." -msgstr "Error en obrir el paquet d'arxius. El fitxer no té el format zip." +msgstr "Error en obrir el arxiu comprimit, el fitxer no té el format ZIP." #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" @@ -1252,7 +1259,7 @@ msgstr "Elimina l'Efecte de Bus" #: editor/editor_audio_buses.cpp #, fuzzy msgid "Drag & drop to rearrange." -msgstr "Bus d'Àudio, reorganitza Arrossegant i Deixant anar." +msgstr "Arrossegueu i deixeu anar per reordenar." #: editor/editor_audio_buses.cpp msgid "Solo" @@ -1461,7 +1468,8 @@ msgid "Node Name:" msgstr "Nom del node:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nom" @@ -1714,6 +1722,11 @@ msgid "Erase Profile" msgstr "Esborrar Perfil" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "Administra els Perfils de CaracterÃstiques de l'Editor" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Importar Perfil(s)" @@ -2690,7 +2703,8 @@ msgstr "Reverteix Escena" msgid "Miscellaneous project or scene-wide tools." msgstr "Eines và ries o d'escena." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projecte" @@ -2930,8 +2944,9 @@ msgid "Play" msgstr "Reprodueix" #: editor/editor_node.cpp +#, fuzzy msgid "Pause the scene execution for debugging." -msgstr "" +msgstr "Pausa l’execució d’escena per a la depuració." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3041,6 +3056,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importa Plantilles des d'un Fitxer ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Gestor de Plantilles d'Exportació" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Exporta Projecte" @@ -3097,6 +3117,11 @@ msgstr "Obre l'Editor Següent" msgid "Open the previous Editor" msgstr "Obre l'Editor precedent" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "AvÃs" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3543,6 +3568,11 @@ msgid "Select Template File" msgstr "Seleccioneu un Fitxer de Plantilla" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Carregant Plantilles d'Exportació" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Gestor de Plantilles d'Exportació" @@ -4693,6 +4723,11 @@ msgstr "Definiu l'animació final. Això és útil per a sub-transicions." msgid "Transition: " msgstr "Transició: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Mode d'Escombratge lateral" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4952,6 +4987,32 @@ msgid "Download for this asset is already in progress!" msgstr "Ja s'està baixant aquest actiu!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Llicència" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Llicència" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Primer" @@ -4973,7 +5034,7 @@ msgstr "Tot" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Cap resultat per \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy @@ -5067,8 +5128,9 @@ msgid "Grid Step:" msgstr "Pas de la Graella:" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Primary Line Every:" -msgstr "" +msgstr "LÃnia principal cada:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -5165,6 +5227,87 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Esquerra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Dreta" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Girar a la Dreta" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Vista Inferior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Sagnia Esquerra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Centra la Selecció" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Sagnia Dreta" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Part inferior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Vista Esquerra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Vista Superior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Vista Dreta" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Vista Inferior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Relació d'Escala:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Només Ancoratges" @@ -5858,6 +6001,11 @@ msgid "Remove item %d?" msgstr "Elimina l'element %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Biblioteca de Models (MeshLibrary)..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Afegeix un Element" @@ -6500,6 +6648,23 @@ msgid "Save File As..." msgstr "Anomena i Desa..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importa un Tema" @@ -6629,10 +6794,6 @@ msgstr "Tanca la Documentació" msgid "Run" msgstr "Executar" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Panell d'Scripts" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Pas a Pas (per instruccions)" @@ -7807,6 +7968,7 @@ msgid "Data Type:" msgstr "Tipus de Dades:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Icona" @@ -7826,6 +7988,11 @@ msgstr "Color" msgid "Constant" msgstr "Constant" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Elimina la Selecció" @@ -7942,6 +8109,20 @@ msgid "Merge from Scene" msgstr "Combina-ho a partir de l'Escena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "AutoTiles" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Nou %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Coordenada Següent" @@ -7960,6 +8141,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Seleccioneu la forma, sub-rajola o rajola anterior." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Mode Regió" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Mode Col·lisió" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Mode Oclusió" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Mode Navegació" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Mode mà scara de bits" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Mode Prioritat" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Ãndex:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Mode Regió" @@ -9221,6 +9437,15 @@ msgid "Runnable" msgstr "Executable" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Afegeix una Entrada" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Eliminar el Pedaç '%s' de la llista?" @@ -9331,6 +9556,11 @@ msgid "Make Patch" msgstr "Crea un Pedaç" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Fitxers" + +#: editor/project_export.cpp msgid "Features" msgstr "CaracterÃstiques" @@ -9383,6 +9613,15 @@ msgstr "Mode d'Exportació?" msgid "Export All" msgstr "Exportar Tot" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Fitxers" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Manquen les plantilles d'exportació per aquesta plataforma:" @@ -9693,6 +9932,11 @@ msgid "Projects" msgstr "Projecte" #: editor/project_manager.cpp +#, fuzzy +msgid "Last Modified" +msgstr "Última modificació" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Explora" @@ -10345,8 +10589,9 @@ msgid "Delete the root node \"%s\"?" msgstr "Elimina el(s) Node(s) de Graf d'Ombreig" #: editor/scene_tree_dock.cpp +#, fuzzy msgid "Delete node \"%s\" and its children?" -msgstr "" +msgstr "Voleu suprimir el node \"%s\" i els seus fills?" #: editor/scene_tree_dock.cpp #, fuzzy @@ -11064,8 +11309,9 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp +#, fuzzy msgid "Expected a string of length 1 (a character)." -msgstr "" +msgstr "S'esperava una cadena de longitud 1 (un carà cter)." #: modules/gdscript/gdscript_functions.cpp #, fuzzy @@ -11364,6 +11610,16 @@ msgstr "Estableix el Tipus de Variable" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Afegeix una Entrada" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Afegir port de sortida" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "" "El Nom no és và lid. No pot coincidir amb noms de tipus integrats ja " @@ -11431,16 +11687,6 @@ msgstr "Afegeix un Senyal" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Afegeix una Entrada" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Afegir port de sortida" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Elimina el punt" @@ -11580,12 +11826,14 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Select at least one node with sequence port." -msgstr "" +msgstr "Seleccioneu almenys un node amb port de seqüència." #: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Intenteu tenir només una entrada de seqüència a la selecció." #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -11623,6 +11871,21 @@ msgstr "Membres:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Modifica el Tipus de Base" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Afegir Node..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Afegeix una Funció" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funció:" @@ -11858,28 +12121,10 @@ msgid "Identifier is missing." msgstr "Falta l'identificador." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "No es permet el carà cter '%s' en l'Identificador." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "Un dÃgit no pot ser el primer carà cter en un segment Identificador." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"El carà cter '%s' no pot ser el primer carà cter en un segment Identificador." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "L'identificador ha de tenir com a mÃnim un separador '. '." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -11888,12 +12133,14 @@ msgid "Invalid Identifier:" msgstr "Identificador no và lid:" #: platform/iphone/export/export.cpp +#, fuzzy msgid "Required icon is not specified in the preset." msgstr "" +"La icona necessà ria no està especificada a la configuració preestablerta." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Aturar Servidor HTTP" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -12600,6 +12847,18 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Les constants no es poden modificar." +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "Un dÃgit no pot ser el primer carà cter en un segment Identificador." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "El carà cter '%s' no pot ser el primer carà cter en un segment " +#~ "Identificador." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "L'identificador ha de tenir com a mÃnim un separador '. '." + #~ msgid "Pause the scene" #~ msgstr "Pausa l'escena" @@ -13121,9 +13380,6 @@ msgstr "Les constants no es poden modificar." #~ msgid "Rotate 270 degrees" #~ msgstr "Gira-ho 270 graus" -#~ msgid "Warning" -#~ msgstr "AvÃs" - #~ msgid "Variable" #~ msgstr "Variable" @@ -13587,9 +13843,6 @@ msgstr "Les constants no es poden modificar." #~ msgid "Re-Import Changed Resources" #~ msgstr "ReImporta Recursos Modificats" -#~ msgid "Loading Export Templates" -#~ msgstr "Carregant Plantilles d'Exportació" - #, fuzzy #~ msgid "" #~ "\n" diff --git a/editor/translations/cs.po b/editor/translations/cs.po index d359c22f28..42980aad01 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -13,12 +13,14 @@ # Peeter Angelo <contact@peeterangelo.com>, 2019. # VojtechBrezina <vojta.brezina@gmail.com>, 2019. # Garrom Orc Shaman <garromorcshaman@gmail.com>, 2019. +# David HusiÄka <davidek251@seznam.cz>, 2019. +# LuboÅ¡ NeÄas <lubosnecas506@seznam.cz>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-08-21 15:57+0000\n" -"Last-Translator: VojtechBrezina <vojta.brezina@gmail.com>\n" +"PO-Revision-Date: 2019-12-09 11:36+0000\n" +"Last-Translator: LuboÅ¡ NeÄas <lubosnecas506@seznam.cz>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" "Language: cs\n" @@ -26,7 +28,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 3.9-dev\n" +"X-Generator: Weblate 3.10-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -70,31 +72,31 @@ msgstr "PÅ™i volánà '%s':" #: core/ustring.cpp msgid "B" -msgstr "" +msgstr "B" #: core/ustring.cpp msgid "KiB" -msgstr "" +msgstr "KiB" #: core/ustring.cpp msgid "MiB" -msgstr "" +msgstr "MiB" #: core/ustring.cpp msgid "GiB" -msgstr "" +msgstr "GiB" #: core/ustring.cpp msgid "TiB" -msgstr "" +msgstr "TiB" #: core/ustring.cpp msgid "PiB" -msgstr "" +msgstr "PiB" #: core/ustring.cpp msgid "EiB" -msgstr "" +msgstr "EiB" #: editor/animation_bezier_editor.cpp msgid "Free" @@ -276,9 +278,8 @@ msgid "Time (s): " msgstr "ÄŒas (s): " #: editor/animation_track_editor.cpp -#, fuzzy msgid "Toggle Track Enabled" -msgstr "Povolit" +msgstr "PÅ™epÃnacà Stopa Povolena" #: editor/animation_track_editor.cpp msgid "Continuous" @@ -537,8 +538,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Upravit" @@ -728,6 +730,10 @@ msgstr "Pouze výbÄ›r" msgid "Standard" msgstr "Standard" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -806,6 +812,11 @@ msgid "Extra Call Arguments:" msgstr "Dalšà argumenty volánÃ:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Vybrat metodu" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "PokroÄilé" @@ -987,7 +998,7 @@ msgid "Resource" msgstr "Zdroj" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Cesta" @@ -1472,7 +1483,8 @@ msgid "Node Name:" msgstr "Název uzlu:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Název" @@ -1740,6 +1752,11 @@ msgstr "Vymazat oblast" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "Spravovat exportnà šablony" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "%d vÃce souborů" @@ -2116,7 +2133,7 @@ msgstr "Stáhnout" #: editor/editor_network_profiler.cpp msgid "Up" -msgstr "" +msgstr "Nahoru" #: editor/editor_network_profiler.cpp editor/editor_node.cpp msgid "Node" @@ -2140,7 +2157,7 @@ msgstr "" #: editor/editor_node.cpp editor/project_manager.cpp msgid "New Window" -msgstr "" +msgstr "Nové okno" #: editor/editor_node.cpp msgid "Project export failed with error code %d." @@ -2712,7 +2729,8 @@ msgstr "Vrátit scénu" msgid "Miscellaneous project or scene-wide tools." msgstr "Různé nástroje pro projekt nebo scény." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekt" @@ -3055,6 +3073,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importovat Å¡ablony ze ZIP souboru" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Správce exportnÃch Å¡ablon" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Exportovat projekt" @@ -3111,6 +3134,11 @@ msgstr "OtevÅ™Ãt dalšà editor" msgid "Open the previous Editor" msgstr "OtevÅ™Ãt pÅ™edchozà editor" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "VarovánÃ" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3560,6 +3588,11 @@ msgid "Select Template File" msgstr "Vybrat soubor Å¡ablony" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Spravovat exportnà šablony" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Správce exportnÃch Å¡ablon" @@ -4659,7 +4692,7 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp msgid "Travel" -msgstr "" +msgstr "Cestovat" #: editor/plugins/animation_state_machine_editor.cpp msgid "Start and end nodes are needed for a sub-transition." @@ -4713,6 +4746,11 @@ msgstr "" msgid "Transition: " msgstr "PÅ™echod: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "RAW mód" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4973,6 +5011,32 @@ msgid "Download for this asset is already in progress!" msgstr "Stahovánà tohoto assetu právÄ› probÃhá!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licence" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licence" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "PrvnÃ" @@ -5178,6 +5242,87 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Levý" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Pravý" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "OtoÄit doprava" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Pohled zdola" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Odsadit zleva" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Vycentrovat výbÄ›r" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Odsadit zprava" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "DolnÃ" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Pohled zleva" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Pohled shora" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Pohled zprava" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Pohled zdola" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "PomÄ›r zvÄ›tÅ¡enÃ:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Pouze kotvy" @@ -5867,6 +6012,11 @@ msgid "Remove item %d?" msgstr "Odstranit %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "PÅ™idat položku" @@ -6505,6 +6655,23 @@ msgid "Save File As..." msgstr "Uložit soubor jako..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importovat motiv" @@ -6636,10 +6803,6 @@ msgstr "ZavÅ™Ãt dokumentaci" msgid "Run" msgstr "Spustit" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp #, fuzzy msgid "Step Into" @@ -7815,6 +7978,7 @@ msgid "Data Type:" msgstr "Datový typ:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikona" @@ -7834,6 +7998,11 @@ msgstr "Barva" msgid "Constant" msgstr "KonstantnÃ" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Téma" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Vymazat oznaÄené" @@ -7952,6 +8121,20 @@ msgid "Merge from Scene" msgstr "SlouÄit ze scény" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Nový textový soubor" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Nový %s" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "Dalšà skript" @@ -7971,6 +8154,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Režim otáÄenÃ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "InterpolaÄnà režim" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Editovat polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "VytvoÅ™it Navigation Mesh" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Režim otáÄenÃ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Expertnà režim:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Index:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Režim otáÄenÃ" @@ -9181,6 +9399,15 @@ msgstr "Spustitelný" #: editor/project_export.cpp #, fuzzy +msgid "Add initial export..." +msgstr "PÅ™idat vstup" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp +#, fuzzy msgid "Delete patch '%s' from list?" msgstr "Odstranit" @@ -9282,6 +9509,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Soubory" + +#: editor/project_export.cpp msgid "Features" msgstr "Funkce" @@ -9333,6 +9565,15 @@ msgstr "Režim exportu?" msgid "Export All" msgstr "Exportovat vÅ¡e" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Soubory" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Exportnà šablony pro tuto platformu chybÃ:" @@ -9597,6 +9838,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Skenovat" @@ -11262,6 +11507,16 @@ msgstr "Nastavit typ promÄ›nné" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "PÅ™idat vstup" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "PÅ™idat vstup" + +#: 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." @@ -11328,16 +11583,6 @@ msgstr "PÅ™idat signál" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "PÅ™idat vstup" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "PÅ™idat vstup" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Odstranit bod" @@ -11522,6 +11767,21 @@ msgstr "ÄŒlenové:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "ZmÄ›nit základnà typ" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "PÅ™idat uzel..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "PÅ™idat funkci" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funkce:" @@ -11726,28 +11986,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "Jméno nenà platný identifikátor:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12630,9 +12873,6 @@ msgstr "Konstanty nenà možné upravovat." #~ msgid "Update Always" #~ msgstr "Aktualizovat vždy" -#~ msgid "Raw Mode" -#~ msgstr "RAW mód" - #~ msgid "Path to Node:" #~ msgstr "Cesta k uzlu:" @@ -12767,9 +13007,6 @@ msgstr "Konstanty nenà možné upravovat." #~ msgid "RMB: Erase Point." #~ msgstr "RMB: Vymazat bod." -#~ msgid "New TextFile" -#~ msgstr "Nový textový soubor" - #~ msgid "Save Theme As" #~ msgstr "Uložit motiv jako" @@ -12841,9 +13078,6 @@ msgstr "Konstanty nenà možné upravovat." #~ msgid "Rotate 270 degrees" #~ msgstr "OtoÄit o 270 stupňů" -#~ msgid "Warning" -#~ msgstr "VarovánÃ" - #~ msgid "Variable" #~ msgstr "PromÄ›nná" diff --git a/editor/translations/da.po b/editor/translations/da.po index cd37bbc5f9..b49505965a 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -557,8 +557,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Rediger" @@ -748,6 +749,10 @@ msgstr "Kun Valgte" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -832,6 +837,11 @@ msgstr "Ekstra Call Argumenter:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Vælg Method" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "Balanceret" @@ -1014,7 +1024,7 @@ msgid "Resource" msgstr "Ressource" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Sti" @@ -1501,7 +1511,8 @@ msgid "Node Name:" msgstr "Node Navn:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Navn" @@ -1766,6 +1777,11 @@ msgstr "Slet points" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "Organiser Eksport Skabeloner" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "%d flere filer" @@ -2744,7 +2760,8 @@ msgstr "Gendan scene" msgid "Miscellaneous project or scene-wide tools." msgstr "Diverse projekt eller scene redskaber." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekt" @@ -3089,6 +3106,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importér Skabeloner Fra ZIP Fil" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Eksporter Skabelon Manager" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Eksporter Projekt" @@ -3145,6 +3167,11 @@ msgstr "Ã…bn næste Editor" msgid "Open the previous Editor" msgstr "Ã…ben den forrige Editor" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Advarsler" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3589,6 +3616,11 @@ msgid "Select Template File" msgstr "Vælg template fil" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Organiser Eksport Skabeloner" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Eksporter Skabelon Manager" @@ -4811,6 +4843,11 @@ msgstr "" msgid "Transition: " msgstr "Overgang" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Eksporter Projekt" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -5074,6 +5111,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licens" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licens" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5278,6 +5341,77 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Lineær" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Lineær" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Skalaforhold:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5958,6 +6092,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MaskeBibliotek..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6612,6 +6751,23 @@ msgid "Save File As..." msgstr "Gem Som..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6745,10 +6901,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7918,6 +8070,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7937,6 +8090,11 @@ msgstr "" msgid "Constant" msgstr "Konstant" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Ã…ben en Fil" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Slet valgte" @@ -8053,6 +8211,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Vis filer" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -8071,6 +8242,39 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Interpolationsmetode" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Interpolationsmetode" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Rediger Poly" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Rediger Poly" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Eksporter Projekt" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Interpolationsmetode" @@ -9267,6 +9471,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Tilføj punkt" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9368,6 +9581,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Filer" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9423,6 +9641,15 @@ msgstr "Eksporter Projekt" msgid "Export All" msgstr "Eksporter" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Filer" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9692,6 +9919,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11351,6 +11582,16 @@ msgstr "Sæt Variabel Type" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Tilføj punkt" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Tilføj punkt" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "" "Ugyldigt navn. Det mÃ¥ ikke være i konflikt med eksisterende built-in type " @@ -11418,16 +11659,6 @@ msgstr "Tilføj Signal" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Tilføj punkt" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Tilføj punkt" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Fjern punkt" @@ -11605,6 +11836,21 @@ msgstr "Medlemmer:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Skift Base Type" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Tilføj Node" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Tilføj Funktion" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funktioner:" @@ -11811,28 +12057,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "Navnet er ikke et gyldigt id:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12723,10 +12952,6 @@ msgstr "Konstanter kan ikke ændres." #~ msgstr "Zoom Ind" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Vis filer" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "Zoom Ind" diff --git a/editor/translations/de.po b/editor/translations/de.po index ab157ee779..bd475d7922 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -47,11 +47,12 @@ # Linux User <no-ads@mail.de>, 2019. # David May <wasser@gmail.com>, 2019. # Draco Drache <jan.holger.te@gmail.com>, 2019. +# Jonas <dotchucknorris@gmx.de>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-25 04:04+0000\n" +"PO-Revision-Date: 2019-12-15 05:52+0000\n" "Last-Translator: So Wieso <sowieso@dukun.de>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" @@ -573,8 +574,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Bearbeiten" @@ -760,6 +762,10 @@ msgstr "Nur Auswahl" msgid "Standard" msgstr "Standard" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Seitenleiste umschalten" + #: 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 @@ -838,6 +844,11 @@ msgid "Extra Call Arguments:" msgstr "Zusätzliche Aufrufparameter:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Methode auswählen" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Erweitert" @@ -1015,7 +1026,7 @@ msgid "Resource" msgstr "Ressource" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Pfad" @@ -1491,7 +1502,8 @@ msgid "Node Name:" msgstr "Node-Name:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Name" @@ -1742,6 +1754,11 @@ msgid "Erase Profile" msgstr "Profil löschen" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "Verwalte Editorfunktionenprofile" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Profil(e) importieren" @@ -2716,7 +2733,8 @@ msgstr "Szene zurücksetzen" msgid "Miscellaneous project or scene-wide tools." msgstr "Sonstiges Projekt oder szenenübergreifende Werkzeuge." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekt" @@ -2754,7 +2772,7 @@ msgstr "Werkzeuge" #: editor/editor_node.cpp msgid "Orphan Resource Explorer..." -msgstr "Verwaiste-Ressourcen-Dateimanager…" +msgstr "Verwaltung nicht verwendeter Ressourcen…" #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2930,7 +2948,7 @@ msgstr "Problem-Melder" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" -msgstr "Community (Gemeinschaft)" +msgstr "Internetgemeinschaft" #: editor/editor_node.cpp msgid "About" @@ -3060,6 +3078,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Vorlagen aus ZIP-Datei importieren" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Exportvorlagenverwaltung" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Projekt exportieren" @@ -3116,6 +3139,11 @@ msgstr "Nächsten Editor öffnen" msgid "Open the previous Editor" msgstr "Vorigen Editor öffnen" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Warnung" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Keine Unter-Ressourcen gefunden." @@ -3330,8 +3358,8 @@ msgid "" "No runnable export preset found for this platform.\n" "Please add a runnable preset in the export menu." msgstr "" -"Keine ausführbare Exportvorlage für diese Plattform gefunden.\n" -"Im Exportmenü kann eine ausführbare Vorlage hinzugefügt werden." +"Keine Soforteinsatz-Exportvorlage für diese Plattform gefunden.\n" +"Im Exportmenü kann eine Vorlage als Soforteinsatz markiert werden." #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -3563,6 +3591,10 @@ msgid "Select Template File" msgstr "Vorlagendatei auswählen" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Godot Exportvorlagen" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Exportvorlagenverwaltung" @@ -4703,6 +4735,11 @@ msgstr "End-Animation festlegen. Hilfreich bei Sub-Transitionen." msgid "Transition: " msgstr "Übergang: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Schwenkmodus" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4957,6 +4994,30 @@ msgid "Download for this asset is already in progress!" msgstr "Dieser Nutzerinhalt wird bereits herunter geladen!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Kürzlich aktualisiert" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Lange nicht aktualisiert" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Name (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Name (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Lizenz (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Lizenz (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Erste" @@ -4978,7 +5039,7 @@ msgstr "Alle" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "Keine Ergebnisse für „%s“." +msgstr "Keine Ergebnisse für \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5085,7 +5146,7 @@ msgstr "Rotationsabstand:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Step:" -msgstr "Skalierungsabschnitte:" +msgstr "Skalierungsschritte:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" @@ -5160,6 +5221,88 @@ msgstr "" "ihre Ausmaße." #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Links" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Rechts" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Nach rechts rotieren" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Sicht von unten" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Nach links einrücken" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Auswahl zentrieren" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Nach rechts einrücken" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Unten" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Sicht von links" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Sicht von oben" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Sicht von rechts" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Sicht von unten" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Full Rect" +msgstr "Vollständiger Name" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Skalierungsverhältnis:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "nur Anker" @@ -5829,6 +5972,11 @@ msgid "Remove item %d?" msgstr "Element %d entfernen?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Mesh-Bibliothek..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Element hinzufügen" @@ -6465,6 +6613,23 @@ msgid "Save File As..." msgstr "Datei speichern als..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Motiv importieren" @@ -6591,10 +6756,6 @@ msgstr "Dokumentation schließen" msgid "Run" msgstr "Ausführen" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Seitenleiste umschalten" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Hineinspringen" @@ -7727,6 +7888,7 @@ msgid "Data Type:" msgstr "Datentyp:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Symbol" @@ -7746,6 +7908,11 @@ msgstr "Farbe" msgid "Constant" msgstr "Konstant" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Motiv" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Auswahl löschen" @@ -7857,6 +8024,20 @@ msgid "Merge from Scene" msgstr "Aus Szene zusammenführen" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Autokacheln deaktivieren" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Atlas:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Nächste Koordinate" @@ -7873,6 +8054,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Die vorherige Form oder Kachel auswählen." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Bereichsmodus" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Kollisionsmodus" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Verschlussmodus" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Navigationsmodus" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Bitmaskenmodus" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Prioritätsmodus" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Index:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Bereichsmodus" @@ -9090,7 +9306,15 @@ msgstr "Visual-Shader-Modus geändert" #: editor/project_export.cpp msgid "Runnable" -msgstr "ausführbar" +msgstr "Soforteinsatz" + +#: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Ersten Export hinzufügen…" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Vorherige Patches hinzufügen…" #: editor/project_export.cpp msgid "Delete patch '%s' from list?" @@ -9147,9 +9371,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 "" -"Falls augeählt, werden die Voreinstellungen für die Ein-Klick-Entwicklung " -"verfügbar sein.\n" -"Nur eine Voreinstellung pro Platform muss ausführbar sein." +"Falls aktiviert wird diese Vorlage beim Soforteinsatz verwendet.\n" +"Nur eine Vorlage pro Plattform kann für den Soforteinsatz aktiviert werden." #: editor/project_export.cpp msgid "Export Path" @@ -9204,6 +9427,11 @@ msgid "Make Patch" msgstr "Erstelle Patch" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Dateien" + +#: editor/project_export.cpp msgid "Features" msgstr "Funktionen" @@ -9255,6 +9483,15 @@ msgstr "Export-Modus?" msgid "Export All" msgstr "Alles exportieren" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Dateien" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Export-Templates für diese Systeme fehlen:" @@ -9562,6 +9799,10 @@ msgid "Projects" msgstr "Projekte" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Zuletzt bearbeitet" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Scannen" @@ -11182,6 +11423,14 @@ msgid "Set Variable Type" msgstr "Variablentyp festlegen" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Eingangsschnittstelle hinzufügen" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Ausgangsschnittstelle hinzufügen" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "Eine existierende eingebaute Funktion überschreiben." @@ -11242,14 +11491,6 @@ msgid "Add Signal" msgstr "Signal hinzufügen" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "Eingangsschnittstelle hinzufügen" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "Ausgangsschnittstelle hinzufügen" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "Eingangsschnittstelle entfernen" @@ -11431,6 +11672,21 @@ msgid "Members:" msgstr "Mitglieder:" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change Base Type:" +msgstr "Basistyp ändern" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Knoten hinzufügen..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Funktion hinzufügen" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "Funktionsname" @@ -11650,30 +11906,10 @@ msgid "Identifier is missing." msgstr "Bezeichner fehlt." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Bezeichnersegmente dürfen keine Länge gleich Null haben." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "Das Zeichen ‚%s‘ ist in Bezeichnern nicht gestattet." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" -"Eine Ziffer kann nicht das erste Zeichen eines Bezeichnersegments sein." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"Das Zeichen ‚%s‘ kann nicht das erste Zeichen in einem Bezeichnersegment " -"sein." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "Der Bezeichner muss mindestens einen Punkt-Unterteiler ‚.‘ haben." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" "App-Store-Team-ID nicht festgelegt – Projekt kann nicht konfiguriert werden." @@ -11688,7 +11924,7 @@ msgstr "Benötigtes Icon wurde nicht in der Vorlage festgelegt." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "HTTP-Server stoppen" +msgstr "HTTP Server Anhalten" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -12413,6 +12649,22 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." msgid "Constants cannot be modified." msgstr "Konstanten können nicht verändert werden." +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "Bezeichnersegmente dürfen keine Länge gleich Null haben." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Eine Ziffer kann nicht das erste Zeichen eines Bezeichnersegments sein." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Das Zeichen ‚%s‘ kann nicht das erste Zeichen in einem Bezeichnersegment " +#~ "sein." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "Der Bezeichner muss mindestens einen Punkt-Unterteiler ‚.‘ haben." + #~ msgid "Pause the scene" #~ msgstr "Szene pausieren" @@ -13075,9 +13327,6 @@ msgstr "Konstanten können nicht verändert werden." #~ msgid "Rotate 270 degrees" #~ msgstr "Drehe auf 270 Grad" -#~ msgid "Warning" -#~ msgstr "Warnung" - #~ msgid "Variable" #~ msgstr "Variable" @@ -13570,9 +13819,6 @@ msgstr "Konstanten können nicht verändert werden." #~ msgid "Re-Import Changed Resources" #~ msgstr "Veränderte Ressourcen neu importieren" -#~ msgid "Loading Export Templates" -#~ msgstr "Lade Exportvorlagen" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -14163,9 +14409,6 @@ msgstr "Konstanten können nicht verändert werden." #~ msgid "Create Android keystore" #~ msgstr "Erzeuge Android-Schlüssel" -#~ msgid "Full name" -#~ msgstr "Vollständiger Name" - #~ msgid "Organizational unit" #~ msgstr "Organisatorische Einheit" @@ -14270,9 +14513,6 @@ msgstr "Konstanten können nicht verändert werden." #~ msgid "Lossy Quality:" #~ msgstr "Verlustbehaftete Qualität:" -#~ msgid "Atlas:" -#~ msgstr "Atlas:" - #~ msgid "Shrink By:" #~ msgstr "Verkleinern nach:" diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po index 5b8d7da474..ccf54f219c 100644 --- a/editor/translations/de_CH.po +++ b/editor/translations/de_CH.po @@ -535,8 +535,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -725,6 +726,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -806,6 +811,11 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Node erstellen" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -984,7 +994,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1459,7 +1469,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1712,6 +1723,10 @@ msgid "Erase Profile" msgstr "Oberfläche %d" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp #, fuzzy msgid "Import Profile(s)" msgstr "Importierte Projekte" @@ -2653,7 +2668,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "Verschiedene Projekte oder Szenenweite Werkzeuge." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp #, fuzzy msgid "Project" msgstr "Projektname:" @@ -2977,6 +2993,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Ungültige Bilder löschen" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Projekt exportieren" @@ -3036,6 +3057,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3483,6 +3508,11 @@ msgid "Select Template File" msgstr "Node(s) löschen" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Ungültige Bilder löschen" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4675,6 +4705,11 @@ msgstr "" msgid "Transition: " msgstr "Transition-Node" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Node erstellen" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -4933,6 +4968,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5136,6 +5195,81 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Node erstellen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Node erstellen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Node erstellen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Node erstellen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Node erstellen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Node erstellen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Bild einfügen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5815,6 +5949,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6472,6 +6610,23 @@ msgid "Save File As..." msgstr "Datei speichern" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6602,10 +6757,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7764,6 +7915,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7783,6 +7935,11 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Datei öffnen" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7899,6 +8056,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7916,6 +8085,40 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Node erstellen" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Animations-Node" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Script hinzufügen" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Animations-Node" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Node erstellen" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Projekt exportieren" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Node erstellen" @@ -9100,6 +9303,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Script hinzufügen" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9202,6 +9414,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Datei(en) öffnen" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9257,6 +9474,15 @@ msgstr "Projekt exportieren" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr "Datei(en) öffnen" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9527,6 +9753,10 @@ msgid "Projects" msgstr "Projektname:" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11158,6 +11388,16 @@ msgid "Set Variable Type" msgstr "Ungültige Bilder löschen" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Script hinzufügen" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Script hinzufügen" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -11224,16 +11464,6 @@ msgstr "Script hinzufügen" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Script hinzufügen" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Script hinzufügen" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Ungültige Bilder löschen" @@ -11422,6 +11652,21 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change Base Type:" +msgstr "Typ ändern" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Node" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Node erstellen" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11622,27 +11867,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12330,10 +12558,6 @@ msgstr "" #~ msgid "View log" #~ msgstr "Datei(en) öffnen" -#, fuzzy -#~ msgid "Raw Mode" -#~ msgstr "Node erstellen" - #~ msgid "Path to Node:" #~ msgstr "Pfad zum Node:" diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index d2a8b188f4..7aa6ce9c8e 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -501,8 +501,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -688,6 +689,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -764,6 +769,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -935,7 +944,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1400,7 +1409,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1640,6 +1650,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2548,7 +2562,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2859,6 +2874,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2915,6 +2934,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3345,6 +3368,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4455,6 +4482,10 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4709,6 +4740,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4900,6 +4955,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5549,6 +5672,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6174,6 +6301,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6300,10 +6444,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7418,6 +7558,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7437,6 +7578,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7545,6 +7690,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7561,6 +7718,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8685,6 +8870,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8784,6 +8977,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8835,6 +9032,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9092,6 +9297,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10662,6 +10871,14 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10722,14 +10939,6 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "" @@ -10900,6 +11109,18 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11096,27 +11317,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/el.po b/editor/translations/el.po index 7aea9126c6..165e14bc2d 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-09-07 13:51+0000\n" -"Last-Translator: Overloaded <manoschool@yahoo.gr>\n" +"PO-Revision-Date: 2019-12-21 08:37+0000\n" +"Last-Translator: George Tsiamasiotis <gtsiam@windowslive.com>\n" "Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/" "el/>\n" "Language: el\n" @@ -18,7 +18,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 3.9-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -64,32 +64,31 @@ msgstr "Στην κλήση στο '%s':" #: core/ustring.cpp msgid "B" -msgstr "" +msgstr "B" #: core/ustring.cpp msgid "KiB" -msgstr "" +msgstr "KiB" #: core/ustring.cpp -#, fuzzy msgid "MiB" -msgstr "Μείξη" +msgstr "MiB" #: core/ustring.cpp msgid "GiB" -msgstr "" +msgstr "GiB" #: core/ustring.cpp msgid "TiB" -msgstr "" +msgstr "TiB" #: core/ustring.cpp msgid "PiB" -msgstr "" +msgstr "PiB" #: core/ustring.cpp msgid "EiB" -msgstr "" +msgstr "EiB" #: editor/animation_bezier_editor.cpp msgid "Free" @@ -279,11 +278,11 @@ msgstr "Συνεχόμενη" #: editor/animation_track_editor.cpp msgid "Discrete" -msgstr "ΞεχωÏιστή" +msgstr "ΔιακÏιτή" #: editor/animation_track_editor.cpp msgid "Trigger" -msgstr "Άμεση" +msgstr "Σκανδαλιστική" #: editor/animation_track_editor.cpp msgid "Capture" @@ -500,11 +499,9 @@ msgid "Warning: Editing imported animation" msgstr "Î Ïοσοχή: ΕπεξεÏγασία εισαγμÎνης κίνησης" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select an AnimationPlayer node to create and edit animations." msgstr "" -"ΕπιλÎξτε Îνα AnimationPlayer από την ιεÏαÏχία της σκηνής για να " -"επεξεÏγαστείτε animations." +"ΕπιλÎξτε Îναν κόμβο AnimationPlayer για δημιουÏγία και επεξεÏγασία κινήσεων." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." @@ -534,8 +531,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "ΕπεξεÏγασία" @@ -636,9 +634,8 @@ msgid "Scale Ratio:" msgstr "Λόγος μεγÎθυνσης:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Επιλογή κομματιών για αντιγÏαφή:" +msgstr "Επιλογή Κομματιών για ΑντιγÏαφή" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -650,9 +647,8 @@ msgid "Copy" msgstr "ΑντιγÏαφή" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Αποεπιλογή Όλων" +msgstr "Επιλογή Όλων/ΚανÎνα" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -691,14 +687,12 @@ msgid "Replaced %d occurrence(s)." msgstr "Αντικαταστάθηκαν %d εμφανίσεις." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d match." -msgstr "Î’ÏÎθηκαν %d αποτελÎσματα." +msgstr "%d αποτÎλεσμα." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d matches." -msgstr "Î’ÏÎθηκαν %d αποτελÎσματα." +msgstr "%d αποτελÎσματα." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" @@ -725,6 +719,10 @@ msgstr "Μόνο στην επιλογή" msgid "Standard" msgstr "Τυπική" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Εναλλαγή πλαισίου δεσμών ενεÏγειών" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -803,6 +801,11 @@ msgid "Extra Call Arguments:" msgstr "ΕπιπλÎον παÏάμετÏοι κλήσης:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Επιλογή μεθόδου" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Για Î ÏοχωÏημÎνους" @@ -982,7 +985,7 @@ msgid "Resource" msgstr "Î ÏŒÏος" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "ΔιαδÏομή" @@ -1183,9 +1186,8 @@ msgid "Licenses" msgstr "Άδειες" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Error opening package file, not in ZIP format." -msgstr "Σφάλμα κατά το άνοιγμα του πακÎτου, δεν είναι αÏχείο zip." +msgstr "Σφάλμα ανοίγματος αÏχείου πακÎτου, δεν είναι σε μοÏφή ZIP." #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" @@ -1253,9 +1255,8 @@ msgid "Delete Bus Effect" msgstr "ΔιαγÏαφή εφΠδιαÏλου ήχου" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Drag & drop to rearrange." -msgstr "Δίαυλος ήχου, ΣÏÏσιμο και απόθεση για αναδιάταξη." +msgstr "ΜεταφοÏά & απόθεση για αναδιάταξη." #: editor/editor_audio_buses.cpp msgid "Solo" @@ -1457,7 +1458,8 @@ msgid "Node Name:" msgstr "Όνομα κόμβου:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Όνομα" @@ -1707,6 +1709,11 @@ msgid "Erase Profile" msgstr "ΔιαγÏαφή Î Ïοφίλ" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "ΔιαχείÏιση Î Ïοφίλ Δυνατοτήτων ΕπεξεÏγαστή" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Εισαγωγή Î Ïοφίλ" @@ -1907,9 +1914,8 @@ msgid "Inherited by:" msgstr "ΚληÏονομείται από:" #: editor/editor_help.cpp -#, fuzzy msgid "Brief Description" -msgstr "ΣÏντομη πεÏιγÏαφή:" +msgstr "ΣÏντομη ΠεÏιγÏαφή" #: editor/editor_help.cpp msgid "Properties" @@ -1940,9 +1946,8 @@ msgid "Class Description" msgstr "ΠεÏιγÏαφή κλάσης" #: editor/editor_help.cpp -#, fuzzy msgid "Online Tutorials" -msgstr "Online Tutorial:" +msgstr "Διαδικτυακή Εκμάθηση" #: editor/editor_help.cpp msgid "" @@ -2065,7 +2070,7 @@ msgstr "Εκκινιση" #: editor/editor_network_profiler.cpp msgid "%s/s" -msgstr "" +msgstr "%s/δευτ." #: editor/editor_network_profiler.cpp msgid "Down" @@ -2081,19 +2086,19 @@ msgstr "Κόμβος" #: editor/editor_network_profiler.cpp msgid "Incoming RPC" -msgstr "" +msgstr "ΕισεÏχόμενα RPC" #: editor/editor_network_profiler.cpp msgid "Incoming RSET" -msgstr "" +msgstr "ΕισεÏχόμενα RSET" #: editor/editor_network_profiler.cpp msgid "Outgoing RPC" -msgstr "" +msgstr "ΕξεÏχόμενα RPC" #: editor/editor_network_profiler.cpp msgid "Outgoing RSET" -msgstr "" +msgstr "ΕξεÏχόμενα RSET" #: editor/editor_node.cpp editor/project_manager.cpp msgid "New Window" @@ -2685,37 +2690,34 @@ msgstr "ΕπαναφοÏά σκηνής" msgid "Miscellaneous project or scene-wide tools." msgstr "Λοιπά ÎÏγα ή εÏγαλεία για όλη τη σκηνή." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "ΈÏγο" #: editor/editor_node.cpp -#, fuzzy msgid "Project Settings..." -msgstr "Ρυθμίσεις ÎÏγου" +msgstr "Ρυθμίσεις ΈÏγου..." #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Version Control" -msgstr "Έκδοση:" +msgstr "ΔιαχείÏιση Εκδόσεων (VCS)" #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp msgid "Set Up Version Control" -msgstr "" +msgstr "ΡÏθμιση ΔιαχείÏισης Εκδόσεων" #: editor/editor_node.cpp msgid "Shut Down Version Control" -msgstr "" +msgstr "ΤεÏματισμός ΔιαχείÏισης Εκδόσεων" #: editor/editor_node.cpp -#, fuzzy msgid "Export..." -msgstr "Εξαγωγή" +msgstr "Εξαγωγή..." #: editor/editor_node.cpp -#, fuzzy msgid "Install Android Build Template..." -msgstr "Εγκατάσταση Î ÏοτÏπου Χτισίματος Android" +msgstr "Εγκατάσταση Î ÏοτÏπου Δόμησης Android..." #: editor/editor_node.cpp msgid "Open Project Data Folder" @@ -2726,9 +2728,8 @@ msgid "Tools" msgstr "ΕÏγαλεία" #: editor/editor_node.cpp -#, fuzzy msgid "Orphan Resource Explorer..." -msgstr "ΕξεÏευνητής αχÏησιμοποίητων πόÏων" +msgstr "ΕξεÏευνητής ΑχÏησιμοποίητων Î ÏŒÏων..." #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2832,9 +2833,8 @@ msgid "Editor" msgstr "ΕπεξεÏγαστής" #: editor/editor_node.cpp -#, fuzzy msgid "Editor Settings..." -msgstr "Ρυθμίσεις επεξεÏγαστή" +msgstr "Ρυθμίσεις ΕπεξεÏγαστή..." #: editor/editor_node.cpp msgid "Editor Layout" @@ -2871,14 +2871,12 @@ msgid "Open Editor Settings Folder" msgstr "Άνοιγμα φακÎλου Ïυθμίσεων επεξεÏγαστή" #: editor/editor_node.cpp -#, fuzzy msgid "Manage Editor Features..." -msgstr "ΔιαχείÏιση Δυνατοτήτων ΕπεξεÏγαστή" +msgstr "ΔιαχείÏιση Δυνατοτήτων ΕπεξεÏγαστή..." #: editor/editor_node.cpp -#, fuzzy msgid "Manage Export Templates..." -msgstr "ΔιαχείÏιση Ï€ÏοτÏπων εξαγωγής" +msgstr "ΔιαχείÏιση Î ÏοτÏπων Εξαγωγής..." #: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp msgid "Help" @@ -2924,7 +2922,7 @@ msgstr "ΑναπαÏαγωγή" #: editor/editor_node.cpp msgid "Pause the scene execution for debugging." -msgstr "" +msgstr "ΠαÏση εκτÎλεσης σκηνής για αποσφαλμάτωση." #: editor/editor_node.cpp msgid "Pause Scene" @@ -2998,7 +2996,7 @@ msgstr "ΧωÏις αποθήκευση" #: editor/editor_node.cpp msgid "Android build template is missing, please install relevant templates." msgstr "" -"Λείπει το Ï€Ïότυπο χτισίματος Android, παÏακαλοÏμε εγκαταστήστε τα σχετικά " +"Λείπει το Ï€Ïότυπο δόμησης Android, παÏακαλοÏμε εγκαταστήστε τα σχετικά " "Ï€Ïότυπα." #: editor/editor_node.cpp @@ -3015,23 +3013,36 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" +"Αυτό θα ετοιμάσει το ÎÏγο σας για Ï€ÏοσαÏμοσμÎνες δομήσεις Android " +"εγκαθιστώντας το Ï€Ïότυπο πηγών στο «res://android/build».\n" +"ΜποÏείτε μετά να κάνετε αλλαγÎÏ‚ και να δομήσετε το δικό σας Ï€ÏοσαÏμοσμÎνο " +"APK στην εξαγωγή (Ï€ÏοσθÎτοντας λειτουÏγικÎÏ‚ μονάδες - modules, αλλάζοντας το " +"AndroidManifest.xml, κλπ.).\n" +"Σημειώστε πως για να γίνουν Ï€ÏοσαÏμοσμÎνες δομήσεις αντί της χÏήσεις των " +"Îτοιμων APK, η επιλογή «Use Custom Build» Ï€ÏÎπει να ενεÏγοποιηθεί στο " +"Ï€Ïότυπο εξαγωγής για Android." #: editor/editor_node.cpp -#, fuzzy msgid "" "The Android build template is already installed in this project and it won't " "be overwritten.\n" "Remove the \"res://android/build\" directory manually before attempting this " "operation again." msgstr "" -"Το Ï€Ïότυπο χτισίματος Android είναι εγκατεστημÎνο και δεν θα " +"Το Ï€Ïότυπο δόμησης Android είναι εγκατεστημÎνο στο ÎÏγο και δεν θα " "αντικατασταθεί.\n" -"ΑφαιÏÎστε τον φάκελο «build» Ï€Ïιν ξαναδοκιμάσετε την ενÎÏγεια αυτήν." +"ΑφαιÏÎστε τον φάκελο «res://android/build» Ï€Ïιν ξαναδοκιμάσετε την ενÎÏγεια " +"αυτήν." #: editor/editor_node.cpp msgid "Import Templates From ZIP File" msgstr "Εισαγωγή Ï€ÏοτÏπων από αÏχείο ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "ΔιαχειÏιστής Ï€ÏοτÏπων εξαγωγής" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Εξαγωγή ÎÏγου" @@ -3088,10 +3099,14 @@ msgstr "Άνοιγμα του επόμενου επεξεÏγαστή" msgid "Open the previous Editor" msgstr "Άνοιγμα του Ï€ÏοηγοÏμενου επεξεÏγαστή" -#: editor/editor_path.cpp +#: editor/editor_node.h #, fuzzy +msgid "Warning!" +msgstr "Î Ïοειδοποίηση" + +#: editor/editor_path.cpp msgid "No sub-resources found." -msgstr "Δεν οÏίστηκε πηγαία επιφάνεια." +msgstr "Δεν βÏÎθηκαν υπό-πόÏοι." #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" @@ -3102,9 +3117,8 @@ msgid "Thumbnail..." msgstr "ΜικÏογÏαφία..." #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Main Script:" -msgstr "Άνοιγμα ΔÎσμης ΕνεÏγειών:" +msgstr "ΚÏÏια ΔÎσμη ΕνεÏγειών:" #: editor/editor_plugin_settings.cpp msgid "Edit Plugin" @@ -3364,11 +3378,9 @@ msgid "Download" msgstr "Λήψη" #: editor/export_template_manager.cpp -#, fuzzy msgid "Official export templates aren't available for development builds." msgstr "" -"Τα επίσημα Ï€Ïότυπα εξαγωγής δεν είναι διαθÎσιμα για τις εκδόσεις που " -"βÏίσκονται ακόμα σε εξÎλιξη" +"Τα επίσημα Ï€Ïότυπα εξαγωγής δεν είναι διαθÎσιμα για εκδόσεις ανάπτυξης." #: editor/export_template_manager.cpp msgid "(Missing)" @@ -3451,23 +3463,20 @@ msgid "Download Complete." msgstr "Η λήψη ολοκληÏώθηκε." #: editor/export_template_manager.cpp -#, fuzzy msgid "Cannot remove temporary file:" -msgstr "Δεν ήταν δυνατή η αποθήκευση θÎματος σε αÏχείο:" +msgstr "Αδυναμία αφαίÏεσης Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου:" #: editor/export_template_manager.cpp -#, fuzzy msgid "" "Templates installation failed.\n" "The problematic templates archives can be found at '%s'." msgstr "" -"Αποτυχία εγκατάστασης Ï€ÏοτÏπων. Οι Ï€ÏοβληματικÎÏ‚ αÏχειοθήκες μποÏοÏν να " -"βÏεθοÏν στο '%s'." +"Αποτυχία εγκατάστασης Ï€ÏοτÏπων.\n" +"Τα Ï€Ïοβληματικά Ï€Ïότυπα μποÏοÏν να βÏεθοÏν στο «%s»." #: editor/export_template_manager.cpp -#, fuzzy msgid "Error requesting URL:" -msgstr "Σφάλμα κατά Ï„o αίτημα για διεÏθηνση url: " +msgstr "Σφάλμα αίτησης URL:" #: editor/export_template_manager.cpp msgid "Connecting to Mirror..." @@ -3517,7 +3526,7 @@ msgstr "Σφάλμα χαιÏÎµÏ„Î¹ÏƒÎ¼Î¿Ï SSL" #: editor/export_template_manager.cpp msgid "Uncompressing Android Build Sources" -msgstr "Αποσυμπίεση Πηγών Χτισίματος Android" +msgstr "Αποσυμπίεση Πηγών Δόμησης Android" #: editor/export_template_manager.cpp msgid "Current Version:" @@ -3540,6 +3549,10 @@ msgid "Select Template File" msgstr "Επιλογή ΑÏχείου Î ÏοτÏπων" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Î ÏοτÏπων Εξαγωγής Godot" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "ΔιαχειÏιστής Ï€ÏοτÏπων εξαγωγής" @@ -3620,9 +3633,8 @@ msgid "New Inherited Scene" msgstr "ÎÎα ΚληÏονομημÎνη Σκηνή" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Set As Main Scene" -msgstr "ΚÏÏια σκηνή" +msgstr "ΟÏισμός Ως ΚÏÏια Σκηνή" #: editor/filesystem_dock.cpp msgid "Open Scenes" @@ -3661,9 +3673,8 @@ msgid "Move To..." msgstr "Μετακίνηση σε..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "New Scene..." -msgstr "ÎÎα σκηνή" +msgstr "ÎÎα Σκηνή..." #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "New Script..." @@ -3731,9 +3742,8 @@ msgid "Overwrite" msgstr "Αντικατάσταση" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Create Scene" -msgstr "ΔημιουÏγία από σκηνή" +msgstr "ΔημιουÏγία Σκηνής" #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -3813,23 +3823,20 @@ msgid "Invalid group name." msgstr "ΆκυÏο όνομα ομάδας." #: editor/groups_editor.cpp -#, fuzzy msgid "Rename Group" -msgstr "ΔιαχείÏηση ομάδων" +msgstr "Μετονομασία Ομάδας" #: editor/groups_editor.cpp -#, fuzzy msgid "Delete Group" -msgstr "ΔιαγÏαφή διάταξης" +msgstr "ΔιαγÏαφή Ομάδας" #: editor/groups_editor.cpp editor/node_dock.cpp msgid "Groups" msgstr "Ομάδες" #: editor/groups_editor.cpp -#, fuzzy msgid "Nodes Not in Group" -msgstr "Κόμβοι εκτός ομάδας" +msgstr "Κόμβοι Εκτός Ομάδας" #: editor/groups_editor.cpp editor/scene_tree_dock.cpp #: editor/scene_tree_editor.cpp @@ -3845,9 +3852,8 @@ msgid "Empty groups will be automatically removed." msgstr "Οι άδειες ομάδες θα διαγÏάφονται αυτομάτως." #: editor/groups_editor.cpp -#, fuzzy msgid "Group Editor" -msgstr "ΕπεξεÏγαστής Δεσμών ΕνεÏγειών" +msgstr "ΕπεξεÏγαστής Ομάδας" #: editor/groups_editor.cpp msgid "Manage Groups" @@ -4373,9 +4379,8 @@ msgid "Audio Clips" msgstr "Αποσπάσματα ήχου:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Functions" -msgstr "ΣυναÏτήσεις:" +msgstr "ΣυναÏτήσεις" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp @@ -4692,6 +4697,11 @@ msgstr "ΟÏισμός τελικής κίνησης. ΧÏήσιμο για Ï…Ï€ msgid "Transition: " msgstr "Μετάβαση: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "ΛειτουÏγία Μετακίνησης κάμεÏας" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4952,6 +4962,32 @@ msgid "Download for this asset is already in progress!" msgstr "Η λήψη είναι ήδη σε εξÎλιξη!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Άδεια" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Άδεια" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Î Ïώτο" @@ -5161,6 +5197,87 @@ msgstr "" "πεÏιθώÏια τους." #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "ΑÏιστεÏά" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Δεξιά" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "ΠεÏιστÏοφή Δεξιά" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Κάτω όψη" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "στοιχειοθÎτηση αÏιστεÏά" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "ΚεντÏάÏισμα επιλογής" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "στοιχειοθÎτηση δεξιά" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Κάτω" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "ΑÏιστεÏή όψη" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Πάνω όψη" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Δεξιά όψη" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Κάτω όψη" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Λόγος μεγÎθυνσης:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Μόνο άγκυÏες" @@ -5833,6 +5950,11 @@ msgid "Remove item %d?" msgstr "ΑφαίÏεση του στοιχείου %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Βιβλιοθήκη πλεγμάτων..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Î Ïοσθήκη στοιχείου" @@ -6477,6 +6599,23 @@ msgid "Save File As..." msgstr "Αποθήκευση ΑÏχείου Ως..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Εισαγωγή θÎματος" @@ -6604,10 +6743,6 @@ msgstr "Κλείσιμο τεκμηÏίωσης" msgid "Run" msgstr "ΕκτÎλεση" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Εναλλαγή πλαισίου δεσμών ενεÏγειών" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Βήμα μÎσα" @@ -7747,6 +7882,7 @@ msgid "Data Type:" msgstr "ΤÏπος δεδομÎνων:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Εικονίδιο" @@ -7766,6 +7902,11 @@ msgstr "ΧÏώμα" msgid "Constant" msgstr "ΣταθεÏή" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "ΘÎμα" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "ΔιαγÏαφή επιλογής" @@ -7878,6 +8019,20 @@ msgid "Merge from Scene" msgstr "Συγχώνευση από σκηνή" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "ΑπενεÏγοποίηση Αυτόματων Πλακιδίων" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "ÎÎο %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Επόμενη ΣυντεταγμÎνη" @@ -7894,6 +8049,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Επιλογή Ï€ÏοηγοÏμενου σχήματος, υπό-πλακιδίου, ή πλακιδίου." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "ΛειτουÏγία ΠεÏιοχής" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "ΛειτουÏγία ΣÏγκÏουσης" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "ΛειτουÏγία Εμποδίου" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "ΔημιουÏγία Πλοήγησης" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "ΛειτουÏγία Μάσκας Bit" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "ΛειτουÏγία Î ÏοτεÏαιότητας" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Δείκτης:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "ΛειτουÏγία ΠεÏιοχής" @@ -9123,6 +9313,15 @@ msgid "Runnable" msgstr "ΕκτελÎσιμο" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Î Ïοσθήκη θÏÏας εισόδου" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "ΔιαγÏαφή ενημÎÏωσης '%s' από την λίστα;" @@ -9234,6 +9433,11 @@ msgid "Make Patch" msgstr "ΔημιουÏγία ενημÎÏωσης" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " ΑÏχεία" + +#: editor/project_export.cpp msgid "Features" msgstr "Δυνατότητες" @@ -9285,6 +9489,15 @@ msgstr "ΛειτουÏγία εξαγωγής;" msgid "Export All" msgstr "Εξαγωγή Όλων" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " ΑÏχεία" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Τα Ï€Ïότυπα εξαγωγής για αυτή την πλατφόÏτμα λείπουν:" @@ -9593,6 +9806,10 @@ msgid "Projects" msgstr "ΈÏγο" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "ΣάÏωση" @@ -10715,12 +10932,11 @@ msgstr "Στοίβαξη καÏÎ" #: editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "Î ÏόγÏαμμα δημιουÏγίας Ï€Ïοφιλ" +msgstr "Î ÏόγÏαμμα ΔημιουÏγίας Î Ïοφίλ" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Network Profiler" -msgstr "Εξαγωγή Î Ïοφίλ" +msgstr "Î ÏόγÏαμμα ΔημιουÏγίας Î”Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï Î Ïοφίλ" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -11254,6 +11470,16 @@ msgstr "ΟÏισμός Ï„Ïπου μεταβλητής" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Î Ïοσθήκη θÏÏας εισόδου" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Î Ïοσθήκη θÏÏας εξόδου" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "Δεν μποÏεί να συγχÎεται με υπαÏκτό ενσωματωμÎνο όνομα Ï„Ïπου." @@ -11319,16 +11545,6 @@ msgstr "Î Ïοσθήκη σήματος" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Î Ïοσθήκη θÏÏας εισόδου" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Î Ïοσθήκη θÏÏας εξόδου" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "ΑφαίÏεση θÏÏας εισόδου" @@ -11514,6 +11730,21 @@ msgstr "ΜÎλη:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Αλλαγή Î²Î±ÏƒÎ¹ÎºÎ¿Ï Ï„Ïπου" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Î Ïοσθήκη Κόμβου..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Î Ïοσθήκη συνάÏτησης" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "ΣυνάÏτηση:" @@ -11673,27 +11904,24 @@ msgstr "" "Ï€ÏοεπιλεγμÎνη ÏÏθμιση." #: platform/android/export/export.cpp -#, fuzzy msgid "Custom build requires a valid Android SDK path in Editor Settings." msgstr "" -"Η Ï€ÏοσαÏμοσμÎνη κατασκευή απαιτεί μια ÎγκυÏη διαδÏομή για το Android SDK " -"στις Ρυθμίσεις ΕπεξεÏγαστή." +"Η Ï€ÏοσαÏμοσμÎνη δόμηση απαιτεί μια ÎγκυÏη διαδÏομή για το Android SDK στις " +"Ρυθμίσεις ΕπεξεÏγαστή." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" -"Μη ÎγκυÏη διαδÏομή Android SDK για Ï€ÏοσαÏμοσμÎνη κατασκευή στις Ρυθμίσεις " +"Μη ÎγκυÏη διαδÏομή Android SDK για Ï€ÏοσαÏμοσμÎνη δόμηση στις Ρυθμίσεις " "ΕπεξεÏγαστή." #: platform/android/export/export.cpp -#, fuzzy msgid "" "Android build template not installed in the project. Install it from the " "Project menu." msgstr "" -"Λείπει το Ï€Ïότυπο χτισίματος Android, παÏακαλοÏμε εγκαταστήστε τα σχετικά " -"Ï€Ïότυπα." +"Λείπει το Ï€Ïότυπο δόμησης Android από το ÎÏγο. Εγκαταστήστε το από το Î¼ÎµÎ½Î¿Ï " +"«ΈÏγο»." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -11709,6 +11937,8 @@ msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." msgstr "" +"Δοκιμή δόμησης από Ï€ÏοσαÏμοσμÎνο Ï€Ïότυπο δόμησης, αλλά δεν υπάÏχουν " +"πληÏοφοÏίες Îκδοσης. ΠαÏακαλοÏμε κάντε επανεγκατάσταση από το Î¼ÎµÎ½Î¿Ï Â«ÎˆÏγο»." #: platform/android/export/export.cpp msgid "" @@ -11717,58 +11947,39 @@ msgid "" " Godot Version: %s\n" "Please reinstall Android build template from 'Project' menu." msgstr "" +"Ασυμφωνία εκδόσεων δόμησης Android:\n" +" ΕγκατεστημÎνο Ï€Ïότυπο: %s\n" +" Έκδοση Godot: %s\n" +"ΠαÏακαλοÏμε να επανεγκαταστήσετε το Ï€Ïότυπο δόμησης Android από το Î¼ÎµÎ½Î¿Ï " +"«ΈÏγο»." #: platform/android/export/export.cpp -#, fuzzy msgid "Building Android Project (gradle)" -msgstr "Κατασκευή ΈÏγου Android (gradle)" +msgstr "Δόμηση ΈÏγου Android (gradle)" #: platform/android/export/export.cpp -#, fuzzy 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 -#, fuzzy msgid "No build apk generated at: " -msgstr "Δεν παÏάχθηκε κατασκευή apk στο: " +msgstr "Δεν παÏάχθηκε δόμησης apk στο: " #: platform/iphone/export/export.cpp msgid "Identifier is missing." msgstr "Το αναγνωÏιστικό λείπει." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Τα τμήματα του αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï Ï€ÏÎπει να Îχουν μη μηδενικό μήκος." - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "Το όνομα δεν είναι ÎγκυÏο αναγνωÏιστικό:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" -"Ένα ψηφίο δεν μποÏεί να είναι ο Ï€Ïώτος χαÏακτήÏας σε Îνα τμήμα " -"αναγνωÏιστικοÏ." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"Ο χαÏακτήÏας '%s' δεν μποÏεί να είναι ο Ï€Ïώτος χαÏακτήÏας σε Îνα τμήμα " -"αναγνωÏιστικοÏ." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "Το αναγνωÏιστικό Ï€ÏÎπει να Îχει τουλάχιστον Îναν '.' διαχωÏιστή." - -#: platform/iphone/export/export.cpp #, fuzzy msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12508,6 +12719,23 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Οι σταθεÏÎÏ‚ δεν μποÏοÏν να Ï„ÏοποποιηθοÏν." +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "Τα τμήματα του αναγνωÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï Ï€ÏÎπει να Îχουν μη μηδενικό μήκος." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Ένα ψηφίο δεν μποÏεί να είναι ο Ï€Ïώτος χαÏακτήÏας σε Îνα τμήμα " +#~ "αναγνωÏιστικοÏ." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Ο χαÏακτήÏας '%s' δεν μποÏεί να είναι ο Ï€Ïώτος χαÏακτήÏας σε Îνα τμήμα " +#~ "αναγνωÏιστικοÏ." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "Το αναγνωÏιστικό Ï€ÏÎπει να Îχει τουλάχιστον Îναν '.' διαχωÏιστή." + #~ msgid "Pause the scene" #~ msgstr "ΠαÏση της σκηνής" @@ -13175,9 +13403,6 @@ msgstr "Οι σταθεÏÎÏ‚ δεν μποÏοÏν να Ï„ÏÎ¿Ï€Î¿Ï€Î¿Î¹Î·Î¸Î¿Ï #~ msgid "Rotate 270 degrees" #~ msgstr "ΠεÏιστÏοφή 270 μοίÏες" -#~ msgid "Warning" -#~ msgstr "Î Ïοειδοποίηση" - #~ msgid "Variable" #~ msgstr "Μεταβλητή" @@ -13659,9 +13884,6 @@ msgstr "Οι σταθεÏÎÏ‚ δεν μποÏοÏν να Ï„ÏÎ¿Ï€Î¿Ï€Î¿Î¹Î·Î¸Î¿Ï #~ msgid "Re-Import Changed Resources" #~ msgstr "Επανεισαγωγή Ï„ÏοποπιημÎνων πόÏων" -#~ msgid "Loading Export Templates" -#~ msgstr "ΦόÏτωση Ï€ÏοτÏπων εξαγωγής" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" diff --git a/editor/translations/eo.po b/editor/translations/eo.po index 13b053c4f8..60b3a9ff8b 100644 --- a/editor/translations/eo.po +++ b/editor/translations/eo.po @@ -528,8 +528,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Editi" @@ -719,6 +720,10 @@ msgstr "Nur Elektaro" msgid "Standard" msgstr "Norma" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -798,6 +803,10 @@ msgid "Extra Call Arguments:" msgstr "Aldona argumentoj de alvoko:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Altnivela" @@ -971,7 +980,7 @@ msgid "Resource" msgstr "Rimedo" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "dosierindiko" @@ -1436,7 +1445,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nomo" @@ -1683,6 +1693,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2610,7 +2624,8 @@ msgstr "Malfari scenon" msgid "Miscellaneous project or scene-wide tools." msgstr "Diversa projekto aÅ sceno-abundaj iloj." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekto" @@ -2943,6 +2958,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Åœablonoj" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2999,6 +3019,11 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Avertoj" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3431,6 +3456,11 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Mastrumi eksportaj Åablonoj" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4551,6 +4581,10 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4806,6 +4840,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5000,6 +5058,75 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Skali RejÅo:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5649,6 +5776,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MaÅo biblioteko..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6276,6 +6408,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6402,10 +6551,6 @@ msgstr "" msgid "Run" msgstr "Ruli" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7523,6 +7668,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7542,6 +7688,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7650,6 +7800,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7666,6 +7828,35 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Videbla navigacio" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8796,6 +8987,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8895,6 +9094,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Malfermi dosieron" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8946,6 +9150,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9217,6 +9429,11 @@ msgid "Projects" msgstr "Projektoj" #: editor/project_manager.cpp +#, fuzzy +msgid "Last Modified" +msgstr "Modifita" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Esplori" @@ -10795,6 +11012,14 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10858,14 +11083,6 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "" @@ -11039,6 +11256,20 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "ÅœanÄu la tipon de %s" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Funkcioj:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funkcioj:" @@ -11237,27 +11468,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/es.po b/editor/translations/es.po index a520f0c46e..fd841e9928 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -46,7 +46,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-29 14:49+0000\n" +"PO-Revision-Date: 2019-12-21 08:38+0000\n" "Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" @@ -55,12 +55,12 @@ 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 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "El argumento para convert() es invalido, utiliza constantes TYPE_*." +msgstr "Argumento de tipo inválido para convert(), utiliza constantes TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp @@ -569,8 +569,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Editar" @@ -756,6 +757,10 @@ msgstr "Sólo selección" msgid "Standard" msgstr "Estándar" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Act./Desact. Panel de Scripts" + #: 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 @@ -834,6 +839,11 @@ msgid "Extra Call Arguments:" msgstr "Argumentos extras de llamada:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Seleccionar Método" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Avanzado" @@ -1013,7 +1023,7 @@ msgid "Resource" msgstr "Recursos" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Ruta" @@ -1486,7 +1496,8 @@ msgid "Node Name:" msgstr "Nombre del Nodo:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nombre" @@ -1740,6 +1751,10 @@ msgid "Erase Profile" msgstr "Borrar Perfil" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Perfil de CaracterÃsticas de Godot" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Importar Perfil(es)" @@ -2715,7 +2730,8 @@ msgstr "Revertir Escena" msgid "Miscellaneous project or scene-wide tools." msgstr "Herramientas variadas de proyecto o escena." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Proyecto" @@ -3059,6 +3075,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importar plantillas desde un archivo ZIP" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Paquete de Plantillas" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Exportar Proyecto" @@ -3115,6 +3135,11 @@ msgstr "Abrir Editor siguiente" msgid "Open the previous Editor" msgstr "Abrir Editor anterior" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Advertencia" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "No se encontró ningún sub-recurso." @@ -3563,6 +3588,10 @@ msgid "Select Template File" msgstr "Selecciona un Archivo de Plantilla" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Plantillas de Exportación de Godot" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Gestor de Plantillas de Exportación" @@ -4705,6 +4734,11 @@ msgstr "Asignar la animación de fin. Esto es útil para sub-transiciones." msgid "Transition: " msgstr "Transición: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Modo desplazamiento lateral" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4959,6 +4993,30 @@ msgid "Download for this asset is already in progress!" msgstr "¡Éste asset ya está descargándose!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Actualizados Recientemente" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Actualizados con Antigüedad" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Nombre (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Nombre (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Licencia (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Licencia (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Primero" @@ -5161,6 +5219,74 @@ msgstr "" "anclajes en lugar de sus márgenes." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Superior Izquierda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Superior Derecha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Inferior Derecha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Inferior Izquierda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Centro Izquierda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Centro Superior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Centro Derecha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Centro Inferior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Centro" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Izquierda Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Superior Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Derecha Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Inferior Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "Centro Vert. Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "Centro Horiz. Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "Completa" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Mantener Proporciones" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Sólo anclado" @@ -5828,6 +5954,11 @@ msgid "Remove item %d?" msgstr "¿Quieres borrar el elemento %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "LibrerÃa de mallas..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Añadir Item" @@ -6463,6 +6594,23 @@ msgid "Save File As..." msgstr "Guardar Archivo Como..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importar Tema" @@ -6589,10 +6737,6 @@ msgstr "Cerrar Documentación" msgid "Run" msgstr "Ejecutar" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Act./Desact. Panel de Scripts" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Step Into" @@ -7398,7 +7542,7 @@ msgstr "GeometrÃa inválida, no es posible crear un polÃgono de colisión." #: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D Sibling" -msgstr "Crear hermano de CollisionPolygon2D" +msgstr "Crear CollisionPolygon2D hermano" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create light occluder." @@ -7718,6 +7862,7 @@ msgid "Data Type:" msgstr "Tipo de datos:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Icono" @@ -7737,6 +7882,10 @@ msgstr "Color" msgid "Constant" msgstr "Constante" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "Archivo de Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Borrar Selección" @@ -7847,6 +7996,20 @@ msgid "Merge from Scene" msgstr "Unir desde escena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Desactivar Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Atlas:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Siguiente Coordenada" @@ -7863,6 +8026,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Seleccionar la anterior forma, subtile, o Tile." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Modo Región" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Modo Colisión" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Modo Oclusión" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Modo Navegación" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Modo Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Modo Prioridad" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Ãndice:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modo Región" @@ -9080,6 +9278,14 @@ msgid "Runnable" msgstr "Ejecutable" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Agregar puerto de entrada..." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Agregar parches anteriores..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "¿Eliminar patch '%s' de la lista?" @@ -9192,6 +9398,10 @@ msgid "Make Patch" msgstr "Crear Patch" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Paquete de Archivos" + +#: editor/project_export.cpp msgid "Features" msgstr "CaracterÃsticas" @@ -9243,6 +9453,14 @@ msgstr "¿Modo de Exportación?" msgid "Export All" msgstr "Exportar Todo" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "Archivo ZIP" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Godot Game Pack" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Faltan plantillas de exportación para esta plataforma:" @@ -9549,6 +9767,10 @@ msgid "Projects" msgstr "Proyectos" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Ultima Modificación" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Escanear" @@ -11167,6 +11389,14 @@ msgid "Set Variable Type" msgstr "Establecer Tipo de la Variable" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Añadir Puerto de Entrada" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Añadir Puerto de Salida" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "Sobrescribir una función incorporada existente." @@ -11227,14 +11457,6 @@ msgid "Add Signal" msgstr "Añadir Señal" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "Añadir Puerto de Entrada" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "Añadir Puerto de Salida" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "Eliminar Puerto de Entrada" @@ -11414,6 +11636,18 @@ msgid "Members:" msgstr "Miembros:" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "Cambiar Tipo Base:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Agregar Nodos..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Agregar Función..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "nombre_funcion" @@ -11635,30 +11869,10 @@ msgid "Identifier is missing." msgstr "Identificador no encontrado." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Los segmentos de un identificador deben ser de largo no nulo." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "El carácter '%s' no esta permitido como identificador." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" -"Un dÃgito no puede ser el primer carácter en un segmento Identificador." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"El carácter '%s' no puede ser el primer carácter en un segmento " -"Identificador." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "El Identificador debe tener al menos un '.' como separador." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" "App Store Team ID no especificado - no se puede configurar el proyecto." @@ -11830,8 +12044,8 @@ msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" msgstr "" -"Se debe de proveer de forma a CollisionShape2D para que funcione. ¡Creale un " -"recurso \"shape\"!" +"Para que CollisionShape2D funcione, se debe proporcionar un shape. Por " +"favor, ¡crea un recurso shape para ello!" #: scene/2d/cpu_particles_2d.cpp msgid "" @@ -12063,7 +12277,7 @@ msgid "" "shape resource for it." msgstr "" "Se debe proporcionar un shape para que CollisionShape funcione. Por favor, " -"crea un recurso de shape para ello." +"crea un recurso shape para ello." #: scene/3d/collision_shape.cpp msgid "" @@ -12393,6 +12607,22 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." msgid "Constants cannot be modified." msgstr "Las constantes no pueden modificarse." +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "Los segmentos de un identificador deben ser de largo no nulo." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Un dÃgito no puede ser el primer carácter en un segmento Identificador." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "El carácter '%s' no puede ser el primer carácter en un segmento " +#~ "Identificador." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "El Identificador debe tener al menos un '.' como separador." + #~ msgid "Pause the scene" #~ msgstr "Pausar la escena" @@ -13073,9 +13303,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Rotate 270 degrees" #~ msgstr "Rotar 270 grados" -#~ msgid "Warning" -#~ msgstr "Advertencia" - #~ msgid "Variable" #~ msgstr "Variable" @@ -13577,9 +13804,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Re-Import Changed Resources" #~ msgstr "Reimportar recursos cambiados" -#~ msgid "Loading Export Templates" -#~ msgstr "Cargando plantillas de exportación" - #, fuzzy #~ msgid "" #~ "\n" @@ -14196,10 +14420,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Create Android keystore" #~ msgstr "Crear recurso nuevo" -#, fuzzy -#~ msgid "Full name" -#~ msgstr "Nombre válido" - #~ msgid "Organizational unit" #~ msgstr "Unidad organizativa" @@ -14308,9 +14528,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Lossy Quality:" #~ msgstr "Calidad con pérdidas:" -#~ msgid "Atlas:" -#~ msgstr "Atlas:" - #~ msgid "Shrink By:" #~ msgstr "Reducir por:" diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index 0bf176e0af..a171c88e43 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-29 14:49+0000\n" +"PO-Revision-Date: 2019-12-21 08:38+0000\n" "Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n" "Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/" "godot-engine/godot/es_AR/>\n" @@ -26,7 +26,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 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -521,7 +521,7 @@ msgstr "Agrupar las pistas por nodo o mostrarlas como una lista plana." #: editor/animation_track_editor.cpp msgid "Snap:" -msgstr "Snap:" +msgstr "Ajuste:" #: editor/animation_track_editor.cpp msgid "Animation step value." @@ -539,8 +539,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Editar" @@ -726,6 +727,10 @@ msgstr "Solo Selección" msgid "Standard" msgstr "Estándar" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Act/Desact. Panel de Scripts" + #: 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 @@ -804,6 +809,11 @@ msgid "Extra Call Arguments:" msgstr "Argumentos de Llamada Extras:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Seleccionar Método" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Avanzado" @@ -820,7 +830,7 @@ msgstr "" #: editor/connections_dialog.cpp msgid "Oneshot" -msgstr "Oneshot" +msgstr "OneShot" #: editor/connections_dialog.cpp msgid "Disconnects the signal after its first emission." @@ -982,7 +992,7 @@ msgid "Resource" msgstr "Recursos" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Ruta" @@ -1455,7 +1465,8 @@ msgid "Node Name:" msgstr "Nombre de Nodo:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nombre" @@ -1708,6 +1719,10 @@ msgid "Erase Profile" msgstr "Borrar Perfil" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Perfil de CaracterÃsticas de Godot" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Importar Perfil(es)" @@ -2680,7 +2695,8 @@ msgstr "Revertir Escena" msgid "Miscellaneous project or scene-wide tools." msgstr "Herramientas misceláneas a nivel proyecto o escena." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Proyecto" @@ -3025,6 +3041,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importar Plantillas Desde Archivo ZIP" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Paquete de Plantillas" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Exportar Proyecto" @@ -3081,6 +3101,11 @@ msgstr "Abrir el Editor siguiente" msgid "Open the previous Editor" msgstr "Abrir el Editor anterior" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Advertencia" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "No se encontró ningún sub-recurso." @@ -3528,6 +3553,10 @@ msgid "Select Template File" msgstr "Elegir Archivo de Plantilla" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Plantillas de Exportación de Godot" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Gestor de Plantillas de Exportación" @@ -4188,7 +4217,7 @@ msgstr "Seleccionar y mover puntos, crear puntos con click derecho." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp msgid "Enable snap and show grid." -msgstr "Activar snap y mostrar grilla." +msgstr "Activar ajuste y mostrar grilla." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4671,6 +4700,11 @@ msgstr "Asignar la animación de fin. Esto es útil para sub-transiciones." msgid "Transition: " msgstr "Transición: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Modo Paneo" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4925,6 +4959,30 @@ msgid "Download for this asset is already in progress!" msgstr "La descarga de este asset ya está en progreso!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Actualizados Recientemente" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Actualizados con Antigüedad" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Nombre (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Nombre (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Licencia (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Licencia (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Primero" @@ -5024,7 +5082,7 @@ msgstr "Vista Previa" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "Configurar Snap" +msgstr "Configurar Ajuste" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Offset:" @@ -5127,6 +5185,74 @@ msgstr "" "márgenes." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Superior Izquierda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Superior Derecha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Inferior Derecha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Inferior Izquierda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Centro Izquierda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Centro Superior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Centro Derecha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Centro Inferior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Centro" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Izquierda Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Superior Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Derecha Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Inferior Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "Centro Vert. Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "Centro Horiz. Ancha" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "Todo el Rect" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Mantener Proporciones" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Solo anclas" @@ -5291,32 +5417,32 @@ msgstr "Usar Ajuste a Grilla" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" -msgstr "Opciones de Alineado" +msgstr "Opciones de Ajuste" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" -msgstr "Usar Snap de Rotación" +msgstr "Usar Ajuste de Rotación" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Scale Snap" -msgstr "Usar Snap a la Escala" +msgstr "Usar Ajuste de Escalado" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "Usar Snap Relativo" +msgstr "Ajuste Relativo" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "Usar Pixel Snap" +msgstr "Usar Ajuste a Pixeles" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Smart Snapping" -msgstr "Ajuste inteligente" +msgstr "Ajuste Inteligente" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap..." -msgstr "Configurar Snap..." +msgstr "Configurar Ajuste..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Parent" @@ -5793,6 +5919,11 @@ msgid "Remove item %d?" msgstr "Remover item %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Agregar Item" @@ -6283,11 +6414,11 @@ msgstr "Ajustes de Grilla" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Snap" -msgstr "Esnapear" +msgstr "Ajustar" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Enable Snap" -msgstr "Activar Snap" +msgstr "Activar Ajuste" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid" @@ -6428,6 +6559,23 @@ msgid "Save File As..." msgstr "Guardar Archivo Como..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importar Tema" @@ -6554,10 +6702,6 @@ msgstr "Cerrar Docs" msgid "Run" msgstr "Ejecutar" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Act/Desact. Panel de Scripts" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Step Into" @@ -7153,7 +7297,7 @@ msgstr "Usar Espacio Local" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "Usar Snap" +msgstr "Usar Ajuste" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -7255,19 +7399,19 @@ msgstr "Configuración..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" -msgstr "Ajustes de Snap" +msgstr "Configuración de Ajuste" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "Snap de Traslación:" +msgstr "Ajuste de Traslación:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "Snap de Rotación (grados):" +msgstr "Ajuste de Rotación (grados):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "Snap de Escala (%):" +msgstr "Ajuste de Escala (%):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" @@ -7515,7 +7659,7 @@ msgstr "Asignar Margen" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" -msgstr "Modo Snap:" +msgstr "Modo de Ajuste:" #: editor/plugins/texture_region_editor_plugin.cpp #: scene/resources/visual_shader.cpp @@ -7524,11 +7668,11 @@ msgstr "Ninguno" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" -msgstr "Pixel Snap" +msgstr "Ajustar a Pixeles" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Snap" -msgstr "Snap de Grilla" +msgstr "Ajustar a Grilla" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Auto Slice" @@ -7683,6 +7827,7 @@ msgid "Data Type:" msgstr "Tipo de Datos:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Icono" @@ -7702,6 +7847,10 @@ msgstr "Color" msgid "Constant" msgstr "Constante" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "Archivo de Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Eliminar Selección" @@ -7812,6 +7961,20 @@ msgid "Merge from Scene" msgstr "Mergear desde Escena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Desactivar Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Atlas:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Coordenada Siguiente" @@ -7828,6 +7991,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Seleccionar la forma, subtile o Tile anterior." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Modo Región" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Modo Colisión" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Modo Oclusión" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Modo Navegación" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Modo Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Modo Prioridad" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Indice:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modo Región" @@ -7885,7 +8083,7 @@ msgstr "Mantener el polÃgono dentro del region Rect." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." -msgstr "Activar snap y mostrar grilla (configurable via el Inspector)." +msgstr "Activar ajuste y mostrar grilla (configurable vÃa el Inspector)." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" @@ -9043,6 +9241,14 @@ msgid "Runnable" msgstr "Ejecutable" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Agregar puerto de entrada..." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Agregar parches anteriores..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Eliminar parche '%s' de la lista?" @@ -9156,6 +9362,10 @@ msgid "Make Patch" msgstr "Crear Parche" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Archivo \"Pack\"" + +#: editor/project_export.cpp msgid "Features" msgstr "CaracterÃsticas" @@ -9207,6 +9417,14 @@ msgstr "¿Modo de Exportación?" msgid "Export All" msgstr "Exportar Todos" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "Archivo ZIP" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Godot Game Pack" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Faltan las plantillas de exportación para esta plataforma:" @@ -9514,6 +9732,10 @@ msgid "Projects" msgstr "Proyectos" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Ultima Modificación" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Examinar" @@ -10927,7 +11149,7 @@ msgstr "Mapa de Grilla" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Snap View" -msgstr "Anclar Vista" +msgstr "Ajustar Vista" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Disabled" @@ -11131,6 +11353,14 @@ msgid "Set Variable Type" msgstr "Editar Tipo de Variable" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Agregar Puerto de Entrada" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Agregar Puerto de Salida" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "Reemplazar(Override) una función integrada existente." @@ -11191,14 +11421,6 @@ msgid "Add Signal" msgstr "Agregar Señal" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "Agregar Puerto de Entrada" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "Agregar Puerto de Salida" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "Eliminar Puerto de Entrada" @@ -11378,6 +11600,18 @@ msgid "Members:" msgstr "Miembros:" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "Cambiar Tipo Base:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Agregar Nodos..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Agregar Función..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "nombre_funcion" @@ -11599,30 +11833,10 @@ msgid "Identifier is missing." msgstr "Identificador no encontrado." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Los segmentos de un identificador deben ser de largo no nulo." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "El caracter '%s' no esta permitido como identificador." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" -"Un dÃgito no puede ser el primer caracter en un segmento Identificador." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"El caracter '%s' no puede ser el primer caracter en un segmento " -"Identificador." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "El Identificador debe tener al menos un '.' como separador." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" "App Store Team ID no especificado - no se puede configurar el proyecto." @@ -12351,6 +12565,22 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." msgid "Constants cannot be modified." msgstr "Las constantes no pueden modificarse." +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "Los segmentos de un identificador deben ser de largo no nulo." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Un dÃgito no puede ser el primer caracter en un segmento Identificador." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "El caracter '%s' no puede ser el primer caracter en un segmento " +#~ "Identificador." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "El Identificador debe tener al menos un '.' como separador." + #~ msgid "Pause the scene" #~ msgstr "Pausar la escena" @@ -12845,9 +13075,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Rotate 270 degrees" #~ msgstr "Rotar 270 grados" -#~ msgid "Warning" -#~ msgstr "Advertencia" - #~ msgid "Variable" #~ msgstr "Variable" @@ -13341,9 +13568,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Re-Import Changed Resources" #~ msgstr "Reimportar Recursos Cambiados" -#~ msgid "Loading Export Templates" -#~ msgstr "Cargando Plantillas de Exportación" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13943,9 +14167,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Create Android keystore" #~ msgstr "Crear keystore de Android" -#~ msgid "Full name" -#~ msgstr "Nombre completo" - #~ msgid "Organizational unit" #~ msgstr "Unidad organizativa" @@ -14049,9 +14270,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Lossy Quality:" #~ msgstr "Calidad con Pérdidas:" -#~ msgid "Atlas:" -#~ msgstr "Atlas:" - #~ msgid "Shrink By:" #~ msgstr "Reducir Por:" diff --git a/editor/translations/et.po b/editor/translations/et.po index 82bf543b18..598f624896 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -508,8 +508,9 @@ msgstr "Kaadrit/Sekundis" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Muuda" @@ -696,6 +697,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -772,6 +777,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -943,7 +952,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1408,7 +1417,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1648,6 +1658,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2559,7 +2573,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2870,6 +2885,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2926,6 +2945,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3356,6 +3379,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4470,6 +4497,10 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4725,6 +4756,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4918,6 +4973,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5567,6 +5690,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6192,6 +6319,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6318,10 +6462,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7437,6 +7577,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7456,6 +7597,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7564,6 +7709,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7580,6 +7737,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8707,6 +8892,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8806,6 +8999,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8857,6 +9054,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9114,6 +9319,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10687,6 +10896,14 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10747,14 +10964,6 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "" @@ -10926,6 +11135,19 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Funktsioonid:" + +#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "function_name" msgstr "Funktsioonid:" @@ -11124,27 +11346,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/eu.po b/editor/translations/eu.po index a545199e07..10b27e97af 100644 --- a/editor/translations/eu.po +++ b/editor/translations/eu.po @@ -3,18 +3,19 @@ # Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) # This file is distributed under the same license as the Godot source code. # Julen Irazoki <rktzbkr.julen@gmail.com>, 2019. +# Osoitz <oelkoro@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2019-08-15 10:23+0000\n" -"Last-Translator: Julen Irazoki <rktzbkr.julen@gmail.com>\n" +"PO-Revision-Date: 2019-12-03 14:05+0000\n" +"Last-Translator: Osoitz <oelkoro@gmail.com>\n" "Language-Team: Basque <https://hosted.weblate.org/projects/godot-engine/" "godot/eu/>\n" "Language: eu\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.8\n" +"X-Generator: Weblate 3.10-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -25,8 +26,7 @@ msgstr "" #: 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 "" -"Ez daude byte nahikoa byte-ak dekodetzeko, edota formatua ez da zuzena." +msgstr "Ez daude byte nahikoa byteak deskodetzeko, edo formatua ez da zuzena." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -506,8 +506,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -693,6 +694,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -769,6 +774,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -940,7 +949,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1405,7 +1414,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1645,6 +1655,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2553,7 +2567,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2864,6 +2879,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2920,6 +2939,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3350,6 +3373,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4460,6 +4487,10 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4714,6 +4745,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4905,6 +4960,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5554,6 +5677,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6179,6 +6306,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6305,10 +6449,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7423,6 +7563,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7442,6 +7583,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7550,6 +7695,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7566,6 +7723,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8690,6 +8875,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8789,6 +8982,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8840,6 +9037,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9097,6 +9302,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10667,6 +10876,14 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10727,14 +10944,6 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "" @@ -10905,6 +11114,18 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11101,27 +11322,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/fa.po b/editor/translations/fa.po index 6ec85e861e..75823b8fde 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -545,8 +545,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "ویرایش" @@ -740,6 +741,10 @@ msgstr "تنها در قسمت انتخاب شده" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -824,6 +829,11 @@ msgstr "آرگومان‌های اضاÙÛŒ ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "انتخاب ØØ§Ù„ت" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "متعادل شده" @@ -1009,7 +1019,7 @@ msgid "Resource" msgstr "منبع" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "مسیر" @@ -1490,7 +1500,8 @@ msgid "Node Name:" msgstr "نام گره:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1754,6 +1765,11 @@ msgstr "Ú©Ùندی در آغاز" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "مدیریت صدور قالب ها" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "پروژه واردشده" @@ -2701,7 +2717,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "پروژه" @@ -3029,6 +3046,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "واردکردن قالب ها از درون یک ÙØ§ÛŒÙ„ ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "قالب ها" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "صدور پروژه" @@ -3085,6 +3107,10 @@ msgstr "گشودن ویرایشگر متن" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3536,6 +3562,11 @@ msgid "Select Template File" msgstr "انتخاب پرونده قالب" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "مدیریت صدور قالب ها" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4740,6 +4771,11 @@ msgstr "" msgid "Transition: " msgstr "انتقال" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "ØØ§Ù„ت صدور:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -5004,6 +5040,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "مجوز" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "مجوز" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5208,6 +5270,77 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "خطی" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "خطی" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "نسبت تغییر مقیاس:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5888,6 +6021,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "صادکردن ÙØ§ÛŒÙ„ کتابخانه ای" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد" @@ -6541,6 +6679,23 @@ msgid "Save File As..." msgstr "ذخیره در..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6676,10 +6831,6 @@ msgstr "" msgid "Run" msgstr "اجرا" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7863,6 +8014,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7882,6 +8034,11 @@ msgstr "" msgid "Constant" msgstr "ثابت" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "یک پرونده را باز Ú©Ù†" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -8000,6 +8157,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "نمایش پرونده ها" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -8018,6 +8188,40 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "گره انیمیشن" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "گره انیمیشن" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "ویرایش سیگنال" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "گره انیمیشن" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "ØØ§Ù„ت صدور:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "اندیس:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "گره انیمیشن" @@ -9214,6 +9418,15 @@ msgstr "" #: editor/project_export.cpp #, fuzzy +msgid "Add initial export..." +msgstr "Ø§ÙØ²ÙˆØ¯Ù† عمل ورودی" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp +#, fuzzy msgid "Delete patch '%s' from list?" msgstr "ØØ°Ù Ú©Ù†" @@ -9318,6 +9531,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " پوشه ها" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9374,6 +9592,15 @@ msgstr "ØØ§Ù„ت صدور:" msgid "Export All" msgstr "صدور" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " پوشه ها" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9644,6 +9871,10 @@ msgid "Projects" msgstr "پروژه" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "پویش" @@ -11323,6 +11554,16 @@ msgstr "متغیر را ویرایش Ú©Ù†:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† عمل ورودی" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Ø§ÙØ²ÙˆØ¯Ù† عمل ورودی" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "نام نامعتبر. نباید یا یک نام نوع توکار برخوردی داشته باشد." @@ -11388,16 +11629,6 @@ msgstr "Signal را اضاÙÙ‡ Ú©Ù†" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Ø§ÙØ²ÙˆØ¯Ù† عمل ورودی" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Ø§ÙØ²ÙˆØ¯Ù† عمل ورودی" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "برداشتن نقطه" @@ -11579,6 +11810,21 @@ msgstr "عضوها:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "تغییر نوع پایه" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Ø§ÙØ²ÙˆØ¯Ù† گره" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Ø§ÙØ²ÙˆØ¯Ù† وظیÙÙ‡" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "وظایÙ:" @@ -11786,28 +12032,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "نام یک شناسه‌ی معتبر نیست:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12701,10 +12930,6 @@ msgstr "" #~ msgstr "بزرگنمایی بیشتر" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "نمایش پرونده ها" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "بزرگنمایی بیشتر" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 517733d566..1b56fd6322 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-29 14:49+0000\n" +"PO-Revision-Date: 2019-12-16 23:50+0000\n" "Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" @@ -526,8 +526,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Muokkaa" @@ -713,6 +714,10 @@ msgstr "Pelkkä valinta" msgid "Standard" msgstr "Standardi" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Näytä/piilota skriptipaneeli" + #: 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 @@ -791,6 +796,11 @@ msgid "Extra Call Arguments:" msgstr "Ylimääräiset argumentit:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Valitse metodi" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Edistyneet" @@ -967,7 +977,7 @@ msgid "Resource" msgstr "Resurssi" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Polku" @@ -1442,7 +1452,8 @@ msgid "Node Name:" msgstr "Solmun nimi:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nimi" @@ -1694,6 +1705,11 @@ msgid "Erase Profile" msgstr "Tyhjennä profiili" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "Hallinnoi editorin ominaisuusprofiileja" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Tuo profiileja" @@ -2649,7 +2665,8 @@ msgstr "Palauta skene" msgid "Miscellaneous project or scene-wide tools." msgstr "Sekalaiset projekti- tai skenetyökalut." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekti" @@ -2989,6 +3006,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Tuo mallit ZIP-tiedostosta" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Vientimallien hallinta" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Vie projekti" @@ -3045,6 +3067,11 @@ msgstr "Avaa seuraava editori" msgid "Open the previous Editor" msgstr "Avaa edellinen editori" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Varoitus" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Aliresursseja ei löydetty." @@ -3490,6 +3517,10 @@ msgid "Select Template File" msgstr "Valitse mallitiedosto" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Godotin vientimallit" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Vientimallien hallinta" @@ -4627,6 +4658,11 @@ msgstr "Aseta loppuanimaatio. Tämä on hyödyllistä alisiirtymiä varten." msgid "Transition: " msgstr "Siirtymä: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Panorointitila" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4882,6 +4918,30 @@ msgid "Download for this asset is already in progress!" msgstr "Tämän assetin lataus on jo käynnissä!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Viimeksi päivitetty" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Vanhin päivitys" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Nimi (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Nimi (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Lisenssi (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Lisenssi (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Ensimmäinen" @@ -5084,6 +5144,87 @@ msgstr "" "ankkureita marginaalien sijaan." #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Vasen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "OIkea" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Kierrä oikealle" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Alanäkymä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Sisennä vasemmalle" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Keskitä valintaan" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Sisennä oikealle" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Pohja" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Vasen näkymä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Ylänäkymä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Oikea näkymä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Alanäkymä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Skaalaussuhde:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Vain ankkurit" @@ -5750,6 +5891,11 @@ msgid "Remove item %d?" msgstr "Poistetaanko kohde %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Mesh-kirjastoksi..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Lisää kohde" @@ -6385,6 +6531,23 @@ msgid "Save File As..." msgstr "Tallenna tiedosto nimellä..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Tuo teema" @@ -6511,10 +6674,6 @@ msgstr "Sulje dokumentaatio" msgid "Run" msgstr "Suorita" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Näytä/piilota skriptipaneeli" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Siirry sisään" @@ -7639,6 +7798,7 @@ msgid "Data Type:" msgstr "Tietotyyppi:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Kuvake" @@ -7658,6 +7818,11 @@ msgstr "Väri" msgid "Constant" msgstr "Muuttumaton" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Teema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Tyhjennä valittu alue" @@ -7770,6 +7935,20 @@ msgid "Merge from Scene" msgstr "Yhdistä skenestä" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Poista automaattiruudutus käytöstä" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Uusi %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Seuraava koordinaatti" @@ -7786,6 +7965,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Valitse edellinen muoto, aliruutu tai ruutu." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Aluetila" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Törmäystila" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Peittotila" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Siirtymistila" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Bittimaskitila" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Prioriteettitila" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Indeksi:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Aluetila" @@ -8997,6 +9211,14 @@ msgid "Runnable" msgstr "Suoritettava" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Lisää ensimmäinen vienti..." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Lisää edelliset päivitykset..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Poista päivitys '%s' listasta?" @@ -9108,6 +9330,11 @@ msgid "Make Patch" msgstr "Luo päivitys" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Tiedostot" + +#: editor/project_export.cpp msgid "Features" msgstr "Ominaisuudet" @@ -9159,6 +9386,15 @@ msgstr "Vientitila?" msgid "Export All" msgstr "Vie kaikki" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Tiedostot" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Tälle alustalle ei löytynyt vientipohjia:" @@ -9462,6 +9698,10 @@ msgid "Projects" msgstr "Projektit" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Viimeksi muutettu" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Tutki" @@ -11080,6 +11320,14 @@ msgid "Set Variable Type" msgstr "Aseta muuttujan tyyppi" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Lisää tuloportti" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Lisää lähtöportti" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "Ylikirjoita olemassa oleva sisäänrakennettu funktio." @@ -11140,14 +11388,6 @@ msgid "Add Signal" msgstr "Lisää signaali" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "Lisää tuloportti" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "Lisää lähtöportti" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "Poista tuloportti" @@ -11327,6 +11567,21 @@ msgid "Members:" msgstr "Jäsenet:" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change Base Type:" +msgstr "Muuta kantatyyppiä" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Lisää solmu..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Lisää funktio" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "function_name" @@ -11542,27 +11797,10 @@ msgid "Identifier is missing." msgstr "Tunniste puuttuu." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Tunnisteen osiot eivät voi olla nollan pituisia." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "Merkki '%s' ei ole sallittu Identifier osiossa." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "Identifier osion ensimmäinen merkki ei voi olla numero." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "Merkki '%s' ei voi olla Identifier osion ensimmäinen merkki." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "Identifier osiossa täytyy olla vähintään yksi '.' erotinmerkki." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "App Store Team ID ei ole määritetty - ei voida konfiguroida projektia." @@ -12276,6 +12514,19 @@ msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." msgid "Constants cannot be modified." msgstr "Vakioita ei voi muokata." +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "Tunnisteen osiot eivät voi olla nollan pituisia." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "Identifier osion ensimmäinen merkki ei voi olla numero." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "Merkki '%s' ei voi olla Identifier osion ensimmäinen merkki." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "Identifier osiossa täytyy olla vähintään yksi '.' erotinmerkki." + #~ msgid "Pause the scene" #~ msgstr "Keskeytä skenen suorittaminen hetkellisesti" @@ -12820,9 +13071,6 @@ msgstr "Vakioita ei voi muokata." #~ msgid "Rotate 270 degrees" #~ msgstr "Käännä 270 astetta" -#~ msgid "Warning" -#~ msgstr "Varoitus" - #~ msgid "Variable" #~ msgstr "Muuttuja" diff --git a/editor/translations/fil.po b/editor/translations/fil.po index 6c9950261b..bcf22fb8fb 100644 --- a/editor/translations/fil.po +++ b/editor/translations/fil.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2019-11-21 14:24+0000\n" +"PO-Revision-Date: 2019-12-21 08:37+0000\n" "Last-Translator: Bakainkorp <Ryan.Bautista86@myhunter.cuny.edu>\n" "Language-Team: Filipino <https://hosted.weblate.org/projects/godot-engine/" "godot/fil/>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1 && n != 2 && n != 3 && (n % 10 == 4 " "|| n % 10 == 6 || n % 10 == 9);\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -513,8 +513,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "I-edit" @@ -657,7 +658,7 @@ msgstr "" #: editor/code_editor.cpp msgid "Go to Line" -msgstr "" +msgstr "Pumunta sa Linya" #: editor/code_editor.cpp msgid "Line Number:" @@ -700,6 +701,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -776,6 +781,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -817,7 +826,7 @@ msgstr "Isara" #: editor/connections_dialog.cpp msgid "Connect" -msgstr "" +msgstr "Ikabit" #: editor/connections_dialog.cpp msgid "Signal:" @@ -837,7 +846,7 @@ msgstr "" #: editor/connections_dialog.cpp msgid "Connect..." -msgstr "" +msgstr "Ikabit..." #: editor/connections_dialog.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -947,7 +956,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -975,7 +984,7 @@ msgstr "" #: modules/visual_script/visual_script_property_selector.cpp #: scene/gui/file_dialog.cpp msgid "Open" -msgstr "" +msgstr "I-buksan" #: editor/dependency_editor.cpp msgid "Owners Of:" @@ -1412,7 +1421,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1652,6 +1662,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2560,7 +2574,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2872,6 +2887,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2928,6 +2947,11 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Mga Babala" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3109,7 +3133,7 @@ msgstr "" #: editor/editor_properties_array_dict.cpp msgid "Page: " -msgstr "" +msgstr "Pahina: " #: editor/editor_properties_array_dict.cpp #: editor/plugins/theme_editor_plugin.cpp @@ -3254,7 +3278,7 @@ msgstr "" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "No response." -msgstr "" +msgstr "Walang sagot." #: editor/export_template_manager.cpp msgid "Request Failed." @@ -3271,7 +3295,7 @@ msgstr "" #: editor/export_template_manager.cpp msgid "Download Complete." -msgstr "" +msgstr "Kumpleto ang pag-Download." #: editor/export_template_manager.cpp msgid "Cannot remove temporary file:" @@ -3358,6 +3382,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4468,6 +4496,10 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4723,6 +4755,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4915,6 +4971,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5566,6 +5690,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6192,6 +6320,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6318,10 +6463,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7436,6 +7577,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7455,6 +7597,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7564,6 +7710,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7580,6 +7738,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8084,15 +8270,15 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Equal (==)" -msgstr "" +msgstr "Katumbas (==)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than (>)" -msgstr "" +msgstr "Mahigit sa (>)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than or Equal (>=)" -msgstr "" +msgstr "mas Malaki Kaysa sa o Katumbas ng (>=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8706,6 +8892,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8805,6 +8999,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8856,6 +9054,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9113,6 +9319,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10684,6 +10894,15 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Idagdag Ang Bezier Point" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10745,15 +10964,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Idagdag Ang Bezier Point" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Ilipat Ang Mga Bezier Points" @@ -10925,6 +11135,18 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11121,27 +11343,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index 423452a065..7484ad5409 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -68,12 +68,13 @@ # Xavier Sellier <contact@binogure-studio.com>, 2019. # Sofiane <Sofiane-77@caramail.fr>, 2019. # Camille Mohr-Daurat <pouleyketchoup@gmail.com>, 2019. +# Pierre Stempin <pierre.stempin@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-29 14:49+0000\n" -"Last-Translator: Camille Mohr-Daurat <pouleyketchoup@gmail.com>\n" +"PO-Revision-Date: 2019-12-22 04:19+0000\n" +"Last-Translator: Rémi Verschelde <akien@godotengine.org>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -81,7 +82,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 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -598,8 +599,9 @@ msgstr "IPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Édition" @@ -785,6 +787,10 @@ msgstr "Sélection uniquement" msgid "Standard" msgstr "Standard" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Afficher/Cacher le panneau des scripts" + #: 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 @@ -863,6 +869,11 @@ msgid "Extra Call Arguments:" msgstr "Arguments supplémentaires :" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Sélectionner une méthode" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Options avancées" @@ -1040,7 +1051,7 @@ msgid "Resource" msgstr "Ressource" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Chemin" @@ -1515,7 +1526,8 @@ msgid "Node Name:" msgstr "Nom de nÅ“ud :" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nom" @@ -1766,6 +1778,10 @@ msgid "Erase Profile" msgstr "Effacer le profil" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Profil des fonctionnalités de Godot" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Profil(s) d'importation" @@ -2745,7 +2761,8 @@ msgstr "Réinitialiser la scène" msgid "Miscellaneous project or scene-wide tools." msgstr "Outils divers liés au projet ou à la scène." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projet" @@ -3091,6 +3108,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importer des modèles depuis un fichier ZIP" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Paquet de modèle" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Exporter le projet" @@ -3147,6 +3168,11 @@ msgstr "Ouvrir l'éditeur suivant" msgid "Open the previous Editor" msgstr "Ouvrir l'éditeur précédant" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Avertissements" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Aucune sous-ressource n'a été trouvée." @@ -3595,6 +3621,10 @@ msgid "Select Template File" msgstr "Sélectionner le fichier de modèle" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Modèles d'exportation Godot" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Gestionnaire d'export de modèles" @@ -4742,6 +4772,11 @@ msgstr "Définir l'animation de fin. Ceci est utile pour les sous-transitions." msgid "Transition: " msgstr "Transition : " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Mode navigation" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4996,6 +5031,30 @@ msgid "Download for this asset is already in progress!" msgstr "Le téléchargement de cette ressource est déjà en cours !" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Récemment mis à jour" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Mises à jour les moins récentes" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Nom (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Nom (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Licence (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Licence (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Premier" @@ -5199,6 +5258,74 @@ msgstr "" "au lieu de leur marges." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "En haut à gauche" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "En haut à droite" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "En bas à droite" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "En bas à gauche" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Centré à Gauche" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Centrée en Haut" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Centrée à droite" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Centrée en bas" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Centre" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Étendu à Gauche" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Étendu en Haut" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Étendu à Droite" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Étendu en Bas" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "Étendu au CentreV" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "Étendu au CentreH" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "Rectangle complet" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Conserver les Proportions" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Uniquement les ancres" @@ -5869,6 +5996,11 @@ msgid "Remove item %d?" msgstr "Supprimer l'objet %d ?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary…" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Ajouter un item" @@ -6298,7 +6430,7 @@ msgstr "Déplacer de points" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" -msgstr "Contrôle : Tourner" +msgstr "Ctrl : Tourner" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" @@ -6508,6 +6640,23 @@ msgid "Save File As..." msgstr "Enregistrer sous…" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importer un thème" @@ -6634,10 +6783,6 @@ msgstr "Fermer les documentations" msgid "Run" msgstr "Lancer" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Afficher/Cacher le panneau des scripts" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Rentrer" @@ -7768,6 +7913,7 @@ msgid "Data Type:" msgstr "Type de données :" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Icône" @@ -7787,6 +7933,10 @@ msgstr "Couleur" msgid "Constant" msgstr "Constante" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "Fichier de Thème" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Supprimer la sélection" @@ -7897,6 +8047,20 @@ msgid "Merge from Scene" msgstr "Fusionner depuis la scène" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Désactiver Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Nouveau %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Coordonnée suivante" @@ -7913,6 +8077,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Sélectionner la forme précédente, sous-tuile, ou tuile." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Mode Région" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Mode collision" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Mode Occlusion" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Mode Navigation" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Mode Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Mode prioritaire" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Index :" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Mode Région" @@ -9051,7 +9250,6 @@ msgstr "" "et de la direction de la caméra (transmettez-lui les entrées associées)." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Custom Godot Shader Language expression, which is placed on top of the " "resulted shader. You can place various function definitions inside and call " @@ -9137,6 +9335,14 @@ msgid "Runnable" msgstr "Exécutable" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Ajouter l'exportation initiale...." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Ajouter les correctifs précédents....." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Supprimer le patch « %s » de la liste ?" @@ -9248,6 +9454,10 @@ msgid "Make Patch" msgstr "Conçevoir un patch" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Fichiers Pack" + +#: editor/project_export.cpp msgid "Features" msgstr "Fonctionnalités" @@ -9285,7 +9495,7 @@ msgstr "Clé de chiffrement invalide (doit comporter 64 caractères)" #: editor/project_export.cpp msgid "Script Encryption Key (256-bits as hex):" -msgstr "Clé de chiffre des scripts (256 bits en hexadécimal) :" +msgstr "Clé de chiffrement des scripts (256 bits en hexadécimal) :" #: editor/project_export.cpp msgid "Export PCK/Zip" @@ -9299,6 +9509,14 @@ msgstr "Mode d'exportation ?" msgid "Export All" msgstr "Tout exporter" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "Fichier ZIP" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Données de jeu Godot" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Modèles d'exportation manquants pour cette plateforme :" @@ -9608,6 +9826,10 @@ msgid "Projects" msgstr "Projets" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Dernière modification" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Scanner" @@ -11227,6 +11449,14 @@ msgid "Set Variable Type" msgstr "Définir type de variable" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Ajouter un port d'entrée" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Ajouter un port de sortie" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "Remplacer une fonction intégrée existante." @@ -11287,14 +11517,6 @@ msgid "Add Signal" msgstr "Ajouter un signal" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "Ajouter un port d'entrée" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "Ajouter un port de sortie" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "Supprimer le port d'entrée" @@ -11436,7 +11658,6 @@ msgstr "" "fonctions." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Select at least one node with sequence port." msgstr "Sélectionnez au moins un nÅ“ud avec un port de séquence." @@ -11477,6 +11698,18 @@ msgid "Members:" msgstr "Membres :" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "Changer le type de base :" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Ajouter des nÅ“uds..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Ajouter une fonction..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "function_name" @@ -11702,31 +11935,10 @@ msgid "Identifier is missing." msgstr "L'identifiant est manquant." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" -"Les segments de l'identifiant doivent être d'une longueur supérieure à zéro." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "Le caractère « %s » n'est pas autorisé dans l'identifiant." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" -"Un chiffre ne peut pas être le premier caractère d'un segment d'identifiant." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"Le caractère « %s » ne peut pas être le premier caractère d'un segment " -"d'identifiant." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "L'identifiant doit avoir au moins un séparateur « . »." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "App Store Team ID non spécifié - ne peut pas configurer le projet." @@ -12465,6 +12677,25 @@ 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 "Identifier segments must be of non-zero length." +#~ msgstr "" +#~ "Les segments de l'identifiant doivent être d'une longueur supérieure à " +#~ "zéro." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Un chiffre ne peut pas être le premier caractère d'un segment " +#~ "d'identifiant." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Le caractère « %s » ne peut pas être le premier caractère d'un segment " +#~ "d'identifiant." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "L'identifiant doit avoir au moins un séparateur « . »." + #~ msgid "Pause the scene" #~ msgstr "Mettre en pause la scène" diff --git a/editor/translations/ga.po b/editor/translations/ga.po index 0994c769e1..c433e85b2a 100644 --- a/editor/translations/ga.po +++ b/editor/translations/ga.po @@ -507,8 +507,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -694,6 +695,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -770,6 +775,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -941,7 +950,7 @@ msgid "Resource" msgstr "Acmhainn" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Cosán" @@ -1406,7 +1415,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1646,6 +1656,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2555,7 +2569,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2866,6 +2881,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2922,6 +2941,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3352,6 +3375,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4465,6 +4492,10 @@ msgstr "" msgid "Transition: " msgstr "Athrú: " +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4719,6 +4750,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4911,6 +4966,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5560,6 +5683,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6185,6 +6312,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6311,10 +6455,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7429,6 +7569,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7448,6 +7589,11 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Amharc ar Chomhaid" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7557,6 +7703,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7573,6 +7731,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8700,6 +8886,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8799,6 +8993,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8850,6 +9048,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9107,6 +9313,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10679,6 +10889,15 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Cuir ionchur leis" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10740,15 +10959,6 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Input Port" -msgstr "Cuir ionchur leis" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "" @@ -10920,6 +11130,19 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Cruthaigh" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11116,27 +11339,10 @@ msgid "Identifier is missing." msgstr "Tá aitheantóir ar iarraidh." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/he.po b/editor/translations/he.po index b438d8656d..c3f7d570ba 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -553,8 +553,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "עריכה" @@ -749,6 +750,10 @@ msgstr "בחירה בלבד" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "החלפת תצוגת ×—×œ×•× ×™×ª סקריפטי×" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -828,6 +833,11 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "מ××¤×™×™× ×™ פריט." + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -1006,7 +1016,7 @@ msgid "Resource" msgstr "מש×ב" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "× ×ª×™×‘" @@ -1483,7 +1493,8 @@ msgid "Node Name:" msgstr "×©× ×”×ž×¤×¨×§:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "ש×" @@ -1746,6 +1757,11 @@ msgid "Erase Profile" msgstr "מחיקת שטח" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "× ×™×”×•×œ ×ª×‘× ×™×•×ª ייצו×" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2700,7 +2716,8 @@ msgstr "שחזור ×¡×¦× ×”" msgid "Miscellaneous project or scene-wide tools." msgstr "×›×œ×™× ×©×•× ×™× ×œ×ž×™×–× ×ו למגוון ×¡×¦× ×•×ª." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "מיז×" @@ -3033,6 +3050,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "×™×™×‘×•× ×ª×‘× ×™×•×ª מקובץ ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "×ž× ×”×œ ×™×™×¦×•× ×ª×‘× ×™×•×ª" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "×™×™×¦×•× ×ž×™×–×" @@ -3089,6 +3111,11 @@ msgstr "פתיחת העורך הב×" msgid "Open the previous Editor" msgstr "פתיחת העורך הקוד×" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "×זהרות" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3530,6 +3557,11 @@ msgid "Select Template File" msgstr "בחירת קובץ ×ª×‘× ×™×ª" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "× ×™×”×•×œ ×ª×‘× ×™×•×ª ייצו×" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "×ž× ×”×œ ×™×™×¦×•× ×ª×‘× ×™×•×ª" @@ -4734,6 +4766,11 @@ msgstr "" msgid "Transition: " msgstr "מעברון" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "מצב גולמי" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4996,6 +5033,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "רישיון" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "רישיון" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5198,6 +5261,86 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "שמ×ל" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "ימין" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "הטיית מצולע" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "מבט תחתי" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "×”×–×—×” משמ×ל" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "×”×–×—×” מימין" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "מתחת" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "מבט שמ×לי" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "מבט על" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "מבט ×™×ž× ×™" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "מבט תחתי" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "יחס מתיחה:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5879,6 +6022,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "×™×™×¦×•× ×¡×¤×¨×™×”" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6529,6 +6677,23 @@ msgid "Save File As..." msgstr "שמירה בש×…" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "×™×™×‘×•× ×¢×¨×›×ª עיצוב" @@ -6661,10 +6826,6 @@ msgstr "סגירת מסמכי×" msgid "Run" msgstr "הרצה" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "החלפת תצוגת ×—×œ×•× ×™×ª סקריפטי×" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "לצעוד לתוך" @@ -7845,6 +8006,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7864,6 +8026,11 @@ msgstr "" msgid "Constant" msgstr "קבוע" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "פתיחת קובץ" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7980,6 +8147,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "הסקריפט הב×" @@ -7999,6 +8178,40 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "מצב גולמי" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "עריכת מצולע" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "עריכת מצולע" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "עריכת מצולע" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "מצב גולמי" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "×™×™×¦×•× ×ž×™×–×" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "מצב גולמי" @@ -9190,6 +9403,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "מועדפי×:" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9291,6 +9513,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " קבצי×" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9346,6 +9573,15 @@ msgstr "×™×™×¦×•× ×ž×™×–×" msgid "Export All" msgstr "ייצו×" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " קבצי×" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9610,6 +9846,10 @@ msgid "Projects" msgstr "מיז×" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11252,6 +11492,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "מועדפי×:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "מועדפי×:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "×©× ×©×’×•×™. ×œ× ×™×›×•×œ לחפוף ×œ×©× ×¡×•×’ ×ž×•×‘× ×” ×§×™×™×." @@ -11317,16 +11567,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "מועדפי×:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "מועדפי×:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "הסרת × ×§×•×“×” ×‘× ×ª×™×‘" @@ -11504,6 +11744,21 @@ msgstr "חברי×:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "×©×™× ×•×™ ערך בררת המחדל" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "הזזת × ×§×•×“×”" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "מעבר ×œ×¤×•× ×§×¦×™×”â€¦" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "×¤×•× ×§×¦×™×•×ª:" @@ -11705,27 +11960,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12456,9 +12694,6 @@ msgstr "" #~ msgid "Update Always" #~ msgstr "לעדכן תמיד" -#~ msgid "Raw Mode" -#~ msgstr "מצב גולמי" - #~ msgid "Path to Node:" #~ msgstr "× ×ª×™×‘ המפרק:" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index 5ea73e6e98..14933b7bda 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -532,8 +532,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -724,6 +725,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -807,6 +812,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp #, fuzzy msgid "Advanced" msgstr "संतà¥à¤²à¤¿à¤¤" @@ -1000,7 +1009,7 @@ msgid "Resource" msgstr "संसाधन" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "पथ" @@ -1489,7 +1498,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1735,6 +1745,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2657,7 +2671,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2971,6 +2986,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -3027,6 +3046,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3466,6 +3489,10 @@ msgid "Select Template File" msgstr "चयनित फ़ाइलें हटाà¤à¤‚?" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4620,6 +4647,10 @@ msgstr "" msgid "Transition: " msgstr "अनà¥à¤µà¤¾à¤¦ में बदलाव करें:" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4876,6 +4907,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "लाइसेंस" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "लाइसेंस" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5072,6 +5129,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5732,6 +5857,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6369,6 +6498,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6497,10 +6643,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7637,6 +7779,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7656,6 +7799,11 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "खोलो इसे" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7767,6 +7915,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7783,6 +7943,37 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8946,6 +9137,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "पसंदीदा:" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9045,6 +9245,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9096,6 +9300,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9357,6 +9569,10 @@ msgid "Projects" msgstr "परियोजना के संसà¥à¤¥à¤¾à¤ªà¤•" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10954,6 +11170,16 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "पसंदीदा:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "पसंदीदा:" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -11019,16 +11245,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "पसंदीदा:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "पसंदीदा:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "मिटाना" @@ -11202,6 +11418,20 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "पसंदीदा:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "कारà¥à¤¯à¥‹à¤‚:" + +#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "function_name" msgstr "कारà¥à¤¯à¥‹à¤‚:" @@ -11401,27 +11631,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/hr.po b/editor/translations/hr.po index 5467aa1523..516693ea12 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -511,8 +511,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -698,6 +699,10 @@ msgstr "Samo odabir" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -776,6 +781,10 @@ msgid "Extra Call Arguments:" msgstr "Dodatni argumenti poziva:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp #, fuzzy msgid "Advanced" msgstr "Balansiran" @@ -952,7 +961,7 @@ msgid "Resource" msgstr "Resurs" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1420,7 +1429,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1660,6 +1670,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2569,7 +2583,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2881,6 +2896,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2937,6 +2956,11 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Upozorenja" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3368,6 +3392,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4482,6 +4510,11 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "NaÄin Interpolacije" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4736,6 +4769,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licenca" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licenca" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4928,6 +4987,76 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Linearno" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Linearno" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5582,6 +5711,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6208,6 +6341,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6334,10 +6484,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7453,6 +7599,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7472,6 +7619,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7580,6 +7731,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7597,6 +7760,37 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "NaÄin Interpolacije" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "NaÄin Interpolacije" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "NaÄin Interpolacije" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "NaÄin Interpolacije" @@ -8731,6 +8925,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8830,6 +9032,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Otvori datoteku" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8881,6 +9088,15 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr "Datoteka:" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9138,6 +9354,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10716,6 +10936,15 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Dodaj Bezier ToÄku" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10778,15 +11007,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Dodaj Bezier ToÄku" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Pomakni Bezier ToÄke" @@ -10961,6 +11181,20 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Promijeni tip %s" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Funkcije:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funkcije:" @@ -11158,27 +11392,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index 0f20323033..31deb22f42 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -553,8 +553,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Szerkesztés" @@ -749,6 +750,10 @@ msgstr "Csak Kiválsztás" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Szkript Panel MegjelenÃtése" + #: 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 @@ -834,6 +839,11 @@ msgstr "További MeghÃvási Argumentumok:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Objektumtulajdonságok." + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "Illesztési beállÃtások" @@ -1019,7 +1029,7 @@ msgid "Resource" msgstr "Forrás" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Útvonal" @@ -1504,7 +1514,8 @@ msgid "Node Name:" msgstr "Node neve:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Név" @@ -1768,6 +1779,11 @@ msgstr "Jobb Egérgomb: Pont Törlése." #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "Export Sablonok Kezelése" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "%d további fájl" @@ -2779,7 +2795,8 @@ msgstr "Scene visszaállÃtás" msgid "Miscellaneous project or scene-wide tools." msgstr "Egyéb projekt- vagy Scene-szintű eszközök." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekt" @@ -3130,6 +3147,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Sablonok Importálása ZIP Fájlból" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Export Sablon KezelÅ‘" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Projekt Exportálása" @@ -3186,6 +3208,10 @@ msgstr "KövetkezÅ‘ SzerkesztÅ‘ Megnyitása" msgid "Open the previous Editor" msgstr "ElÅ‘zÅ‘ SzerkesztÅ‘ Megnyitása" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3635,6 +3661,11 @@ msgid "Select Template File" msgstr "Válasszon sablonfájlt" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Export Sablonok Kezelése" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Export Sablon KezelÅ‘" @@ -4854,6 +4885,11 @@ msgstr "" msgid "Transition: " msgstr "Ãtmenet" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Pásztázás Mód" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -5118,6 +5154,32 @@ msgid "Download for this asset is already in progress!" msgstr "Ennek az eszköznek a letöltése már folyamatban van!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licenc" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licenc" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "elsÅ‘" @@ -5339,6 +5401,85 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Forgató mód" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Sokszög Forgatása" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Sokszög Forgatása" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Forgató mód" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Behúzás Balra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Kijelölés Középre" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Behúzás Jobbra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Kijelölés Középre" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Bal lineáris" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Jobb lineáris" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Méretezési arány:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Csak Horgonyok" @@ -6038,6 +6179,11 @@ msgid "Remove item %d?" msgstr "%d elem eltávolÃtása?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary-ra..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Elem Hozzáadása" @@ -6702,6 +6848,23 @@ msgid "Save File As..." msgstr "Mentés Másként..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Téma Importálása" @@ -6835,10 +6998,6 @@ msgstr "Dokumentációs Lapok Bezárása" msgid "Run" msgstr "Futtatás" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Szkript Panel MegjelenÃtése" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Belépés" @@ -8020,6 +8179,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -8039,6 +8199,11 @@ msgstr "SzÃn" msgid "Constant" msgstr "Ãllandó" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Fálj Megnyitása" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -8156,6 +8321,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Fájlok Megtekintése" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "KövetkezÅ‘ Szkript" @@ -8175,6 +8353,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Forgató mód" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Animáció Node" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Sokszög Szerkesztése" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Navigációs Háló Létrehozása" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Forgató mód" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Projekt Exportálása" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Pásztázás Mód" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Forgató mód" @@ -9382,6 +9595,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Bemenet Hozzáadása" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9483,6 +9705,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Fájlok" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9538,6 +9765,15 @@ msgstr "Projekt Exportálása" msgid "Export All" msgstr "Exportálás" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Fájlok" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9802,6 +10038,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11450,6 +11690,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Bemenet Hozzáadása" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Bemenet Hozzáadása" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "Érvénytelen név. Nem ütközhet egy már meglévÅ‘ beépÃtett tÃpusnévvel." @@ -11515,16 +11765,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Bemenet Hozzáadása" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Bemenet Hozzáadása" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Pont eltávolÃtása" @@ -11703,6 +11943,21 @@ msgstr "Tagok:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "%s TÃpusának Megváltoztatása" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "%s Hozzáadása..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Ugrás Funkcióra..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funkciók:" @@ -11904,27 +12159,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12770,10 +13008,6 @@ msgstr "" #~ msgid "RMB: Erase Point." #~ msgstr "Jobb Egérgomb: Pont Törlése." -#, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Fájlok Megtekintése" - #~ msgid "Save Theme As" #~ msgstr "Téma Mentése Másként" diff --git a/editor/translations/id.po b/editor/translations/id.po index cf2c3bb271..4215cdbc4f 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -21,12 +21,13 @@ # I Dewa Agung Adhinata <agungnata2003@gmail.com>, 2019. # herri siagian <herry.it.2007@gmail.com>, 2019. # MonsterGila <fikrirazor@outlook.co.id>, 2019. +# Modeus Darksono <garuga17@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-04 03:15+0000\n" -"Last-Translator: Sofyan Sugianto <sofyanartem@gmail.com>\n" +"PO-Revision-Date: 2019-12-13 09:38+0000\n" +"Last-Translator: Modeus Darksono <garuga17@gmail.com>\n" "Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/" "godot/id/>\n" "Language: id\n" @@ -34,7 +35,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 3.9-dev\n" +"X-Generator: Weblate 3.10-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -544,8 +545,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Sunting" @@ -646,7 +648,6 @@ msgid "Scale Ratio:" msgstr "Rasio Skala:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" msgstr "Pilih track untuk disalin:" @@ -660,9 +661,8 @@ msgid "Copy" msgstr "Kopy" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Pilih Tidak Ada" +msgstr "Pilih Semua/Tidak Pilih Semua" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -733,6 +733,10 @@ msgstr "Hanya yang Dipilih" msgid "Standard" msgstr "Standar" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Jungkitkan Panel Skrip" + #: 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 @@ -811,6 +815,11 @@ msgid "Extra Call Arguments:" msgstr "Argumen-argumen Panggilan Ekstra:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Pilih Method/Fungsi" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Lanjut" @@ -987,7 +996,7 @@ msgid "Resource" msgstr "Resource" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Path" @@ -1459,7 +1468,8 @@ msgid "Node Name:" msgstr "Nama Node:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nama" @@ -1709,6 +1719,11 @@ msgid "Erase Profile" msgstr "Hapus Profil" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "Kelola Editor Fitur Profil" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Impor Profil" @@ -2673,7 +2688,8 @@ msgstr "Kembalikan Skena" msgid "Miscellaneous project or scene-wide tools." msgstr "Perkakas macam-macam proyek atau lingkup skena." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Proyek" @@ -3014,6 +3030,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Impor Templat dari Berkas ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Manajer Templat Ekspor" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Ekspor Projek" @@ -3070,6 +3091,11 @@ msgstr "Buka Editor Selanjutnya" msgid "Open the previous Editor" msgstr "Buka Editor Sebelumnya" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Peringatan" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Tidak ada sub-sumber yang ditemukan." @@ -3515,6 +3541,11 @@ msgid "Select Template File" msgstr "Pilih berkas templat" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Memuat Ekspor Template-template." + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Manajer Templat Ekspor" @@ -4651,6 +4682,11 @@ msgstr "Terapkan akhir pada animasi. Berguna untuk sub-transisi." msgid "Transition: " msgstr "Transisi: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Mode Geser Pandangan" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4906,6 +4942,32 @@ msgid "Download for this asset is already in progress!" msgstr "Unduhan untuk aset ini sedang diproses!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Lisensi" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Lisensi" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Pertama" @@ -5108,6 +5170,87 @@ msgstr "" "batasnya." #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Kiri" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Kanan" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Putar ke kanan" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Tampilan Bawah" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Indentasi Kiri" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Seleksi Tengah" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Indentasi Kanan" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Bawah" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Tampilan Kiri" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Tampilan Atas" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Tampilan Kanan" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Tampilan Bawah" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Rasio Skala:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Hanya jangkar-jangkar" @@ -5777,6 +5920,11 @@ msgid "Remove item %d?" msgstr "Hapus item %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "PerpustakaanMesh..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Tambah Item" @@ -6411,6 +6559,23 @@ msgid "Save File As..." msgstr "Simpan Berkas Sebagai..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Impor Tema" @@ -6537,10 +6702,6 @@ msgstr "Tutup Dokumentasi" msgid "Run" msgstr "Jalankan" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Jungkitkan Panel Skrip" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Masuki" @@ -7670,6 +7831,7 @@ msgid "Data Type:" msgstr "Jenis data:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikon" @@ -7689,6 +7851,11 @@ msgstr "Warna" msgid "Constant" msgstr "Konstan" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Hapus Pilihan" @@ -7799,6 +7966,20 @@ msgid "Merge from Scene" msgstr "Gabung dari Skena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Nonaktifkan Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "%s baru" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Koordinat berikutnya" @@ -7815,6 +7996,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Pilih bentuk sebelumnya, subtile, atau Tile." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Mode Wilayah" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Mode Tabrakan" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Mode Oklusi" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Mode Navigasi" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Mode Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Mode Prioritas" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Indeks:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Mode Wilayah" @@ -9037,6 +9253,15 @@ msgid "Runnable" msgstr "Dapat dijalankan" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Tambah port masukan" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Hapus entri penambalan '%s' dari daftar?" @@ -9147,6 +9372,11 @@ msgid "Make Patch" msgstr "Buat Tambalan" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Berkas" + +#: editor/project_export.cpp msgid "Features" msgstr "Fitur" @@ -9198,6 +9428,15 @@ msgstr "Mode ekspor?" msgid "Export All" msgstr "Ekspor Semua" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Berkas" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Tidak ada templat ekspor untuk platform ini:" @@ -9500,6 +9739,10 @@ msgid "Projects" msgstr "Proyek" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Pindai" @@ -11110,6 +11353,16 @@ msgstr "Atur Jenis variabel" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Tambah port masukan" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Tambah port keluaran" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "Tidak boleh sama dengan nama tipe bawaan yang ada." @@ -11175,16 +11428,6 @@ msgstr "Tambahkan Sinyal" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Tambah port masukan" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Tambah port keluaran" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Hapus port masukan" @@ -11373,6 +11616,21 @@ msgstr "Member-member:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Ubah Tipe Nilai Array" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Tambah Node..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Tambahkan Fungsi" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Fungsi-fungsi:" @@ -11581,28 +11839,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "Nama bukan sebuah pengidentifikasi yang sah:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12255,13 +12496,12 @@ msgid "(Other)" msgstr "(Yang Lain)" #: scene/main/scene_tree.cpp -#, fuzzy msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." msgstr "" "Lingkungan Baku yang ditetapkan di Pengaturan Proyek (Rendering -> Viewport -" -"> Lingkungan Baku) tidak dapat dimuat" +"> Lingkungan Baku) tidak dapat dimuat." #: scene/main/viewport.cpp msgid "" @@ -12277,14 +12517,12 @@ msgstr "" "beberapa node untuk ditampilkan." #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid source for preview." -msgstr "Ukuran font tidak sah." +msgstr "Sumber tidak sah untuk pratinjau." #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid source for shader." -msgstr "Ukuran font tidak sah." +msgstr "Sumber tidak sah untuk shader." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid comparison function for that type." @@ -12946,9 +13184,6 @@ msgstr "Konstanta tidak dapat dimodifikasi." #~ msgid "Re-Importing" #~ msgstr "Mengimpor ulang" -#~ msgid "Loading Export Templates" -#~ msgstr "Memuat Ekspor Template-template." - #~ msgid "Pick New Name and Location For:" #~ msgstr "Tentukan Nama dan Lokasi Baru untuk:" diff --git a/editor/translations/is.po b/editor/translations/is.po index 6f06c5a142..2084869884 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -533,8 +533,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Breyta" @@ -726,6 +727,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -802,6 +807,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -974,7 +983,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1440,7 +1449,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1682,6 +1692,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2594,7 +2608,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2908,6 +2923,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2964,6 +2983,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3395,6 +3418,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4521,6 +4548,10 @@ msgstr "" msgid "Transition: " msgstr "Stillið breyting á:" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4775,6 +4806,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4969,6 +5024,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5625,6 +5748,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6254,6 +6381,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6380,10 +6524,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7508,6 +7648,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7527,6 +7668,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7638,6 +7783,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7654,6 +7811,37 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Breyta Viðbót" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Breyta Viðbót" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Breyta Viðbót" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8800,6 +8988,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8899,6 +9095,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8950,6 +9150,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9211,6 +9419,10 @@ msgid "Projects" msgstr "Verkefna Stjóri" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10791,6 +11003,16 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Stillið breyting á:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Fjarlægja val" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10854,16 +11076,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Stillið breyting á:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Fjarlægja val" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Fjarlægja val" @@ -11037,6 +11249,19 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Val á kvarða" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11234,27 +11459,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/it.po b/editor/translations/it.po index 642723f8bb..3959117459 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -563,8 +563,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Modifica" @@ -750,6 +751,10 @@ msgstr "Solo selezione" msgid "Standard" msgstr "Standard" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Attiva Pannello Scripts" + #: 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 @@ -828,6 +833,11 @@ msgid "Extra Call Arguments:" msgstr "Argomenti chiamata extra:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Seleziona Metodo" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Opzioni avanzate" @@ -1005,7 +1015,7 @@ msgid "Resource" msgstr "Risorsa" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Percorso" @@ -1479,7 +1489,8 @@ msgid "Node Name:" msgstr "Nome nodo:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nome" @@ -1730,6 +1741,11 @@ msgid "Erase Profile" msgstr "Cancella profilo" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "Gestisci i profili delle funzionalità dell'editor" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Importa profili" @@ -2704,7 +2720,8 @@ msgstr "Ripristina scena" msgid "Miscellaneous project or scene-wide tools." msgstr "Strumenti di progetto o scena vari." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Progetto" @@ -3051,6 +3068,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importa template da un file ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Gestore Template Esportazione" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Esporta progetto" @@ -3107,6 +3129,11 @@ msgstr "Apri l'Editor successivo" msgid "Open the previous Editor" msgstr "Apri l'Editor precedente" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Avvertimento" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Nessuna sottorisorsa trovata." @@ -3554,6 +3581,11 @@ msgid "Select Template File" msgstr "Seleziona file template" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Caricamento Template d'Esportazione" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Gestore Template Esportazione" @@ -4699,6 +4731,11 @@ msgstr "Assegna l'animazione finale. Questo è utile per le sotto-transizioni." msgid "Transition: " msgstr "Transizione: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Modalità di Pan" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4953,6 +4990,32 @@ msgid "Download for this asset is already in progress!" msgstr "Il download per questo asset è già in corso!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licenza" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licenza" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Primo" @@ -5158,6 +5221,88 @@ msgstr "" "loro margini." #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Sinistra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Destra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Ruota a destra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Vista dal Basso" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Indenta Sinistra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Centra Selezione" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Indenta Destra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Basso" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Vista Sinistra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Vista dall'Alto" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Vista Destra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Vista dal Basso" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Full Rect" +msgstr "Nome completo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Fattore di scalatura:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Solo ancore" @@ -5829,6 +5974,11 @@ msgid "Remove item %d?" msgstr "Rimuovi elemento %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Libreria delle Mesh..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Aggiungi Elemento" @@ -6466,6 +6616,23 @@ msgid "Save File As..." msgstr "Salva File Come..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importa Tema" @@ -6592,10 +6759,6 @@ msgstr "Chiudi Documentazione" msgid "Run" msgstr "Esegui" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Attiva Pannello Scripts" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Passo Precedente" @@ -7725,6 +7888,7 @@ msgid "Data Type:" msgstr "Tipo Dato:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Icona" @@ -7744,6 +7908,11 @@ msgstr "Colore" msgid "Constant" msgstr "Costante" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Cancella Selezione" @@ -7855,6 +8024,20 @@ msgid "Merge from Scene" msgstr "Unisci da Scena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Disabilita Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Atlas:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Prossima Coordinata" @@ -7871,6 +8054,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Seleziona la precedente forma, sottotile, o Tile." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Modalità regione" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Modalità di Collisione" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Modalità di occlusione" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Modalità di navigazione" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Modalità Maschera di Bit" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Modalità prioritaria" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Indice:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modalità regione" @@ -9092,6 +9310,15 @@ msgid "Runnable" msgstr "Eseguibile" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Aggiungi porta di Input" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Eliminare patch '%s' dalla lista?" @@ -9203,6 +9430,11 @@ msgid "Make Patch" msgstr "Crea Patch" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Files" + +#: editor/project_export.cpp msgid "Features" msgstr "Funzionalità " @@ -9254,6 +9486,15 @@ msgstr "Modalità di esportazione?" msgid "Export All" msgstr "Esporta Tutto" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Files" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Le export templates per questa piattaforma sono mancanti:" @@ -9560,6 +9801,11 @@ msgid "Projects" msgstr "Progetti" #: editor/project_manager.cpp +#, fuzzy +msgid "Last Modified" +msgstr "Modificato" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Esamina" @@ -11175,6 +11421,16 @@ msgid "Set Variable Type" msgstr "Imposta Tipo di Variabile" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Aggiungi porta di Input" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Aggiungi porta di Output" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "Sovrascrivi una funzione built-in esistente." @@ -11237,16 +11493,6 @@ msgstr "Aggiungi Segnale" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Aggiungi porta di Input" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Aggiungi porta di Output" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Rimuovi porta input" @@ -11426,6 +11672,21 @@ msgstr "Membri:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Cambia Tipo di Base" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Aggiungi Nodo..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Aggiungi Funzione" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funzione:" @@ -11651,31 +11912,10 @@ msgid "Identifier is missing." msgstr "L'identificatore è mancante." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "I segmenti identificativi devono essere di lunghezza diversa da zero." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "Il carattere '%s' non è consentito nell'Identificatore." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" -"Una cifra non può essere il primo carattere di un segmento di " -"Identificazione." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"Il carattere '%s' non può essere il primo carattere di un segmento di " -"Identificazione." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "L'Identificatore deve avere almeno un '.' separatore." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" "App Store Team ID non specificato - non è possibile configurare il progetto." @@ -12409,6 +12649,24 @@ msgstr "Varyings può essere assegnato soltanto nella funzione del vertice." msgid "Constants cannot be modified." msgstr "Le constanti non possono essere modificate." +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "" +#~ "I segmenti identificativi devono essere di lunghezza diversa da zero." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Una cifra non può essere il primo carattere di un segmento di " +#~ "Identificazione." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Il carattere '%s' non può essere il primo carattere di un segmento di " +#~ "Identificazione." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "L'Identificatore deve avere almeno un '.' separatore." + #~ msgid "Pause the scene" #~ msgstr "Metti in pausa la scena" @@ -12898,9 +13156,6 @@ msgstr "Le constanti non possono essere modificate." #~ msgid "Rotate 270 degrees" #~ msgstr "Ruota a 270 gradi" -#~ msgid "Warning" -#~ msgstr "Avvertimento" - #~ msgid "Variable" #~ msgstr "Valiabile" @@ -13395,9 +13650,6 @@ msgstr "Le constanti non possono essere modificate." #~ msgid "Re-Import Changed Resources" #~ msgstr "Re-Importando Risorse Cambiate" -#~ msgid "Loading Export Templates" -#~ msgstr "Caricamento Template d'Esportazione" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13992,9 +14244,6 @@ msgstr "Le constanti non possono essere modificate." #~ msgid "Create Android keystore" #~ msgstr "Crea keystore Android" -#~ msgid "Full name" -#~ msgstr "Nome completo" - #~ msgid "Organizational unit" #~ msgstr "Unità organizzativa" @@ -14098,9 +14347,6 @@ msgstr "Le constanti non possono essere modificate." #~ msgid "Lossy Quality:" #~ msgstr "Qualità Lossy:" -#~ msgid "Atlas:" -#~ msgstr "Atlas:" - #~ msgid "Shrink By:" #~ msgstr "Riduci di:" diff --git a/editor/translations/ja.po b/editor/translations/ja.po index de6d6822ca..28a1618025 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -28,12 +28,13 @@ # leela <53352@protonmail.com>, 2019. # Tarou Yamada <mizuningyou@yahoo.co.jp>, 2019. # kazuma kondo <kazmax7@gmail.com>, 2019. +# Akihiro Ogoshi <technical@palsystem-game.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-09 22:04+0000\n" -"Last-Translator: kazuma kondo <kazmax7@gmail.com>\n" +"PO-Revision-Date: 2019-12-21 08:37+0000\n" +"Last-Translator: Akihiro Ogoshi <technical@palsystem-game.com>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" "Language: ja\n" @@ -41,7 +42,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 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -553,8 +554,9 @@ msgstr "フレームレート" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "編集" @@ -740,6 +742,10 @@ msgstr "é¸æŠžç¯„å›²ã®ã¿" msgid "Standard" msgstr "標準" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "スクリプトパãƒãƒ«ã‚’切り替ãˆ" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -818,6 +824,11 @@ msgid "Extra Call Arguments:" msgstr "è¿½åŠ ã®å‘¼å‡ºã—引数:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "メソッドã®é¸æŠž" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "高度ãªè¨å®š" @@ -993,7 +1004,7 @@ msgid "Resource" msgstr "リソース" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "パス" @@ -1465,7 +1476,8 @@ msgid "Node Name:" msgstr "ノードå:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "åå‰" @@ -1716,6 +1728,11 @@ msgid "Erase Profile" msgstr "プãƒãƒ•ァイルを消去" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "エディタ機能ã®ãƒ—ãƒãƒ•ァイルã®ç®¡ç†" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "プãƒãƒ•ァイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ" @@ -2678,7 +2695,8 @@ msgstr "ã‚·ãƒ¼ãƒ³ã‚’å…ƒã«æˆ»ã™" msgid "Miscellaneous project or scene-wide tools." msgstr "ãã®ä»–ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã¾ãŸã¯ã‚·ãƒ¼ãƒ³å…¨ä½“ã®ãƒ„ール。" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆ" @@ -3019,6 +3037,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "ZIPファイルã‹ã‚‰ãƒ†ãƒ³ãƒ—レートをインãƒãƒ¼ãƒˆ" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "テンプレートã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ マãƒãƒ¼ã‚¸ãƒ£ãƒ¼" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" @@ -3075,6 +3098,11 @@ msgstr "次ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã" msgid "Open the previous Editor" msgstr "å‰ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "è¦å‘Š" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "サブリソースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" @@ -3519,6 +3547,11 @@ msgid "Select Template File" msgstr "ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "エクスãƒãƒ¼ãƒˆã€€ãƒ†ãƒ³ãƒ—レートã®èªã¿è¾¼ã¿" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "テンプレートã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ マãƒãƒ¼ã‚¸ãƒ£ãƒ¼" @@ -4335,9 +4368,8 @@ msgid "Audio Clips" msgstr "オーディオクリップ:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Functions" -msgstr "関数:" +msgstr "関数" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp @@ -4654,6 +4686,11 @@ msgstr "終了アニメーションをè¨å®šã™ã‚‹ã€‚ã“れã¯ã‚µãƒ–トランジ msgid "Transition: " msgstr "トランジション: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "パンモード" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4909,6 +4946,32 @@ msgid "Download for this asset is already in progress!" msgstr "ã“ã®ã‚¢ã‚»ãƒƒãƒˆã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã¯æ—¢ã«é€²è¡Œä¸ï¼" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "ライセンス" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "ライセンス" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "最åˆ" @@ -5112,6 +5175,87 @@ msgstr "" "ã•れã¾ã™ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "å·¦å´é¢" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "å³å´é¢" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "å³ã«å›žè»¢" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "下é¢å›³" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "左インデント" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "ã‚»ãƒ³ã‚¿ãƒ¼é¸æŠž" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "å³ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆ" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "下é¢" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "å·¦å´é¢å›³" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "上é¢å›³" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "å³å´é¢å›³" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "下é¢å›³" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "スケール比:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "アンカーã®ã¿" @@ -5774,6 +5918,11 @@ msgid "Remove item %d?" msgstr "アイテム%dã‚’å–り除ãã¾ã™ã‹ï¼Ÿ" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "メッシュライブラリ..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "ã‚¢ã‚¤ãƒ†ãƒ ã‚’è¿½åŠ " @@ -6409,6 +6558,23 @@ msgid "Save File As..." msgstr "åå‰ã‚’付ã‘ã¦ä¿å˜..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "テーマã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ" @@ -6535,10 +6701,6 @@ msgstr "ドã‚ュメントを閉ã˜ã‚‹" msgid "Run" msgstr "実行" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "スクリプトパãƒãƒ«ã‚’切り替ãˆ" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "ステップイン" @@ -7672,6 +7834,7 @@ msgid "Data Type:" msgstr "データã®åž‹:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "アイコン" @@ -7691,6 +7854,11 @@ msgstr "色" msgid "Constant" msgstr "コンスタント" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "テーマ" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "é¸æŠžå¯¾è±¡ã‚’æ¶ˆåŽ»" @@ -7803,6 +7971,20 @@ msgid "Merge from Scene" msgstr "シーンã‹ã‚‰ãƒžãƒ¼ã‚¸" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "オートタイルを無効ã«ã™ã‚‹" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "æ–°è¦ %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "次ã®åº§æ¨™" @@ -7819,6 +8001,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "å‰ã®ã‚·ã‚§ã‚¤ãƒ—ã€ã‚µãƒ–タイルã€ã¾ãŸã¯ã‚¿ã‚¤ãƒ«ã‚’é¸æŠžã—ã¾ã™ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "é ˜åŸŸãƒ¢ãƒ¼ãƒ‰" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "コリジョンモード" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "オクルージョンモード" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "ナビゲーションモード" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "ビットマスクモード" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "優先モード" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "インデックス:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "é ˜åŸŸãƒ¢ãƒ¼ãƒ‰" @@ -9051,6 +9268,15 @@ msgid "Runnable" msgstr "実行å¯èƒ½" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "入力ãƒãƒ¼ãƒˆã®è¿½åŠ " + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "パッム'%s' をリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹?" @@ -9162,6 +9388,11 @@ msgid "Make Patch" msgstr "パッãƒç”Ÿæˆ" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " ファイル" + +#: editor/project_export.cpp msgid "Features" msgstr "特徴" @@ -9214,6 +9445,15 @@ msgstr "エクスãƒãƒ¼ãƒˆ モード?" msgid "Export All" msgstr "ã™ã¹ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " ファイル" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "ã“ã®ãƒ—ラットフォームã«å¯¾ã™ã‚‹ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ テンプレートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:" @@ -9517,6 +9757,11 @@ msgid "Projects" msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆ" #: editor/project_manager.cpp +#, fuzzy +msgid "Last Modified" +msgstr "変更ã•れãŸç®‡æ‰€" + +#: editor/project_manager.cpp msgid "Scan" msgstr "スã‚ャン" @@ -11152,6 +11397,16 @@ msgid "Set Variable Type" msgstr "変数ã®åž‹ã‚’è¨å®š" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "入力ãƒãƒ¼ãƒˆã®è¿½åŠ " + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "出力ãƒãƒ¼ãƒˆã‚’è¿½åŠ " + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "æ—¢å˜ã®çµ„è¾¼ã¿é–¢æ•°ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã€‚" @@ -11214,16 +11469,6 @@ msgstr "ã‚·ã‚°ãƒŠãƒ«ã‚’è¿½åŠ " #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "入力ãƒãƒ¼ãƒˆã®è¿½åŠ " - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "出力ãƒãƒ¼ãƒˆã‚’è¿½åŠ " - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "入力ãƒãƒ¼ãƒˆã®å‰Šé™¤" @@ -11416,6 +11661,21 @@ msgstr "メンãƒãƒ¼:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "基本ã®åž‹ã‚’変更" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "ãƒŽãƒ¼ãƒ‰ã‚’è¿½åŠ ..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "é–¢æ•°ã‚’è¿½åŠ " + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "関数:" @@ -11629,27 +11889,10 @@ msgid "Identifier is missing." msgstr "è˜åˆ¥åãŒã‚りã¾ã›ã‚“。" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "è˜åˆ¥åセグメントã¯ã‚¼ãƒä»¥å¤–ã®é•·ã•ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "æ–‡å— '%s' ã¯è˜åˆ¥åã«ä½¿ç”¨ã§ãã¾ã›ã‚“。" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "æ•°å—ã‚’è˜åˆ¥åセグメントã®å…ˆé ã«ä½¿ç”¨ã§ãã¾ã›ã‚“。" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "æ–‡å— '%s' ã¯è˜åˆ¥å セグメントã®å…ˆé ã«ä½¿ç”¨ã§ãã¾ã›ã‚“。" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "è˜åˆ¥åã«ã¯ä¸€ã¤ä»¥ä¸Šã®åŒºåˆ‡ã‚Šæ–‡å— '.' ãŒå¿…è¦ã§ã™ã€‚" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "App Store ãƒãƒ¼ãƒ ID ãŒæœªæŒ‡å®š - プãƒã‚¸ã‚§ã‚¯ãƒˆã‚’æ§‹æˆã§ãã¾ã›ã‚“。" @@ -12375,6 +12618,19 @@ msgstr "Varyingã¯é ‚点関数ã«ã®ã¿å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" msgid "Constants cannot be modified." msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "è˜åˆ¥åセグメントã¯ã‚¼ãƒä»¥å¤–ã®é•·ã•ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。" + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "æ•°å—ã‚’è˜åˆ¥åセグメントã®å…ˆé ã«ä½¿ç”¨ã§ãã¾ã›ã‚“。" + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "æ–‡å— '%s' ã¯è˜åˆ¥å セグメントã®å…ˆé ã«ä½¿ç”¨ã§ãã¾ã›ã‚“。" + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "è˜åˆ¥åã«ã¯ä¸€ã¤ä»¥ä¸Šã®åŒºåˆ‡ã‚Šæ–‡å— '.' ãŒå¿…è¦ã§ã™ã€‚" + #~ msgid "Pause the scene" #~ msgstr "ã‚·ãƒ¼ãƒ³ã‚’ä¸€æ™‚åœæ¢" @@ -12876,9 +13132,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" #~ msgid "Rotate 270 degrees" #~ msgstr "270度回転" -#~ msgid "Warning" -#~ msgstr "è¦å‘Š" - #~ msgid "Variable" #~ msgstr "変数" @@ -13408,10 +13661,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" #~ msgstr "変更ã—ãŸãƒªã‚½ãƒ¼ã‚¹ã‚’å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ" #, fuzzy -#~ msgid "Loading Export Templates" -#~ msgstr "エクスãƒãƒ¼ãƒˆã€€ãƒ†ãƒ³ãƒ—レートã®èªã¿è¾¼ã¿" - -#, fuzzy #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" diff --git a/editor/translations/ka.po b/editor/translations/ka.po index 839ad533f5..a362f6426c 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -551,8 +551,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "შეცვლáƒ" @@ -745,6 +746,10 @@ msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ მხáƒáƒšáƒáƒ“" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -828,6 +833,10 @@ msgid "Extra Call Arguments:" msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი გáƒáƒ›áƒáƒ«áƒáƒ®áƒ”ბის áƒáƒ გუმენტები:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp #, fuzzy msgid "Advanced" msgstr "დáƒáƒ‘áƒáƒšáƒáƒœáƒ¡áƒ”ბული" @@ -1012,7 +1021,7 @@ msgid "Resource" msgstr "რესურსი" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "გზáƒ" @@ -1492,7 +1501,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1742,6 +1752,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2669,7 +2683,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2984,6 +2999,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -3040,6 +3059,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3477,6 +3500,10 @@ msgid "Select Template File" msgstr "წáƒáƒ•შáƒáƒšáƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი?" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4631,6 +4658,11 @@ msgstr "" msgid "Transition: " msgstr "გáƒáƒ დáƒáƒ¡áƒ•ლáƒ" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "გზრკვáƒáƒœáƒ«áƒáƒ›áƒ“ე:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4887,6 +4919,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "ლიცენზიáƒ" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "ლიცენზიáƒ" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5084,6 +5142,77 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "წრფივი" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "წრფივი" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ დáƒáƒ‘áƒ:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5751,6 +5880,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6387,6 +6520,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6515,10 +6665,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7663,6 +7809,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7682,6 +7829,11 @@ msgstr "" msgid "Constant" msgstr "მუდმივი" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7793,6 +7945,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7810,6 +7974,38 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "შექმნáƒ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "შექმნáƒ" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი" @@ -8981,6 +9177,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "სáƒáƒ§áƒ•áƒáƒ ლები:" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9080,6 +9285,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9131,6 +9340,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9389,6 +9606,10 @@ msgid "Projects" msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10991,6 +11212,16 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "სáƒáƒ§áƒ•áƒáƒ ლები:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "სáƒáƒ§áƒ•áƒáƒ ლები:" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -11056,16 +11287,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "სáƒáƒ§áƒ•áƒáƒ ლები:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "სáƒáƒ§áƒ•áƒáƒ ლები:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ ებáƒ" @@ -11242,6 +11463,21 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "%s ტიპის ცვლილებáƒ" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "სáƒáƒ§áƒ•áƒáƒ ლები:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "ფუნქციის შექმნáƒ" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "ფუნქციები:" @@ -11440,27 +11676,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12084,9 +12303,6 @@ msgstr "" #~ msgid "Invalid font size." #~ msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." -#~ msgid "Path to Node:" -#~ msgstr "გზრკვáƒáƒœáƒ«áƒáƒ›áƒ“ე:" - #~ msgid "Line:" #~ msgstr "ხáƒáƒ–ი:" diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 63fd0fe16c..636e68613a 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -14,11 +14,12 @@ # Ch. <ccwpc@hanmail.net>, 2018. # moolow <copyhyeon@gmail.com>, 2019. # Jiyoon Kim <kimjiy@dickinson.edu>, 2019. +# Ervin <zetsmart@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-25 04:05+0000\n" +"PO-Revision-Date: 2019-12-21 08:38+0000\n" "Last-Translator: ì†¡íƒœì„ <xotjq237@gmail.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" @@ -27,12 +28,12 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "conver() ë©”ì„œë“œì˜ ì¸ìˆ˜ ìœ í˜•ì´ ìž˜ëª»ë˜ì—ˆì–´ìš”. TYPE_* ìƒìˆ˜ë¥¼ 사용하세요." +msgstr "convert() ë©”ì„œë“œì˜ ì¸ìˆ˜ ìœ í˜•ì´ ìž˜ëª»ë˜ì—ˆì–´ìš”. TYPE_* ìƒìˆ˜ë¥¼ 사용하세요." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp @@ -533,8 +534,9 @@ msgstr "초당 í”„ë ˆìž„" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "편집하기" @@ -720,6 +722,10 @@ msgstr "ì„ íƒ í•목만" msgid "Standard" msgstr "표준" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "스í¬ë¦½íЏ íŒ¨ë„ í† ê¸€" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -798,6 +804,11 @@ msgid "Extra Call Arguments:" msgstr "별ë„ì˜ í˜¸ì¶œ ì¸ìˆ˜:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "메서드 ì„ íƒí•˜ê¸°" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "ê³ ê¸‰" @@ -974,7 +985,7 @@ msgid "Resource" msgstr "리소스" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "경로" @@ -1444,7 +1455,8 @@ msgid "Node Name:" msgstr "노드 ì´ë¦„:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "ì´ë¦„" @@ -1693,6 +1705,10 @@ msgid "Erase Profile" msgstr "프로필 지우기" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Godot 기능 프로필" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "프로필 ê°€ì ¸ì˜¤ê¸°" @@ -2646,7 +2662,8 @@ msgstr "씬 ë˜ëŒë¦¬ê¸°" msgid "Miscellaneous project or scene-wide tools." msgstr "프로ì 트 ë˜ëŠ” 씬 ê´€ë ¨ 여러가지 ë„구들." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "프로ì 트" @@ -2746,7 +2763,7 @@ msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" -"ì´ ì„¤ì •ì„ ì¼œë©´ ê²Œìž„ì„ ì‹¤í–‰í•˜ëŠ” ë™ì•ˆ Navigation 메시와 í´ë¦¬ê³¤ì´ ë³´ì´ê²Œ ë¼ìš”." +"ì´ ì„¤ì •ì„ ì¼œë©´, ê²Œìž„ì„ ì‹¤í–‰í•˜ëŠ” ë™ì•ˆ Navigation 메시와 í´ë¦¬ê³¤ì´ ë³´ì´ê²Œ ë¼ìš”." #: editor/editor_node.cpp msgid "Sync Scene Changes" @@ -2889,11 +2906,11 @@ msgstr "씬 실행하기" #: editor/editor_node.cpp msgid "Play custom scene" -msgstr "맞춤 씬 실행하기" +msgstr "ì”¬ì„ ì§€ì •í•´ì„œ 실행해요" #: editor/editor_node.cpp msgid "Play Custom Scene" -msgstr "ì”¬ì„ ì§€ì •í•´ì„œ 실행해요" +msgstr "맞춤 씬 실행하기" #: editor/editor_node.cpp msgid "Changing the video driver requires restarting the editor." @@ -2979,6 +2996,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "ZIP 파ì¼ì—서 템플릿 ê°€ì ¸ì˜¤ê¸°" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "템플릿 패키지" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "프로ì 트 내보내기" @@ -3035,6 +3056,11 @@ msgstr "ë‹¤ìŒ íŽ¸ì§‘ê¸° 열기" msgid "Open the previous Editor" msgstr "ì´ì „ 편집기 열기" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "ê²½ê³ " + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "하위 리소스를 ì°¾ì„ ìˆ˜ 없어요." @@ -3477,6 +3503,10 @@ msgid "Select Template File" msgstr "템플릿 íŒŒì¼ ì„ íƒí•˜ê¸°" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Godot 내보내기 템플릿" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "내보내기 템플릿 ë§¤ë‹ˆì €" @@ -4606,6 +4636,11 @@ msgstr "ë ì• ë‹ˆë©”ì´ì…˜ì„ ì„¤ì •í•´ìš”. ì´ê²ƒì€ 하위 ì „í™˜ì— ìœ ìš©í• msgid "Transition: " msgstr "ì „í™˜: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "팬 모드" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4860,6 +4895,30 @@ msgid "Download for this asset is already in progress!" msgstr "ì´ ì• ì…‹ì€ ì´ë¯¸ 다운로드 중ì´ì—ìš”!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "최근 ì—…ë°ì´íЏ" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "가장 최근 ì—…ë°ì´íЏ" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "ì´ë¦„ (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "ì´ë¦„ (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "ë¼ì´ì„ 스 (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "ë¼ì´ì„ 스 (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "처ìŒìœ¼ë¡œ" @@ -5053,11 +5112,79 @@ msgstr "Control ë…¸ë“œì˜ ì•µì»¤ì™€ 여백 ê°’ì˜ í”„ë¦¬ì…‹." msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." -msgstr "켜면, Control 노드는 움ì§ì´ë©´ì„œ ì—¬ë°±ì´ ì•„ë‹Œ 앵커를 바꿔요." +msgstr "ì´ ì„¤ì •ì„ ì¼œë©´, Control 노드는 움ì§ì´ë©´ì„œ ì—¬ë°±ì´ ì•„ë‹Œ 앵커를 바꿔요." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "왼쪽 위" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "오른쪽 위" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "오른쪽 아래" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "왼쪽 아래" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "왼쪽 중앙" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "위쪽 중앙" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "오른쪽 중앙" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "아래쪽 중앙" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "중앙" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "왼쪽 넓게" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "위쪽 넓게" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "오른쪽 넓게" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "아래쪽 넓게" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "수ì§ì„ 중앙 넓게" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "수í‰ì„ 중앙 넓게" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "사ê°í˜• ì „ì²´" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "비율 ìœ ì§€í•˜ê¸°" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" -msgstr "앵커만" +msgstr "앵커만 ì ìš©" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change Anchors and Margins" @@ -5717,6 +5844,11 @@ msgid "Remove item %d?" msgstr "%dê°œì˜ í•ëª©ì„ ì‚ì œí• ê¹Œìš”?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "í•목 추가하기" @@ -6347,6 +6479,23 @@ msgid "Save File As..." msgstr "다른 ì´ë¦„으로 ì €ìž¥í•˜ê¸°..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "테마 ê°€ì ¸ì˜¤ê¸°" @@ -6473,10 +6622,6 @@ msgstr "문서 닫기" msgid "Run" msgstr "실행하기" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "스í¬ë¦½íЏ íŒ¨ë„ í† ê¸€" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "í”„ë¡œì‹œì € 단위 실행하기" @@ -7602,6 +7747,7 @@ msgid "Data Type:" msgstr "ë°ì´í„° ìœ í˜•:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "ì•„ì´ì½˜" @@ -7621,6 +7767,10 @@ msgstr "색깔" msgid "Constant" msgstr "ë¹„ì„ í˜•" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "테마 파ì¼" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "ì„ íƒ ì§€ìš°ê¸°" @@ -7731,6 +7881,20 @@ msgid "Merge from Scene" msgstr "씬ì—서 병합하기" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "ì˜¤í† íƒ€ì¼ ë„기" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "ì•„í‹€ë¼ìФ:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "ë‹¤ìŒ ì¢Œí‘œ" @@ -7747,6 +7911,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "ì´ì „ 모양, 하위 타ì¼, í˜¹ì€ íƒ€ì¼ì„ ì„ íƒí•˜ì„¸ìš”." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "ì§€ì— ëª¨ë“œ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "ì¶©ëŒ ëª¨ë“œ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "ì–´í´ë£¨ì „ 모드" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "내비게ì´ì…˜ 모드" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "비트 ë§ˆìŠ¤í¬ ëª¨ë“œ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "ìš°ì„ ìˆœìœ„ 모드" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "ì¸ë±ìФ:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "ì§€ì— ëª¨ë“œ" @@ -8933,6 +9132,14 @@ msgid "Runnable" msgstr "실행가능" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "초기 내보내기 추가하기..." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "ì´ì „ 패치 추가하기..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "'%s'ì„(를) 패치 목ë¡ì—서 ì‚ì œí• ê¹Œìš”?" @@ -9041,6 +9248,10 @@ msgid "Make Patch" msgstr "패치 만들기" #: editor/project_export.cpp +msgid "Pack File" +msgstr "팩 파ì¼" + +#: editor/project_export.cpp msgid "Features" msgstr "기능" @@ -9092,6 +9303,14 @@ msgstr "내보내기 모드?" msgid "Export All" msgstr "ëª¨ë‘ ë‚´ë³´ë‚´ê¸°" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "ZIP 파ì¼" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Godot 게임 팩" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "ì´ í”Œëž«í¼ì— 대한 내보내기 í…œí”Œë¦¿ì´ ì—†ìŒ:" @@ -9389,6 +9608,10 @@ msgid "Projects" msgstr "프로ì 트" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "마지막으로 ìˆ˜ì •ë¨" + +#: editor/project_manager.cpp msgid "Scan" msgstr "스캔" @@ -9541,7 +9764,7 @@ msgstr "ì´ë²¤íЏ 추가하기" #: editor/project_settings_editor.cpp msgid "Button" -msgstr "Button" +msgstr "버튼" #: editor/project_settings_editor.cpp msgid "Left Button." @@ -10990,6 +11213,14 @@ msgid "Set Variable Type" msgstr "변수 ìœ í˜• ì„¤ì •" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "ìž…ë ¥ í¬íЏ 추가하기" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "ì¶œë ¥ í¬íЏ 추가하기" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "존재하는 내장 함수를 다시 ì •ì˜í•´ìš”." @@ -11050,14 +11281,6 @@ msgid "Add Signal" msgstr "ì‹œê·¸ë„ ì¶”ê°€í•˜ê¸°" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "ìž…ë ¥ í¬íЏ 추가하기" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "ì¶œë ¥ í¬íЏ 추가하기" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "ìž…ë ¥ í¬íЏ ì‚ì œí•˜ê¸°" @@ -11235,6 +11458,18 @@ msgid "Members:" msgstr "멤버:" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "기본 ìœ í˜• 바꾸기:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "노드 추가하기..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "함수 추가하기..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "function_name" @@ -11443,27 +11678,10 @@ msgid "Identifier is missing." msgstr "ì‹ë³„ìžê°€ 없어요." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ëŠ” 길ì´ê°€ 0ì´ ì•„ë‹ˆì–´ì•¼ í•´ìš”." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "ë¬¸ìž '%s'ì€(는) ì‹ë³„ìžì— 쓸 수 없어요." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "숫ìžëŠ” ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžë¡œ 쓸 수 없어요." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "ë¬¸ìž '%s'ì€(는) ì‹ë³„ìž ë¶„ë¦¬ì˜ ì²« 문ìžë¡œ 쓸 수 없어요." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "ì‹ë³„ìžëŠ” ì ì–´ë„ í•˜ë‚˜ì˜ '.' 분리 기호를 ê°–ê³ ìžˆì–´ì•¼ í•´ìš”." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "App Store 팀 ID를 ì§€ì •í•˜ì§€ 않았어요 - 프로ì 트를 êµ¬ì„±í• ìˆ˜ 없어요." @@ -12153,6 +12371,19 @@ msgstr "Varyingì€ ê¼ì§“ì 함수ì—ë§Œ ì§€ì •í• ìˆ˜ 있어요." msgid "Constants cannot be modified." msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ëŠ” 길ì´ê°€ 0ì´ ì•„ë‹ˆì–´ì•¼ í•´ìš”." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "숫ìžëŠ” ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžë¡œ 쓸 수 없어요." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "ë¬¸ìž '%s'ì€(는) ì‹ë³„ìž ë¶„ë¦¬ì˜ ì²« 문ìžë¡œ 쓸 수 없어요." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "ì‹ë³„ìžëŠ” ì ì–´ë„ í•˜ë‚˜ì˜ '.' 분리 기호를 ê°–ê³ ìžˆì–´ì•¼ í•´ìš”." + #~ msgid "Pause the scene" #~ msgstr "씬 ì¼ì‹œ ì •ì§€" @@ -12803,9 +13034,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Rotate 270 degrees" #~ msgstr "270ë„ íšŒì „" -#~ msgid "Warning" -#~ msgstr "ê²½ê³ " - #~ msgid "Variable" #~ msgstr "변수" @@ -13285,9 +13513,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Re-Import Changed Resources" #~ msgstr "ë³€ê²½ëœ ë¦¬ì†ŒìŠ¤ 다시 ê°€ì ¸ì˜¤ê¸°" -#~ msgid "Loading Export Templates" -#~ msgstr "내보내기 템플릿 로딩 중" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13866,9 +14091,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Create Android keystore" #~ msgstr "안드로ì´ë“œ í‚¤ìŠ¤í† ì–´ 만들기" -#~ msgid "Full name" -#~ msgstr "성명" - #~ msgid "Organization" #~ msgstr "ì¡°ì§" @@ -13947,9 +14169,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Lossy Quality:" #~ msgstr "ì†ì‹¤ 품질:" -#~ msgid "Atlas:" -#~ msgstr "ì•„í‹€ë¼ìФ:" - #~ msgid "Shrink By:" #~ msgstr "ì´ë¯¸ì§€ 줄ì´ê¸°:" diff --git a/editor/translations/lt.po b/editor/translations/lt.po index 681bae9d5a..82fcec84c6 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -538,8 +538,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Redaguoti" @@ -729,6 +730,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -812,6 +817,11 @@ msgid "Extra Call Arguments:" msgstr "Papildomi IÅ¡kvietimo Argumentai:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Filtrai..." + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -989,7 +999,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1455,7 +1465,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1708,6 +1719,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2636,7 +2651,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2950,6 +2966,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -3006,6 +3026,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "Atidaryti praeitÄ… Editorių" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3450,6 +3474,10 @@ msgid "Select Template File" msgstr "Pasirinkite Nodus, kuriuos norite importuoti" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4610,6 +4638,11 @@ msgstr "" msgid "Transition: " msgstr "Transition Nodas" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Importuoti iÅ¡ Nodo:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -4870,6 +4903,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "pirmas" @@ -5070,6 +5127,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5732,6 +5857,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Atidaryti Resursų BibliotekÄ…" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6373,6 +6503,23 @@ msgid "Save File As..." msgstr "Filtrai..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6504,10 +6651,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7647,6 +7790,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7666,6 +7810,11 @@ msgstr "" msgid "Constant" msgstr "Konstanta" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Atidaryti" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7779,6 +7928,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7796,6 +7957,39 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Animacijos Nodas" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Animacijos Nodas" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Priedai" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Animacijos Nodas" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Importuoti iÅ¡ Nodo:" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Animacijos Nodas" @@ -8965,6 +9159,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "MÄ—gstamiausi:" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9065,6 +9268,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9119,6 +9326,14 @@ msgstr "Importuoti iÅ¡ Nodo:" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9380,6 +9595,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10980,6 +11199,16 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "MÄ—gstamiausi:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "MÄ—gstamiausi:" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -11045,16 +11274,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "MÄ—gstamiausi:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "MÄ—gstamiausi:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Panaikinti pasirinkimÄ…" @@ -11230,6 +11449,20 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "MÄ—gstamiausi:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "(Esama)" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11429,27 +11662,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/lv.po b/editor/translations/lv.po index a0b68a3a64..d444f6e566 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -529,8 +529,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Rediģēt" @@ -720,6 +721,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -799,6 +804,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp #, fuzzy msgid "Advanced" msgstr "BalancÄ“ts" @@ -976,7 +985,7 @@ msgid "Resource" msgstr "Resurs" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1464,7 +1473,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nosaukums" @@ -1712,6 +1722,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2638,7 +2652,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2951,6 +2966,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -3007,6 +3026,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3443,6 +3466,10 @@ msgid "Select Template File" msgstr "IzvÄ“lÄ“ties Å¡o Mapi" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4595,6 +4622,11 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "MÄ“roga AttiecÄ«ba:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4851,6 +4883,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licence" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licence" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5048,6 +5106,77 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "LineÄrs" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "LineÄrs" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "MÄ“roga AttiecÄ«ba:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5713,6 +5842,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6349,6 +6482,23 @@ msgid "Save File As..." msgstr "SaglabÄt KÄ" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6476,10 +6626,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7623,6 +7769,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7642,6 +7789,11 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "AtvÄ“rt" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7753,6 +7905,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7770,6 +7934,38 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "InterpolÄcijas režīms" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "InterpolÄcijas režīms" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Izveidot" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Izveidot" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "InterpolÄcijas režīms" @@ -8938,6 +9134,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "FavorÄ«ti:" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9037,6 +9242,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9088,6 +9297,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9346,6 +9563,10 @@ msgid "Projects" msgstr "Projekta DibinÄtÄji" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10945,6 +11166,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "FavorÄ«ti:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "FavorÄ«ti:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "" "NederÄ«gs nosaukums. NedrÄ«kst sadurties ar eksistÄ“joÅ¡u iebÅ«vÄ“to tipa " @@ -11012,16 +11243,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "FavorÄ«ti:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "FavorÄ«ti:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Noņemt IzvÄ“lÄ“to" @@ -11196,6 +11417,21 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "NomainÄ«t %s Tipu" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "FavorÄ«ti:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Izveidot Funkciju" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funkcijas:" @@ -11394,27 +11630,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/mi.po b/editor/translations/mi.po index dbd85cdd3a..a58a95dad6 100644 --- a/editor/translations/mi.po +++ b/editor/translations/mi.po @@ -499,8 +499,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -686,6 +687,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -762,6 +767,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -933,7 +942,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1398,7 +1407,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1638,6 +1648,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2546,7 +2560,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2857,6 +2872,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2913,6 +2932,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3343,6 +3366,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4453,6 +4480,10 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4707,6 +4738,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4898,6 +4953,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5547,6 +5670,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6172,6 +6299,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6298,10 +6442,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7416,6 +7556,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7435,6 +7576,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7543,6 +7688,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7559,6 +7716,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8683,6 +8868,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8782,6 +8975,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8833,6 +9030,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9090,6 +9295,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10660,6 +10869,14 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10720,14 +10937,6 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "" @@ -10898,6 +11107,18 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11094,27 +11315,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/ml.po b/editor/translations/ml.po index 255a961ea7..5c509799b0 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -509,8 +509,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -696,6 +697,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -772,6 +777,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -943,7 +952,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1408,7 +1417,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1648,6 +1658,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2556,7 +2570,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2867,6 +2882,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2923,6 +2942,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3353,6 +3376,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4466,6 +4493,10 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4720,6 +4751,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4911,6 +4966,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5560,6 +5683,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6185,6 +6312,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6311,10 +6455,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7429,6 +7569,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7448,6 +7589,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7556,6 +7701,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7572,6 +7729,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8696,6 +8881,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8795,6 +8988,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8846,6 +9043,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9103,6 +9308,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10673,6 +10882,14 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10733,14 +10950,6 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "" @@ -10911,6 +11120,19 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11107,27 +11329,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/mr.po b/editor/translations/mr.po new file mode 100644 index 0000000000..2260a4e528 --- /dev/null +++ b/editor/translations/mr.po @@ -0,0 +1,11915 @@ +# Marathi translation of the Godot Engine editor +# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# This file is distributed under the same license as the Godot source code. +# Prachi Joshi <josprachi@yahoo.com>, 2019. +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2019-12-22 04:19+0000\n" +"Last-Translator: Prachi Joshi <josprachi@yahoo.com>\n" +"Language-Team: Marathi <https://hosted.weblate.org/projects/godot-engine/" +"godot/mr/>\n" +"Language: mr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.10\n" + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +#: modules/mono/glue/gd_glue.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: core/math/expression.cpp +msgid "Invalid input %i (not passed) in expression" +msgstr "" + +#: core/math/expression.cpp +msgid "self can't be used because instance is null (not passed)" +msgstr "" + +#: core/math/expression.cpp +msgid "Invalid operands to operator %s, %s and %s." +msgstr "" + +#: core/math/expression.cpp +msgid "Invalid index of type %s for base type %s" +msgstr "" + +#: core/math/expression.cpp +msgid "Invalid named index '%s' for base type %s" +msgstr "" + +#: core/math/expression.cpp +msgid "Invalid arguments to construct '%s'" +msgstr "" + +#: core/math/expression.cpp +msgid "On call to '%s':" +msgstr "" + +#: core/ustring.cpp +msgid "B" +msgstr "" + +#: core/ustring.cpp +msgid "KiB" +msgstr "KiB" + +#: core/ustring.cpp +msgid "MiB" +msgstr "MiB" + +#: core/ustring.cpp +msgid "GiB" +msgstr "GiB" + +#: core/ustring.cpp +msgid "TiB" +msgstr "TiB" + +#: core/ustring.cpp +msgid "PiB" +msgstr "" + +#: core/ustring.cpp +msgid "EiB" +msgstr "EiB" + +#: editor/animation_bezier_editor.cpp +msgid "Free" +msgstr "मोफत" + +#: editor/animation_bezier_editor.cpp +msgid "Balanced" +msgstr "संतà¥à¤²à¤¿à¤¤" + +#: editor/animation_bezier_editor.cpp +msgid "Mirror" +msgstr "" + +#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp +msgid "Time:" +msgstr "वेळ:" + +#: editor/animation_bezier_editor.cpp +msgid "Value:" +msgstr "मूलà¥à¤¯:" + +#: editor/animation_bezier_editor.cpp +msgid "Insert Key Here" +msgstr "" + +#: editor/animation_bezier_editor.cpp +msgid "Duplicate Selected Key(s)" +msgstr "" + +#: editor/animation_bezier_editor.cpp +msgid "Delete Selected Key(s)" +msgstr "" + +#: editor/animation_bezier_editor.cpp +msgid "Add Bezier Point" +msgstr "बेà¤à¤¿à¤¯à¤° पॉईंट जोडा" + +#: editor/animation_bezier_editor.cpp +msgid "Move Bezier Points" +msgstr "" + +#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "अनिम डà¥à¤ªà¥à¤²à¤¿à¤•ेट की" + +#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Keyframe Time" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Keyframe Value" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Keyframe Time" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Transition" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Transform" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Keyframe Value" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Multi Change Call" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Length" +msgstr "" + +#: editor/animation_track_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Property Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "3D Transform Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Call Method Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Bezier Curve Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Audio Playback Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation Playback Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation length (frames)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation length (seconds)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation Looping" +msgstr "" + +#: editor/animation_track_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Functions:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Audio Clips:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Clips:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Track Path" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Toggle this track on/off." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Update Mode (How this property is set)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Interpolation Mode" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove this track." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Time (s): " +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Toggle Track Enabled" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Continuous" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Discrete" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Trigger" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Capture" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Nearest" +msgstr "" + +#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp +#: editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Cubic" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clamp Loop Interp" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Wrap Loop Interp" +msgstr "" + +#: editor/animation_track_editor.cpp +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Duplicate Key(s)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Delete Key(s)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Update Mode" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Interpolation Mode" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Loop Mode" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: editor/animation_track_editor.cpp editor/create_dialog.cpp +#: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/mesh_instance_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: editor/script_create_dialog.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Create" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "AnimationPlayer can't animate itself, only other players." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Change Animation Step" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Rearrange Tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Transform tracks only apply to Spatial-based nodes." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "" +"Audio tracks can only point to nodes of type:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation tracks can only point to AnimationPlayer nodes." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "An animation player can't animate itself, only other players." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Not possible to add a new track without a root" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Bezier Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a key." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track is not of type Spatial, can't insert key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Transform Track Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Track Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a method key." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Method Track Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Method not found in object: " +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clipboard is empty" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Paste Tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "" +"This option does not work for Bezier editing, as it's only a single track." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "" +"This animation belongs to an imported scene, so changes to imported tracks " +"will not be saved.\n" +"\n" +"To enable the ability to add custom tracks, navigate to the scene's import " +"settings and set\n" +"\"Animation > Storage\" to \"Files\", enable \"Animation > Keep Custom Tracks" +"\", then re-import.\n" +"Alternatively, use an import preset that imports animations to separate " +"files." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Warning: Editing imported animation" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Select an AnimationPlayer node to create and edit animations." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Only show tracks from nodes selected in tree." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Group tracks by node or display them as plain list." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Snap:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation step value." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Seconds" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "FPS" +msgstr "" + +#: editor/animation_track_editor.cpp editor/editor_properties.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation properties." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Copy Tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Delete Selection" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Go to Next Step" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Go to Previous Step" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Pick the node that will be animated:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Use Bezier Curves" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Optimize" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Select Tracks to Copy" +msgstr "" + +#: editor/animation_track_editor.cpp editor/editor_log.cpp +#: editor/editor_properties.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Copy" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Select All/None" +msgstr "" + +#: editor/animation_track_editor_plugins.cpp +msgid "Add Audio Track Clip" +msgstr "" + +#: editor/animation_track_editor_plugins.cpp +msgid "Change Audio Track Clip Start Offset" +msgstr "" + +#: editor/animation_track_editor_plugins.cpp +msgid "Change Audio Track Clip End Offset" +msgstr "" + +#: editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "" + +#: editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: editor/code_editor.cpp +msgid "Go to Line" +msgstr "" + +#: editor/code_editor.cpp +msgid "Line Number:" +msgstr "" + +#: editor/code_editor.cpp +msgid "Replaced %d occurrence(s)." +msgstr "" + +#: editor/code_editor.cpp editor/editor_help.cpp +msgid "%d match." +msgstr "" + +#: editor/code_editor.cpp editor/editor_help.cpp +msgid "%d matches." +msgstr "" + +#: editor/code_editor.cpp editor/find_in_files.cpp +msgid "Match Case" +msgstr "" + +#: editor/code_editor.cpp editor/find_in_files.cpp +msgid "Whole Words" +msgstr "" + +#: editor/code_editor.cpp editor/rename_dialog.cpp +msgid "Replace" +msgstr "" + +#: editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp +#: editor/plugins/text_editor.cpp +msgid "Standard" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom In" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom Out" +msgstr "" + +#: editor/code_editor.cpp +msgid "Reset Zoom" +msgstr "" + +#: editor/code_editor.cpp +msgid "Warnings" +msgstr "" + +#: editor/code_editor.cpp +msgid "Line and column numbers." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Method in target node must be specified." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "" +"Target method not found. Specify a valid method or attach a script to the " +"target node." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect to Node:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect to Script:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "From Signal:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Scene does not contain any script." +msgstr "" + +#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp +#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp +msgid "Add" +msgstr "" + +#: editor/connections_dialog.cpp editor/dependency_editor.cpp +#: editor/editor_feature_profile.cpp editor/groups_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp +msgid "Remove" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Advanced" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "" +"Defers the signal, storing it in a queue and only firing it at idle time." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnects the signal after its first emission." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Cannot connect signal" +msgstr "" + +#: editor/connections_dialog.cpp editor/dependency_editor.cpp +#: editor/export_template_manager.cpp editor/groups_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Close" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Signal:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnect '%s' from '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnect all from signal: '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect..." +msgstr "" + +#: editor/connections_dialog.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect a Signal to a Method" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Edit Connection:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Are you sure you want to remove all connections from the \"%s\" signal?" +msgstr "" + +#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Are you sure you want to remove all connections from this signal?" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnect All" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Edit..." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Go To Method" +msgstr "" + +#: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp +msgid "Create New %s" +msgstr "" + +#: editor/create_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp +msgid "Favorites:" +msgstr "" + +#: editor/create_dialog.cpp editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "" + +#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Search:" +msgstr "" + +#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Matches:" +msgstr "" + +#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp +#: editor/plugin_config_dialog.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Description:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will only take effect when reloaded." +msgstr "" + +#: editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will only take effect when reloaded." +msgstr "" + +#: editor/dependency_editor.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Dependencies" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Resource" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp +msgid "Path" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp +#: editor/editor_help_search.cpp editor/editor_node.cpp +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: editor/script_create_dialog.cpp +#: modules/visual_script/visual_script_property_selector.cpp +#: scene/gui/file_dialog.cpp +msgid "Open" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Remove selected files from the project? (Can't be restored)" +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)" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Cannot remove:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Load failed due to missing dependencies:" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_node.cpp +msgid "Open Anyway" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Show Dependencies" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp +msgid "Delete" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: editor/dictionary_property_edit.cpp +msgid "Change Dictionary Key" +msgstr "" + +#: editor/dictionary_property_edit.cpp +msgid "Change Dictionary Value" +msgstr "" + +#: editor/editor_about.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: editor/editor_about.cpp +msgid "Godot Engine contributors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Project Founders" +msgstr "" + +#: editor/editor_about.cpp +msgid "Lead Developer" +msgstr "" + +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "" + +#: editor/editor_about.cpp +msgid "Developers" +msgstr "" + +#: editor/editor_about.cpp +msgid "Authors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Platinum Sponsors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Gold Sponsors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Mini Sponsors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Gold Donors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Silver Donors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Bronze Donors" +msgstr "" + +#: editor/editor_about.cpp +msgid "Donors" +msgstr "" + +#: editor/editor_about.cpp +msgid "License" +msgstr "" + +#: editor/editor_about.cpp +msgid "Third-party Licenses" +msgstr "" + +#: editor/editor_about.cpp +msgid "" +"Godot Engine relies on a number of third-party free and open source " +"libraries, all compatible with the terms of its MIT license. The following " +"is an exhaustive list of all such third-party components with their " +"respective copyright statements and license terms." +msgstr "" + +#: editor/editor_about.cpp +msgid "All Components" +msgstr "" + +#: editor/editor_about.cpp +msgid "Components" +msgstr "" + +#: editor/editor_about.cpp +msgid "Licenses" +msgstr "" + +#: editor/editor_asset_installer.cpp editor/project_manager.cpp +msgid "Error opening package file, not in ZIP format." +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "Uncompressing Assets" +msgstr "" + +#: editor/editor_asset_installer.cpp editor/project_manager.cpp +msgid "Package installed successfully!" +msgstr "" + +#: editor/editor_asset_installer.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Success!" +msgstr "" + +#: editor/editor_asset_installer.cpp editor/editor_node.cpp +msgid "Install" +msgstr "" + +#: editor/editor_asset_installer.cpp +msgid "Package Installer" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Speakers" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Rename Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Change Audio Bus Volume" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Toggle Audio Bus Solo" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Toggle Audio Bus Mute" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Toggle Audio Bus Bypass Effects" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Select Audio Bus Send" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add Audio Bus Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Move Bus Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Delete Bus Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Drag & drop to rearrange." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Solo" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Mute" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Bypass" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Bus options" +msgstr "" + +#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp +#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Reset Volume" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Delete Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Audio" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Master bus can't be deleted!" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Delete Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Duplicate Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Reset Bus Volume" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Move Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Save Audio Bus Layout As..." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Location for New Layout..." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Open Audio Bus Layout" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "There is no '%s' file." +msgstr "" + +#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp +msgid "Layout" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Invalid file, not an audio bus layout." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add a new Audio Bus to this layout." +msgstr "" + +#: editor/editor_audio_buses.cpp editor/editor_properties.cpp +#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp +#: editor/script_create_dialog.cpp +msgid "Load" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Load an existing Bus Layout." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Save As" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Save this Bus Layout to a file." +msgstr "" + +#: editor/editor_audio_buses.cpp editor/import_dock.cpp +msgid "Load Default" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Load the default Bus Layout." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Create a new Bus Layout." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Invalid name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Must not collide with an existing engine class name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Must not collide with an existing built-in type name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Must not collide with an existing global constant name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Keyword cannot be used as an autoload name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Rename Autoload" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Enable" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Rearrange Autoloads" +msgstr "" + +#: editor/editor_autoload_settings.cpp editor/script_create_dialog.cpp +msgid "Invalid path." +msgstr "" + +#: editor/editor_autoload_settings.cpp editor/script_create_dialog.cpp +msgid "File does not exist." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Not in resource path." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Add AutoLoad" +msgstr "" + +#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp +#: editor/editor_plugin_settings.cpp +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp +msgid "Path:" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Node Name:" +msgstr "" + +#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp +msgid "Name" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Singleton" +msgstr "" + +#: editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: editor/editor_data.cpp +msgid "Storing local changes..." +msgstr "" + +#: editor/editor_data.cpp +msgid "Updating scene..." +msgstr "" + +#: editor/editor_data.cpp editor/editor_properties.cpp +msgid "[empty]" +msgstr "" + +#: editor/editor_data.cpp +msgid "[unsaved]" +msgstr "" + +#: editor/editor_dir_dialog.cpp +msgid "Please select a base directory first." +msgstr "" + +#: editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp editor/project_manager.cpp +#: scene/gui/file_dialog.cpp +msgid "Create Folder" +msgstr "" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp +#: modules/visual_script/visual_script_editor.cpp scene/gui/file_dialog.cpp +msgid "Name:" +msgstr "" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp +msgid "Could not create folder." +msgstr "" + +#: editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "" + +#: editor/editor_export.cpp +msgid "Storing File:" +msgstr "" + +#: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp +msgid "Packing" +msgstr "" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " +"Etc' in Project Settings." +msgstr "" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC2' texture compression for GLES3. Enable " +"'Import Etc 2' in Project Settings." +msgstr "" + +#: editor/editor_export.cpp +msgid "" +"Target platform requires 'ETC' texture compression for the driver fallback " +"to GLES2.\n" +"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " +"Enabled'." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + +#: editor/editor_export.cpp platform/javascript/export/export.cpp +msgid "Template file not found:" +msgstr "" + +#: editor/editor_export.cpp +msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "3D Editor" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Script Editor" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Asset Library" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Scene Tree Editing" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Import Dock" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Node Dock" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "FileSystem and Import Docks" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Erase profile '%s'? (no undo)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Profile must be a valid filename and must not contain '.'" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Profile with this name already exists." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "(Editor Disabled, Properties Disabled)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "(Properties Disabled)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "(Editor Disabled)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Class Options:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Enable Contextual Editor" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Enabled Properties:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Enabled Features:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Enabled Classes:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "File '%s' format is invalid, import aborted." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "" +"Profile '%s' already exists. Remove it first before importing, import " +"aborted." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Error saving profile to path: '%s'." +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Unset" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Current Profile:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Make Current" +msgstr "" + +#: editor/editor_feature_profile.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/version_control_editor_plugin.cpp +msgid "New" +msgstr "" + +#: editor/editor_feature_profile.cpp editor/editor_node.cpp +#: editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: editor/editor_feature_profile.cpp editor/project_export.cpp +msgid "Export" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Available Profiles:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Class Options" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "New profile name:" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Erase Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Import Profile(s)" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Export Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp +msgid "Manage Editor Feature Profiles" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Select Current Folder" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Select This Folder" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "Copy Path" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "Open in File Manager" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/filesystem_dock.cpp editor/project_manager.cpp +msgid "Show in File Manager" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "New Folder..." +msgstr "" + +#: editor/editor_file_dialog.cpp +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Refresh" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/editor_properties.cpp editor/inspector_dock.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp +msgid "Save" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Save a File" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go Back" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go Forward" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go Up" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Hidden Files" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Favorite" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Mode" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Focus Path" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Move Favorite Up" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Move Favorite Down" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go to previous folder." +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go to next folder." +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Go to parent folder." +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Refresh files." +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "(Un)favorite current folder." +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Toggle the visibility of hidden files." +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "View items as a grid of thumbnails." +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "View items as a list." +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp +#: editor/plugins/style_box_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Preview:" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "File:" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: editor/editor_file_system.cpp +msgid "" +"There are multiple importers for different types pointing to file %s, import " +"aborted" +msgstr "" + +#: editor/editor_file_system.cpp +msgid "(Re)Importing Assets" +msgstr "" + +#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: editor/editor_help.cpp +msgid "Class:" +msgstr "" + +#: editor/editor_help.cpp editor/scene_tree_editor.cpp +#: editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Brief Description" +msgstr "" + +#: editor/editor_help.cpp +msgid "Properties" +msgstr "" + +#: editor/editor_help.cpp +msgid "Methods" +msgstr "" + +#: editor/editor_help.cpp +msgid "Theme Properties" +msgstr "" + +#: editor/editor_help.cpp +msgid "Enumerations" +msgstr "" + +#: editor/editor_help.cpp +msgid "enum " +msgstr "" + +#: editor/editor_help.cpp +msgid "Constants" +msgstr "" + +#: editor/editor_help.cpp +msgid "Class Description" +msgstr "" + +#: editor/editor_help.cpp +msgid "Online Tutorials" +msgstr "" + +#: editor/editor_help.cpp +msgid "" +"There are currently no tutorials for this class, you can [color=$color][url=" +"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/" +"url][/color]." +msgstr "" + +#: editor/editor_help.cpp +msgid "Property Descriptions" +msgstr "" + +#: editor/editor_help.cpp +msgid "" +"There is currently no description for this property. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" + +#: editor/editor_help.cpp +msgid "Method Descriptions" +msgstr "" + +#: editor/editor_help.cpp +msgid "" +"There is currently no description for this method. Please help us by [color=" +"$color][url=$url]contributing one[/url][/color]!" +msgstr "" + +#: editor/editor_help_search.cpp editor/editor_node.cpp +#: editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Display All" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Classes Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Methods Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Signals Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Constants Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Properties Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Properties Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Member Type" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Class" +msgstr "" + +#: editor/editor_inspector.cpp editor/project_settings_editor.cpp +msgid "Property:" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Set" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Set Multiple:" +msgstr "" + +#: editor/editor_log.cpp +msgid "Output:" +msgstr "" + +#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp +msgid "Copy Selection" +msgstr "" + +#: editor/editor_log.cpp editor/editor_network_profiler.cpp +#: editor/editor_profiler.cpp editor/editor_properties.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/property_editor.cpp editor/scene_tree_dock.cpp +#: editor/script_editor_debugger.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Clear" +msgstr "" + +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + +#: editor/editor_network_profiler.cpp editor/editor_node.cpp +#: editor/editor_profiler.cpp +msgid "Stop" +msgstr "" + +#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp +#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp +msgid "Start" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "%s/s" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Down" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Up" +msgstr "" + +#: editor/editor_network_profiler.cpp editor/editor_node.cpp +msgid "Node" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Incoming RPC" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Incoming RSET" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Outgoing RPC" +msgstr "" + +#: editor/editor_network_profiler.cpp +msgid "Outgoing RSET" +msgstr "" + +#: editor/editor_node.cpp editor/project_manager.cpp +msgid "New Window" +msgstr "" + +#: editor/editor_node.cpp +msgid "Project export failed with error code %d." +msgstr "" + +#: editor/editor_node.cpp +msgid "Imported resources can't be saved." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource can't be saved because it does not belong to the edited scene. " +"Make it unique first." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Can't open '%s'. The file could have been moved or deleted." +msgstr "" + +#: editor/editor_node.cpp +msgid "Error while parsing '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unexpected end of file '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Missing '%s' or its dependencies." +msgstr "" + +#: editor/editor_node.cpp +msgid "Error while loading '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a tree root." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." +msgstr "" + +#: editor/editor_node.cpp editor/scene_tree_dock.cpp +msgid "Can't overwrite scene that is still open!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource belongs to a scene that was imported, so it's not editable.\n" +"Please read the documentation relevant to importing scenes to better " +"understand this workflow." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource belongs to a scene that was instanced or inherited.\n" +"Changes to it won't be kept when saving the current scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource was imported, so it's not editable. Change its settings in the " +"import panel and then re-import." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This scene was imported, so changes to it won't be kept.\n" +"Instancing it or inheriting will allow making changes to it.\n" +"Please read the documentation relevant to importing scenes to better " +"understand this workflow." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This is a remote object, so changes to it won't be kept.\n" +"Please read the documentation relevant to debugging to better understand " +"this workflow." +msgstr "" + +#: editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: editor/editor_node.cpp editor/filesystem_dock.cpp +msgid "Open Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Quick Open..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Quick Open Scene..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Quick Open Script..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Save & Close" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save changes to '%s' before closing?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Saved %s modified resource(s)." +msgstr "" + +#: editor/editor_node.cpp +msgid "A root node is required to save the scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Save Scene As..." +msgstr "" + +#: editor/editor_node.cpp +msgid "No" +msgstr "" + +#: editor/editor_node.cpp +msgid "Yes" +msgstr "" + +#: editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: editor/editor_node.cpp editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a root node." +msgstr "" + +#: editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a selected node." +msgstr "" + +#: editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Quick Run Scene..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Project Manager?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save & Quit" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save changes to the following scene(s) before quitting?" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save changes the following scene(s) before opening Project Manager?" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This option is deprecated. Situations where refresh must be forced are now " +"considered a bug. Please report." +msgstr "" + +#: editor/editor_node.cpp +msgid "Pick a Main Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Reopen Closed Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Unable to enable addon plugin at: '%s' parsing of config failed." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unable to load addon script from path: '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Unable to load addon script from path: '%s' There seems to be an error in " +"the code, please check the syntax." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Unable to load addon script from path: '%s' Base type is not EditorPlugin." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unable to load addon script from path: '%s' Script is not in tool mode." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Scene '%s' was automatically imported, so it can't be modified.\n" +"To make changes to it, a new inherited scene can be created." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Clear Recent Scenes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"No main scene has ever been defined, select one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Selected scene '%s' does not exist, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Selected scene '%s' is not a scene file, select a valid one?\n" +"You can change it later in \"Project Settings\" under the 'application' " +"category." +msgstr "" + +#: editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: editor/editor_node.cpp editor/import_dock.cpp +#: editor/script_create_dialog.cpp +msgid "Default" +msgstr "" + +#: editor/editor_node.cpp editor/editor_properties.cpp +#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp +msgid "Show in FileSystem" +msgstr "" + +#: editor/editor_node.cpp +msgid "Play This Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close Tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "Undo Close Tab" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Close Other Tabs" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close Tabs to the Right" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close All Tabs" +msgstr "" + +#: editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "%d more files or folders" +msgstr "" + +#: editor/editor_node.cpp +msgid "%d more folders" +msgstr "" + +#: editor/editor_node.cpp +msgid "%d more files" +msgstr "" + +#: editor/editor_node.cpp +msgid "Dock Position" +msgstr "" + +#: editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: editor/editor_node.cpp +msgid "Toggle distraction-free mode." +msgstr "" + +#: editor/editor_node.cpp +msgid "Add a new scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Copy Text" +msgstr "" + +#: editor/editor_node.cpp +msgid "Next tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "Previous tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "Filter Files..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "New Inherited Scene..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Scene..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Open Recent" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save All Scenes" +msgstr "" + +#: editor/editor_node.cpp +msgid "Convert To..." +msgstr "" + +#: editor/editor_node.cpp +msgid "MeshLibrary..." +msgstr "" + +#: editor/editor_node.cpp +msgid "TileSet..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Undo" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Redo" +msgstr "" + +#: editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp +msgid "Project" +msgstr "" + +#: editor/editor_node.cpp +msgid "Project Settings..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp +msgid "Version Control" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp +msgid "Set Up Version Control" +msgstr "" + +#: editor/editor_node.cpp +msgid "Shut Down Version Control" +msgstr "" + +#: editor/editor_node.cpp +msgid "Export..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Install Android Build Template..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Project Data Folder" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp +msgid "Tools" +msgstr "" + +#: editor/editor_node.cpp +msgid "Orphan Resource Explorer..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/project_export.cpp +msgid "Debug" +msgstr "" + +#: editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: editor/editor_node.cpp editor/script_create_dialog.cpp +msgid "Editor" +msgstr "" + +#: editor/editor_node.cpp +msgid "Editor Settings..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: editor/editor_node.cpp +msgid "Take Screenshot" +msgstr "" + +#: editor/editor_node.cpp +msgid "Screenshots are stored in the Editor Data/Settings Folder." +msgstr "" + +#: editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: editor/editor_node.cpp +msgid "Toggle System Console" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Editor Data/Settings Folder" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Editor Data Folder" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Editor Settings Folder" +msgstr "" + +#: editor/editor_node.cpp +msgid "Manage Editor Features..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Manage Export Templates..." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp +msgid "Help" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/rename_dialog.cpp +msgid "Search" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Online Docs" +msgstr "" + +#: editor/editor_node.cpp +msgid "Q&A" +msgstr "" + +#: editor/editor_node.cpp +msgid "Issue Tracker" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "" + +#: editor/editor_node.cpp +msgid "About" +msgstr "" + +#: editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: editor/editor_node.cpp +msgid "Play" +msgstr "" + +#: editor/editor_node.cpp +msgid "Pause the scene execution for debugging." +msgstr "" + +#: editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Play Custom Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Changing the video driver requires restarting the editor." +msgstr "" + +#: editor/editor_node.cpp editor/project_settings_editor.cpp +#: editor/settings_config_dialog.cpp +msgid "Save & Restart" +msgstr "" + +#: editor/editor_node.cpp +msgid "Spins when the editor window redraws." +msgstr "" + +#: editor/editor_node.cpp +msgid "Update Continuously" +msgstr "" + +#: editor/editor_node.cpp +msgid "Update When Changed" +msgstr "" + +#: editor/editor_node.cpp +msgid "Hide Update Spinner" +msgstr "" + +#: editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: editor/editor_node.cpp +msgid "Expand Bottom Panel" +msgstr "" + +#: editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: editor/editor_node.cpp +msgid "Don't Save" +msgstr "" + +#: editor/editor_node.cpp +msgid "Android build template is missing, please install relevant templates." +msgstr "" + +#: editor/editor_node.cpp +msgid "Manage Templates" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This will set up your project for custom Android builds by installing the " +"source template to \"res://android/build\".\n" +"You can then apply modifications and build your own custom APK on export " +"(adding modules, changing the AndroidManifest.xml, etc.).\n" +"Note that in order to make custom builds instead of using pre-built APKs, " +"the \"Use Custom Build\" option should be enabled in the Android export " +"preset." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"The Android build template is already installed in this project and it won't " +"be overwritten.\n" +"Remove the \"res://android/build\" directory manually before attempting this " +"operation again." +msgstr "" + +#: editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + +#: editor/editor_node.cpp editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: editor/editor_node.cpp +msgid "Password:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: editor/editor_node.cpp +msgid "New Inherited" +msgstr "" + +#: editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open 2D Editor" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open 3D Editor" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Script Editor" +msgstr "" + +#: editor/editor_node.cpp editor/project_manager.cpp +msgid "Open Asset Library" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open the next Editor" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open the previous Editor" +msgstr "" + +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + +#: editor/editor_path.cpp +msgid "No sub-resources found." +msgstr "" + +#: editor/editor_plugin.cpp +msgid "Creating Mesh Previews" +msgstr "" + +#: editor/editor_plugin.cpp +msgid "Thumbnail..." +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Main Script:" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Edit Plugin" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +msgid "Update" +msgstr "" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Version:" +msgstr "" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +msgid "Author:" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Edit:" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Physics Frame %" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Time" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Calls" +msgstr "" + +#: editor/editor_properties.cpp +msgid "Edit Text:" +msgstr "" + +#: editor/editor_properties.cpp editor/script_create_dialog.cpp +msgid "On" +msgstr "" + +#: editor/editor_properties.cpp +msgid "Layer" +msgstr "" + +#: editor/editor_properties.cpp +msgid "Bit %d, value %d" +msgstr "" + +#: editor/editor_properties.cpp +msgid "[Empty]" +msgstr "" + +#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp +msgid "Assign..." +msgstr "" + +#: editor/editor_properties.cpp +msgid "Invalid RID" +msgstr "" + +#: editor/editor_properties.cpp +msgid "" +"The selected resource (%s) does not match any type expected for this " +"property (%s)." +msgstr "" + +#: editor/editor_properties.cpp +msgid "" +"Can't create a ViewportTexture on resources saved as a file.\n" +"Resource needs to belong to a scene." +msgstr "" + +#: editor/editor_properties.cpp +msgid "" +"Can't create a ViewportTexture on this resource because it's not set as " +"local to scene.\n" +"Please switch on the 'local to scene' property on it (and all resources " +"containing it up to a node)." +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Pick a Viewport" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: editor/editor_properties.cpp editor/scene_tree_dock.cpp +msgid "Extend Script" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "New %s" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Make Unique" +msgstr "" + +#: editor/editor_properties.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Paste" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Convert To %s" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Selected node is not a Viewport!" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "Size: " +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "Page: " +msgstr "" + +#: editor/editor_properties_array_dict.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "New Key:" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "New Value:" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "Add Key/Value Pair" +msgstr "" + +#: editor/editor_run_native.cpp +msgid "" +"No runnable export preset found for this platform.\n" +"Please add a runnable preset in the export menu." +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: editor/editor_sub_scene.cpp editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Redownload" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Uninstall" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "(Installed)" +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Download" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Official export templates aren't available for development builds." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "(Missing)" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "(Current)" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Retrieving mirrors, please wait..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Remove template version '%s'?" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Invalid version.txt format inside templates: %s." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "No version.txt found inside templates." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error creating path for templates:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Extracting Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Importing:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"No download links found for this version. Direct download is only available " +"for official releases." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't resolve." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't connect." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No response." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Request Failed." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Redirect Loop." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Failed:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Download Complete." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Cannot remove temporary file:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"Templates installation failed.\n" +"The problematic templates archives can be found at '%s'." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error requesting URL:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Connecting to Mirror..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Disconnected" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Resolving" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't Resolve" +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Connecting..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't Connect" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Connected" +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Requesting..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Downloading" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Connection Error" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "SSL Handshake Error" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Uncompressing Android Build Sources" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Current Version:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Installed Versions:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Install From File" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Remove Template" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Select Template File" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Export Template Manager" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Download Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Select mirror from list: (Shift+Click: Open in Browser)" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Favorites" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Status: Import of file failed. Please fix file and reimport manually." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Cannot move/rename resources root." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Cannot move a folder into itself." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Error moving:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Error duplicating:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Unable to update dependencies:" +msgstr "" + +#: editor/filesystem_dock.cpp editor/scene_tree_editor.cpp +msgid "No name provided." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Provided name contains invalid characters." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "A file or folder with this name already exists." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Name contains invalid characters." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Renaming file:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Renaming folder:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Duplicating file:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Duplicating folder:" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "New Inherited Scene" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Open Scenes" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Instance" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Add to Favorites" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Remove from Favorites" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Edit Dependencies..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "View Owners..." +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Rename..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Duplicate..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Move To..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "New Scene..." +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +msgid "New Script..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "New Resource..." +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp +#: editor/script_editor_debugger.cpp +msgid "Expand All" +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp +#: editor/script_editor_debugger.cpp +msgid "Collapse All" +msgstr "" + +#: editor/filesystem_dock.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/project_manager.cpp editor/rename_dialog.cpp +#: editor/scene_tree_dock.cpp +msgid "Rename" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Previous Folder/File" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Next Folder/File" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Toggle Split Mode" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Search files" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "" +"Scanning Files,\n" +"Please Wait..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Move" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "There is already file or folder with the same name in this location." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Overwrite" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Create Scene" +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp +msgid "Find in Files" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Find:" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Folder:" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Filters:" +msgstr "" + +#: editor/find_in_files.cpp +msgid "" +"Include the files with the following extensions. Add or remove them in " +"ProjectSettings." +msgstr "" + +#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find..." +msgstr "" + +#: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp +msgid "Replace..." +msgstr "" + +#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp +msgid "Cancel" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Find: " +msgstr "" + +#: editor/find_in_files.cpp +msgid "Replace: " +msgstr "" + +#: editor/find_in_files.cpp +msgid "Replace all (no undo)" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Searching..." +msgstr "" + +#: editor/find_in_files.cpp +msgid "Search complete" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Group name already exists." +msgstr "" + +#: editor/groups_editor.cpp +msgid "Invalid group name." +msgstr "" + +#: editor/groups_editor.cpp +msgid "Rename Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Delete Group" +msgstr "" + +#: editor/groups_editor.cpp editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Nodes Not in Group" +msgstr "" + +#: editor/groups_editor.cpp editor/scene_tree_dock.cpp +#: editor/scene_tree_editor.cpp +msgid "Filter nodes" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Nodes in Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Empty groups will be automatically removed." +msgstr "" + +#: editor/groups_editor.cpp +msgid "Group Editor" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Manage Groups" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Single Scene" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Materials" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Materials" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Materials+Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Materials+Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Multiple Scenes" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Multiple Scenes+Materials" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Importing Scene..." +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Generating Lightmaps" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Generating for Mesh: " +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Running Custom Script..." +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Invalid/broken script for post-import (check console):" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Error running post-import script:" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Saving..." +msgstr "" + +#: editor/import_dock.cpp +msgid "Set as Default for '%s'" +msgstr "" + +#: editor/import_dock.cpp +msgid "Clear Default for '%s'" +msgstr "" + +#: editor/import_dock.cpp +msgid " Files" +msgstr "" + +#: editor/import_dock.cpp +msgid "Import As:" +msgstr "" + +#: editor/import_dock.cpp +msgid "Preset" +msgstr "" + +#: editor/import_dock.cpp +msgid "Reimport" +msgstr "" + +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Failed to load resource." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Expand All Properties" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Collapse All Properties" +msgstr "" + +#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +msgid "Save As..." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Copy Params" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Paste Params" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Edit Resource Clipboard" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Copy Resource" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Make Built-In" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Open in Help" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "History of recently edited objects." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Object properties." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Filter properties" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Changes may be lost!" +msgstr "" + +#: editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: editor/node_dock.cpp +msgid "Select a single node to edit its signals and groups." +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Edit a Plugin" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Create a Plugin" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Plugin Name:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Subfolder:" +msgstr "" + +#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp +msgid "Language:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Script Name:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Activate now?" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Polygon" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Create points." +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "" +"Edit points.\n" +"LMB: Move Point\n" +"RMB: Erase Point" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Erase points." +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Edit Polygon" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Insert Point" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Edit Polygon (Remove Point)" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Remove Polygon And Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Load..." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Move Node Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Change BlendSpace1D Limits" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Change BlendSpace1D Labels" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "This type of node can't be used. Only root nodes are allowed." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Add Node Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Add Animation Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Remove BlendSpace1D Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Move BlendSpace1D Node Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "" +"AnimationTree is inactive.\n" +"Activate to enable playback, check node warnings if activation fails." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Set the blending position within the space" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Select and move points, create points with RMB." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp +msgid "Enable snap and show grid." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Open Editor" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Open Animation Node" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Triangle already exists." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Add Triangle" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Change BlendSpace2D Limits" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Change BlendSpace2D Labels" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Remove BlendSpace2D Point" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Remove BlendSpace2D Triangle" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "BlendSpace2D does not belong to an AnimationTree node." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "No triangles exist, so no blending can take place." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Toggle Auto Triangles" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Create triangles by connecting points." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Erase points and triangles." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Generate blend triangles automatically (instead of manually)" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Parameter Changed" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Edit Filters" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Output node can't be added to the blend tree." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Add Node to BlendTree" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Node Moved" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Unable to connect, port may be in use or connection may be invalid." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Nodes Connected" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Nodes Disconnected" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Set Animation" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Node" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Toggle Filter On/Off" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Change Filter" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "No animation player set, so unable to retrieve track names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Player path set is invalid, so unable to retrieve track names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "" +"Animation player has no valid root node path, so unable to retrieve track " +"names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Node Renamed" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Node..." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "Edit Filtered Tracks:" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Enable Filtering" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Animation?" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Invalid animation name!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation name already exists!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation to copy!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation resource on clipboard!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation to edit!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Transitions..." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Open in Inspector" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Enable Onion Skinning" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Onion Skinning Options" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Directions" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Past" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Future" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Depth" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "1 step" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "2 steps" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "3 steps" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Differences Only" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Force White Modulate" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Include Gizmos (3D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Pin AnimationPlayer" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp +msgid "Error!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Move Node" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Add Transition" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "End" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Immediate" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Sync" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "At End" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Travel" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Start and end nodes are needed for a sub-transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "No playback resource set at path: %s." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Node Removed" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition Removed" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Set Start Node (Autoplay)" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "" +"Select and move nodes.\n" +"RMB to add new nodes.\n" +"Shift+LMB to create connections." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Create new nodes." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Connect nodes." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Remove selected node or transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Toggle autoplay this animation on start, restart or seek to zero." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Set the end animation. This is useful for sub-transitions." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition: " +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Input" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Import Animations..." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Filters..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Contents:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "View Files" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Connection error, please try again." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't connect to host:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No response from host:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't resolve hostname:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, return code:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Cannot save response to:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Write error." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, too many redirects" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Redirect loop." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, timeout" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Timeout." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Bad download hash, assuming file has been tampered with." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Expected:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Got:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Failed sha256 hash check" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Asset Download Error:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Downloading (%s / %s)..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Downloading..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Resolving..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Error making request" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Idle" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Install..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Retry" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Download Error" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Download for this asset is already in progress!" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "First" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Previous" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Next" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Last" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "All" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No results for \"%s\"." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Import..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Plugins..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +msgid "Sort:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/project_settings_editor.cpp +msgid "Category:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Support" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Loading..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "" +"Can't determine a save path for lightmap images.\n" +"Save your scene (for images to be saved in the same dir), or pick a save " +"path from the BakedLightmap properties." +msgstr "" + +#: 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 "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Failed creating lightmap images, make sure path is writable." +msgstr "" + +#: editor/plugins/baked_lightmap_editor_plugin.cpp +msgid "Bake Lightmaps" +msgstr "" + +#: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/rename_dialog.cpp +msgid "Preview" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Vertical Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Vertical Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Remove Vertical Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Horizontal Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Horizontal Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Remove Horizontal Guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Horizontal and Vertical Guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move pivot" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate CanvasItem" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move anchor" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Resize CanvasItem" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale CanvasItem" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move CanvasItem" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"When active, moving Control nodes changes their anchors instead of their " +"margins." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchors only" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors and Margins" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"Overrides game camera with editor viewport camera." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Unlock Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Group Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Ungroup Selected" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create Custom Bone(s) from Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Warning: Children of a container get their position and size determined only " +"by their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom Reset" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Select Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Ruler Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Toggle smart snapping." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Smart Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Toggle grid snapping." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Grid Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snapping Options" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Smart Snapping" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap..." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Parent" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Node Anchor" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Node Sides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Node Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Other Nodes" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to Guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton Options" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Custom Bone(s) from Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Custom Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Always Show Grid" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Helpers" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Rulers" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Origin" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Viewport" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Group And Lock Icons" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Preview Canvas Scale" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Translation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale mask for inserting keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys (based on mask)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Auto insert keys when objects are translated, rotated or scaled (based on " +"mask).\n" +"Keys are only added to existing tracks, no new tracks will be created.\n" +"Keys must be inserted manually for the first time." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Auto Insert Key" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Multiply grid step by 2" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Divide grid step by 2" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan View" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Add %s" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Adding %s..." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Default Type" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Drag & drop + Shift : Add node as sibling\n" +"Drag & drop + Alt : Change node type" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Polygon3D" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Restart" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/cpu_particles_2d_editor_plugin.cpp +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +msgid "CPUParticles" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Mesh" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Node" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Flat 0" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Flat 1" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Smoothstep" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Modify Curve Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Modify Curve Tangent" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Load Curve Preset" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Add Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Remove Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Left Linear" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Right Linear" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Load Preset" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Remove Curve Point" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Toggle Curve Linear Tangent" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Hold Shift to edit tangents individually" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Right click to add point" +msgstr "" + +#: editor/plugins/gi_probe_editor_plugin.cpp +msgid "Bake GI Probe" +msgstr "" + +#: editor/plugins/gradient_editor_plugin.cpp +msgid "Gradient Edited" +msgstr "" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Shape" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Failed creating shapes!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape(s)" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Contained Mesh is not of type ArrayMesh." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Unwrap failed, mesh may not be manifold?" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "No mesh to debug." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Model has no UV in this layer" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh has not surface to create outlines from!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling(s)" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh..." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "View UV1" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "View UV2" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Unwrap UV2 for Lightmap/AO" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: editor/plugins/navigation_polygon_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Convert to CPUParticles" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generating Visibility Rect" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generate Visibility Rect" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Can only set point into a ParticlesMaterial process material" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generation Time (sec):" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "The geometry's faces don't contain any area." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "The geometry doesn't contain any faces." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "\"%s\" doesn't inherit from Spatial." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "\"%s\" doesn't contain geometry." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "\"%s\" doesn't contain face geometry." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Emission Points:" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Surface Points" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Surface Points+Normal (Directed)" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Emission Source: " +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "A processor material of type 'ParticlesMaterial' is required." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generating AABB" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generate Visibility AABB" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Out-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove In-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Left Click: Split Segment (in curve)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp +msgid "Options" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Mirror Handle Angles" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Mirror Handle Lengths" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove Out-Control Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove In-Control Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: editor/plugins/physical_bone_plugin.cpp +msgid "Move Joint" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"The skeleton property of the Polygon2D does not point to a Skeleton2D node" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Sync Bones" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"No texture in this polygon.\n" +"Set a texture to be able to edit UV." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"Polygon 2D has internal vertices, so it can no longer be edited in the " +"viewport." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Polygon & UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Internal Vertex" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Remove Internal Vertex" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Invalid Polygon (need 3 different vertices)" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Add Custom Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Remove Custom Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Paint Bone Weights" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Open Polygon 2D UV editor." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Points" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygons" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Bones" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Points" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create a custom polygon. Enables custom polygon rendering." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"Remove a custom polygon. If none remain, custom polygon rendering is " +"disabled." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Paint weights with specified intensity." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Unpaint weights with specified intensity." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Radius:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Settings" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Configure Grid:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset X:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset Y:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step X:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step Y:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Sync Bones to Polygon" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp +#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Type:" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "AnimationTree has no path set to an AnimationPlayer" +msgstr "" + +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "Path to AnimationPlayer is invalid" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Clear Recent Files" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close and save changes?" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error writing TextFile:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Could not load file at:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error saving file!" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error Saving" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error Importing" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "New Text File..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open File" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save File As..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "%s Class Reference" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find Next" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find Previous" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Filter scripts" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Toggle alphabetical sorting of the method list." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Filter methods" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Sort" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Move Up" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Move Down" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Next script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Previous script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "File" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Reopen Closed Script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Copy Script Path" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Previous" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Import Theme..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close Docs" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp +#: editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Debug with External Editor" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open Godot online documentation." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Request Docs" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Help improve the Godot documentation by giving feedback." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Discard" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/shader_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Search Results" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Clear Recent Scripts" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Connections to method:" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp +msgid "Source" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Target" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "" +"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "(ignore)" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Function" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Only resources from filesystem can be dropped." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Lookup Symbol" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Convert Case" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Uppercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Lowercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Capitalize" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Syntax Highlighter" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +msgid "Go To" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +msgid "Bookmarks" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Breakpoints" +msgstr "" + +#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Cut" +msgstr "" + +#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Select All" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Delete Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Indent Left" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Indent Right" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Toggle Comment" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold/Unfold Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold All Lines" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Unfold All Lines" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Clone Down" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Complete Symbol" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Evaluate Selection" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Convert Indent to Spaces" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Convert Indent to Tabs" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Auto Indent" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Find in Files..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Contextual Help" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Toggle Bookmark" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Next Bookmark" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Previous Bookmark" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Remove All Bookmarks" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Function..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Line..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Toggle Breakpoint" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Next Breakpoint" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Previous Breakpoint" +msgstr "" + +#: editor/plugins/shader_editor_plugin.cpp +msgid "" +"This shader has been modified on on disk.\n" +"What action should be taken?" +msgstr "" + +#: editor/plugins/shader_editor_plugin.cpp +msgid "Shader" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "This skeleton has no bones, create some children Bone2D nodes." +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Create Rest Pose from Bones" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Set Rest Pose to Bones" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Skeleton2D" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Make Rest Pose (From Bones)" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Set Bones to Rest Pose" +msgstr "" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Create physical bones" +msgstr "" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Skeleton" +msgstr "" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Create physical skeleton" +msgstr "" + +#: editor/plugins/skeleton_ik_editor_plugin.cpp +msgid "Play IK" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling: " +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translating: " +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Yaw" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Objects Drawn" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Material Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Shader Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Surface Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Draw Calls" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Vertices" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Align Transform with View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Align Rotation with View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock View Rotation" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Unshaded" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Environment" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Gizmos" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Information" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View FPS" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Half Resolution" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Enable Doppler" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Cinematic Preview" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Left" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Right" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Forward" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Backwards" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Up" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Down" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Speed Modifier" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Slow Modifier" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Note: The FPS value displayed is the editor's framerate.\n" +"It cannot be used as a reliable indication of in-game performance." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Rotation Locked" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Nodes To Floor" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Couldn't find a solid floor to snap the selection to." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Drag: Rotate\n" +"Alt+Drag: Move\n" +"Alt+RMB: Depth list selection" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Use Local Space" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Top View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Switch Perspective/Orthogonal View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Insert Animation Key" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Origin" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Focus Selection" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Toggle Freelook" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Object to Floor" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog..." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Settings..." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Nameless gizmo" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite is empty!" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Can't convert a sprite using animation frames to mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't replace by mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Simplification: " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Shrink (Pixels): " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Grow (Pixels): " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Update Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Settings:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "No Frames Selected" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add %d Frame(s)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add a Texture from File" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frames from a Sprite Sheet" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move (Before)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move (After)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Select Frames" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Horizontal:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Vertical:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Select/Clear All Frames" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Create Frames from Sprite Sheet" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Set Region Rect" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Set Margin" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap Mode:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +#: scene/resources/visual_shader.cpp +msgid "None" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Pixel Snap" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Snap" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Auto Slice" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Offset:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Step:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Sep.:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "TextureRegion" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove All Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp +msgid "Remove All" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Edit Theme" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme editing menu." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Create From Current Editor Theme" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Toggle Button" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Disabled Button" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Disabled Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Radio Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Checked Radio Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Named Sep." +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Submenu" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Subitem 1" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Subitem 2" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Disabled LineEdit" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Editable Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Subtree" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Has,Many,Options" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp +msgid "Style" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Fix Invalid Tiles" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cut Selection" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Line Draw" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rectangle Paint" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket Fill" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Find Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Disable Autotile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Enable Priority" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Filter tiles" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Give a TileSet resource to this TileMap to use its tiles." +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "" +"Shift+LMB: Line Draw\n" +"Shift+Ctrl+LMB: Rectangle Paint" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate Left" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate Right" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Flip Horizontally" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Flip Vertically" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Clear Transform" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Texture(s) to TileSet." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove selected Texture from TileSet." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Next Coordinate" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select the next shape, subtile, or Tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Previous Coordinate" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select the previous shape, subtile, or Tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Icon Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index Mode" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Copy bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Paste bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Erase bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create a new rectangle." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create a new polygon." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Keep polygon inside region Rect." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Enable snap and show grid (configurable via the Inspector)." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Display Tile Names (Hold Alt Key)" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Add or select a texture on the left panel to edit the tiles bound to it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove selected texture? This will remove all tiles which use it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "You haven't selected a texture to remove." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene? This will overwrite all current tiles." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Texture" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "%s file(s) were not added because was already on the list." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Drag handles to edit Rect.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete selected Rect." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select current edited sub-tile.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete polygon." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: Set bit on.\n" +"RMB: Set bit off.\n" +"Shift+LMB: Set wildcard bit.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to change its priority.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to change its z index.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Set Tile Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Set Tile Icon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Navigation Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Paste Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Clear Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Polygon Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Polygon Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Navigation Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "This property can't be changed." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "TileSet" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No VCS addons are available." +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp editor/rename_dialog.cpp +msgid "Error" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No commit message was provided" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No files added to stage" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "VCS Addon is not initialized" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Version Control System" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Initialize" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Staging area" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Detect new changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Modified" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Renamed" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Deleted" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Typechange" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Stage Selected" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Stage All" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Add a commit message" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Commit Changes" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Status" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "View file diffs before committing them to the latest version" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No file diff is active" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "Detect changes in file diff" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "(GLES3 only)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Output" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Boolean" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Sampler" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add input port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add output port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change input port type" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change output port type" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change input port name" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Change output port name" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Remove input port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Remove output port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Set expression" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Resize VisualShader node" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Set Uniform Name" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Set Input Default Port" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Node to Visual Shader" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Duplicate Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Delete Nodes" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Visual Shader Input Type Changed" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Light" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Show resulted shader code." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Create Shader Node" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Grayscale function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts HSV vector to RGB equivalent." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts RGB vector to HSV equivalent." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Sepia function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Burn operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Darken operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Difference operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Dodge operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "HardLight operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Lighten operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Overlay operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Screen operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "SoftLight operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Color uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the boolean result of the %s comparison between two parameters." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Equal (==)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Greater Than (>)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Greater Than or Equal (>=)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns an associated vector if the provided scalars are equal, greater or " +"less." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the boolean result of the comparison between INF and a scalar " +"parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the boolean result of the comparison between NaN and a scalar " +"parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Less Than (<)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Less Than or Equal (<=)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Not Equal (!=)" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns an associated vector if the provided boolean value is true or false." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns an associated scalar if the provided boolean value is true or false." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the boolean result of the comparison between two parameters." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the boolean result of the comparison between INF (or NaN) and a " +"scalar parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Boolean constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Boolean uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for all shader modes." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Input parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for vertex and fragment shader modes." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for fragment and light shader modes." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for fragment shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for light shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for vertex shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "'%s' input parameter for vertex and fragment shader mode." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "E constant (2.718282). Represents the base of the natural logarithm." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Epsilon constant (0.00001). Smallest possible scalar number." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Phi constant (1.618034). Golden ratio." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Pi/4 constant (0.785398) or 45 degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Pi/2 constant (1.570796) or 90 degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Pi constant (3.141593) or 180 degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Tau constant (6.283185) or 360 degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Sqrt2 constant (1.414214). Square root of 2." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the absolute value of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse hyperbolic cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse hyperbolic sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the arc-tangent of the parameters." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse hyperbolic tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Finds the nearest integer that is greater than or equal to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Constrains a value to lie between two further values." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the hyperbolic cosine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts a quantity in radians to degrees." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Base-e Exponential." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Base-2 Exponential." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the nearest integer less than or equal to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Computes the fractional part of the argument." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the inverse of the square root of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Natural logarithm." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Base-2 logarithm." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the greater of two values." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the lesser of two values." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Linear interpolation between two scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the opposite value of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 - scalar" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the value of the first parameter raised to the power of the second." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Converts a quantity in degrees to radians." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 / scalar" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the nearest integer to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the nearest even integer to the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Clamps the value between 0.0 and 1.0." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Extracts the sign of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the hyperbolic sine of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the square root of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " +"using Hermite polynomials." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Step function( scalar(edge), scalar(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the hyperbolic tangent of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Finds the truncated value of the parameter." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Adds scalar to scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Divides scalar by scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies scalar by scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the remainder of the two scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Subtracts scalar from scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Scalar uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Perform the cubic texture lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Perform the texture lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Cubic texture uniform lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "2D texture uniform lookup." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "2D texture uniform lookup with triplanar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Calculate the outer product of a pair of vectors.\n" +"\n" +"OuterProduct treats the first parameter 'c' as a column vector (matrix with " +"one column) and the second parameter 'r' as a row vector (matrix with one " +"row) and does a linear algebraic matrix multiply 'c * r', yielding a matrix " +"whose number of rows is the number of components in 'c' and whose number of " +"columns is the number of components in 'r'." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Composes transform from four vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Decomposes transform to four vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the determinant of a transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the inverse of a transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the transpose of a transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies transform by transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies vector by transform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Transform uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector operator." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Composes vector from three scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Decomposes vector to three scalars." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the cross product of two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the distance between two points." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the dot product of two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the vector that points in the same direction as a reference vector. " +"The function has three vector parameters : N, the vector to orient, I, the " +"incident vector, and Nref, the reference vector. If the dot product of I and " +"Nref is smaller than zero the return value is N. Otherwise -N is returned." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the length of a vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Linear interpolation between two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Linear interpolation between two vectors using scalar." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Calculates the normalize product of vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 - vector" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "1.0 / vector" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns the vector that points in the direction of reflection ( a : incident " +"vector, b : normal vector )." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the vector that points in the direction of refraction." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " +"using Hermite polynomials." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than " +"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " +"using Hermite polynomials." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Step function( vector(edge), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Step function( scalar(edge), vector(x) ).\n" +"\n" +"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Adds vector to vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Divides vector by vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Multiplies vector by vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Returns the remainder of the two vectors." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Subtracts vector from vector." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector constant." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vector uniform." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Custom Godot Shader Language expression, with custom amount of input and " +"output ports. This is a direct injection of code into the vertex/fragment/" +"light function, do not use it to write the function declarations inside." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Returns falloff based on the dot product of surface normal and view " +"direction of camera (pass associated inputs to it)." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"Custom Godot Shader Language expression, which is placed on top of the " +"resulted shader. You can place various function definitions inside and call " +"it later in the Expressions. You can also declare varyings, uniforms and " +"constants." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "(Fragment/Light mode only) Scalar derivative function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "(Fragment/Light mode only) Vector derivative function." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Vector) Derivative in 'x' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Vector) Derivative in 'y' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local " +"differencing." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and " +"'y'." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "" +"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and " +"'y'." +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "VisualShader" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Edit Visual Property" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Visual Shader Mode Changed" +msgstr "" + +#: editor/project_export.cpp +msgid "Runnable" +msgstr "" + +#: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp +msgid "Delete patch '%s' from list?" +msgstr "" + +#: editor/project_export.cpp +msgid "Delete preset '%s'?" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Failed to export the project for platform '%s'.\n" +"Export templates seem to be missing or invalid." +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Failed to export the project for platform '%s'.\n" +"This might be due to a configuration issue in the export preset or your " +"export settings." +msgstr "" + +#: editor/project_export.cpp +msgid "Release" +msgstr "" + +#: editor/project_export.cpp +msgid "Exporting All" +msgstr "" + +#: editor/project_export.cpp +msgid "The given export path doesn't exist:" +msgstr "" + +#: editor/project_export.cpp +msgid "Export templates for this platform are missing/corrupted:" +msgstr "" + +#: editor/project_export.cpp +msgid "Presets" +msgstr "" + +#: editor/project_export.cpp editor/project_settings_editor.cpp +msgid "Add..." +msgstr "" + +#: editor/project_export.cpp +msgid "" +"If checked, the preset will be available for use in one-click deploy.\n" +"Only one preset per platform may be marked as runnable." +msgstr "" + +#: editor/project_export.cpp +msgid "Export Path" +msgstr "" + +#: editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: editor/project_export.cpp +msgid "Export all resources in the project" +msgstr "" + +#: editor/project_export.cpp +msgid "Export selected scenes (and dependencies)" +msgstr "" + +#: editor/project_export.cpp +msgid "Export selected resources (and dependencies)" +msgstr "" + +#: editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: editor/project_export.cpp +msgid "Resources to export:" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Filters to export non-resource files/folders\n" +"(comma-separated, e.g: *.json, *.txt, docs/*)" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Filters to exclude files/folders from project\n" +"(comma-separated, e.g: *.json, *.txt, docs/*)" +msgstr "" + +#: editor/project_export.cpp +msgid "Patches" +msgstr "" + +#: editor/project_export.cpp +msgid "Make Patch" +msgstr "" + +#: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp +msgid "Features" +msgstr "" + +#: editor/project_export.cpp +msgid "Custom (comma-separated):" +msgstr "" + +#: editor/project_export.cpp +msgid "Feature List:" +msgstr "" + +#: editor/project_export.cpp +msgid "Script" +msgstr "" + +#: editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: editor/project_export.cpp +msgid "Text" +msgstr "" + +#: editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: editor/project_export.cpp +msgid "Invalid Encryption Key (must be 64 characters long)" +msgstr "" + +#: editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: editor/project_export.cpp +msgid "Export mode?" +msgstr "" + +#: editor/project_export.cpp +msgid "Export All" +msgstr "" + +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + +#: editor/project_export.cpp +msgid "Export templates for this platform are missing:" +msgstr "" + +#: editor/project_export.cpp +msgid "Manage Export Templates" +msgstr "" + +#: editor/project_export.cpp +msgid "Export With Debug" +msgstr "" + +#: editor/project_manager.cpp +msgid "The path does not exist." +msgstr "" + +#: editor/project_manager.cpp +msgid "Invalid '.zip' project file, does not contain a 'project.godot' file." +msgstr "" + +#: editor/project_manager.cpp +msgid "Please choose an empty folder." +msgstr "" + +#: editor/project_manager.cpp +msgid "Please choose a 'project.godot' or '.zip' file." +msgstr "" + +#: editor/project_manager.cpp +msgid "Directory already contains a Godot project." +msgstr "" + +#: editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Invalid Project Name." +msgstr "" + +#: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "" + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "" + +#: editor/project_manager.cpp +msgid "It would be a good idea to name your project." +msgstr "" + +#: editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Couldn't load project.godot in project path (error %d). It may be missing or " +"corrupted." +msgstr "" + +#: editor/project_manager.cpp +msgid "Couldn't edit project.godot in project path." +msgstr "" + +#: editor/project_manager.cpp +msgid "Couldn't create project.godot in project path." +msgstr "" + +#: editor/project_manager.cpp +msgid "The following files failed extraction from package:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Rename Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "" + +#: editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "" + +#: editor/project_manager.cpp +msgid "Install Project:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "" + +#: editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Project Installation Path:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Missing Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Error: Project is missing on the filesystem." +msgstr "" + +#: editor/project_manager.cpp +msgid "Can't open project at '%s'." +msgstr "" + +#: editor/project_manager.cpp +msgid "Are you sure to open more than one project?" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You won't be able to open the project with previous versions of the " +"engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"The following project settings file was generated by an older engine " +"version, and needs to be converted for this version:\n" +"\n" +"%s\n" +"\n" +"Do you want to convert it?\n" +"Warning: You won't be able to open the project with previous versions of the " +"engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"The project settings were created by a newer engine version, whose settings " +"are not compatible with this version." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Can't run project: no main scene defined.\n" +"Please edit the project and set the main scene in the Project Settings under " +"the \"Application\" category." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Can't run project: Assets need to be imported.\n" +"Please edit the project to trigger the initial import." +msgstr "" + +#: editor/project_manager.cpp +msgid "Are you sure to run %d projects at once?" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Remove %d projects from the list?\n" +"The project folders' contents won't be modified." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Remove this project from the list?\n" +"The project folder's contents won't be modified." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Remove all missing projects from the list?\n" +"The project folders' contents won't be modified." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Language changed.\n" +"The interface will update after restarting the editor or project manager." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Are you sure to scan %s folders for existing Godot projects?\n" +"This could take a while." +msgstr "" + +#: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp +msgid "Projects" +msgstr "" + +#: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: editor/project_manager.cpp +msgid "Select a Folder to Scan" +msgstr "" + +#: editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Remove Missing" +msgstr "" + +#: editor/project_manager.cpp +msgid "Templates" +msgstr "" + +#: editor/project_manager.cpp +msgid "Restart Now" +msgstr "" + +#: editor/project_manager.cpp +msgid "Can't run project" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"You currently don't have any projects.\n" +"Would you like to explore official example projects in the Asset Library?" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Key " +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joy Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joy Axis" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Mouse Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "" +"Invalid action name. it cannot be empty nor contain '/', ':', '=', '\\' or " +"'\"'" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "An action with the name '%s' already exists." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Change Action deadzone" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "All Devices" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Device" +msgstr "" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "Press a Key..." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Left Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Right Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Middle Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Up Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Down Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Left Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Right Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "X Button 1" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "X Button 2" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joypad Axis Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Axis" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joypad Button Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Erase Input Action" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Left Button." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Right Button." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Middle Button." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Up." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Down." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Global Property" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Select a setting item first!" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "No property '%s' exists." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Setting '%s' is internal, and it can't be deleted." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Delete Item" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "" +"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " +"'\"'." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Input Action" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Error saving settings." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Settings saved OK." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Moved Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Override for Feature" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Translation" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remove Translation" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Remapped Path" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Changed Locale Filter" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Changed Locale Filter Mode" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Project Settings (project.godot)" +msgstr "" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Override For..." +msgstr "" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "The editor must be restarted for changes to take effect." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Input Map" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Action:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Action" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Deadzone" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Device:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Localization" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Translations" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Translations:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remaps" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Resources:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Locale" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Locales Filter" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Show All Locales" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Show Selected Locales Only" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Filter mode:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Locales:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "AutoLoad" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Plugins" +msgstr "" + +#: editor/property_editor.cpp +msgid "Preset..." +msgstr "" + +#: editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: editor/property_editor.cpp +msgid "File..." +msgstr "" + +#: editor/property_editor.cpp +msgid "Dir..." +msgstr "" + +#: editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: editor/property_editor.cpp +msgid "Select Node" +msgstr "" + +#: editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: editor/property_editor.cpp +msgid "Pick a Node" +msgstr "" + +#: editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Virtual Method" +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Method" +msgstr "" + +#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp +msgid "Batch Rename" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Prefix" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Suffix" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Advanced Options" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Substitute" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node's parent name, if available" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node type" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Current scene name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Root node name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "" +"Sequential integer counter.\n" +"Compare counter options." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Per Level counter" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "If set the counter restarts for each group of child nodes" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Initial value for the counter" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Step" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Amount by which counter is incremented for each node" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Padding" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "" +"Minimum number of digits for the counter.\n" +"Missing digits are padded with leading zeros." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Regular Expressions" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Post-Process" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Keep" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "CamelCase to under_scored" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "under_scored to CamelCase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Case" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "To Lowercase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "To Uppercase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Reset" +msgstr "" + +#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "No parent to instance the scenes at." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Replace with Branch Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make node as Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete %d nodes?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete the root node \"%s\"?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete node \"%s\" and its children?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete node \"%s\"?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can not perform with the root node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Save New Scene As..." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Disabling \"editable_instance\" will cause all properties of the node to be " +"reverted to their default." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Enabling \"Load As Placeholder\" will disable \"Editable Children\" and " +"cause all properties of the node to be reverted to their default." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make Local" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Create Root Node:" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "2D Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "3D Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "User Interface" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Other Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Attach Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Change type of node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Sub-Resources" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear Inheritance" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Editable Children" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Load As Placeholder" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Open Documentation" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Expand/Collapse All" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Reparent to New Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make Scene Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp +msgid "Copy Node Path" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete (No Confirm)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Add/Create a New Node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Attach a new or existing script for the selected node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear a script for the selected node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Remote" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Local" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle Visible" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Unlock Node" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Button Group" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "(Connecting From)" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Node configuration warning:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node has %s connection(s) and %s group(s).\n" +"Click to show signals dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node has %s connection(s).\n" +"Click to show signals dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node is in %s group(s).\n" +"Click to show groups dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Open Script:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node is locked.\n" +"Click to unlock it." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Children are not selectable.\n" +"Click to make selectable." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle Visibility" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"AnimationPlayer is pinned.\n" +"Click to unpin." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Node Configuration Warning!" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Path is empty." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Filename is empty." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Path is not local." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid base path." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "A directory with the same name exists." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid extension." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Wrong extension chosen." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Error loading template '%s'" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Error - Could not create script in filesystem." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Error loading script from %s" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Overrides" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Open Script / Choose Location" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Open Script" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "File exists, it will be reused." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid class name." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid inherited parent name or path." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Script is valid." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Allowed: a-z, A-Z, 0-9, _ and ." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Built-in script (into scene file)." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Will create a new script file." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Will load an existing script file." +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Template:" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Built-in Script:" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Attach Node Script" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Remote " +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Warning:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "C++ Error" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "C++ Error:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "C++ Source" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "C++ Source:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Stack Trace" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Child process connected." +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Skip Breakpoints" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Network Profiler" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Pick one or more items from the list to display the graph." +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Export measures as CSV" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Erase Shortcut" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Restore Shortcut" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Change Shortcut" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: editor/settings_config_dialog.cpp +msgid "Binding" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change AudioStreamPlayer3D Emission Angle" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Notifier AABB" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Particles AABB" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Probe Extents" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Cylinder Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Cylinder Shape Height" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Cylinder Radius" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Cylinder Height" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Torus Inner Radius" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Torus Outer Radius" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Select the dynamic library for this entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Select dependencies of the library for this entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Remove current entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Double click to create a new entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Platform:" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Platform" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Dynamic Library" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Add an architecture entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "GDNativeLibrary" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Enabled GDNative Singleton" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Disabled GDNative Singleton" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Library" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Libraries: " +msgstr "" + +#: modules/gdnative/register_types.cpp +msgid "GDNative" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Step argument is zero!" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Object can't provide a length." +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Next Plane" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Previous Plane" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Plane:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Next Floor" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Previous Floor" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Floor:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Delete Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Fill Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Paste Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Paint" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Grid Map" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Snap View" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Disabled" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Above" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Below" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit X Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit Y Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit Z Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate X" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate Y" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate Z" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate X" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate Y" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate Z" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Clear Rotation" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clear Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Fill Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Settings" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Pick Distance:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Filter meshes" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Give a MeshLibrary resource to this GridMap to use its meshes." +msgstr "" + +#: modules/mono/csharp_script.cpp +msgid "Class name can't be a reserved keyword" +msgstr "" + +#: modules/mono/mono_gd/gd_mono_utils.cpp +msgid "End of inner exception stack trace" +msgstr "" + +#: modules/recast/navigation_mesh_editor_plugin.cpp +msgid "Bake NavMesh" +msgstr "" + +#: modules/recast/navigation_mesh_editor_plugin.cpp +msgid "Clear the navigation mesh." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Setting up Configuration..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Calculating grid size..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Creating heightfield..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Marking walkable triangles..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Constructing compact heightfield..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Eroding walkable area..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Partitioning..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Creating contours..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Creating polymesh..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Converting to native navigation mesh..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Navigation Mesh Generator Setup:" +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Parsing Geometry..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Done!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"A node yielded without working memory, please read the docs on how to yield " +"properly!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Node yielded, but did not return a function state in the first working " +"memory." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Return value must be assigned to first element of node working memory! Fix " +"your node please." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Node returned an invalid sequence output: " +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Found sequence bit but not the node in the stack, report bug!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Stack overflow with stack depth: " +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Signal Arguments" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Argument Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Argument name" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Set Variable Default Value" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Set Variable Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Override an existing built-in function." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create a new function." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Variables:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create a new variable." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Signals:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create a new signal." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name is not a valid identifier:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Name already in use by another func/var/signal:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Rename Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Delete input port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove VisualScript Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Duplicate VisualScript Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold %s to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a simple reference to the node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold %s to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Hold Ctrl to drop a Variable Setter." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Preload Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node(s) From Tree" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "" +"Can't drop properties because script '%s' is not used in this scene.\n" +"Drop holding 'Shift' to just copy the signature." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Getter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Setter Property" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Move Node(s)" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove VisualScript Node" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Disconnect Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Node Data" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Node Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Script already has function '%s'" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Input Value" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Resize Comment" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't copy the function node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Paste VisualScript Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't create function with a function node." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't create function of nodes from nodes of multiple functions." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select at least one node with sequence port." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Try to only have one sequence input in selection." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Create Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Variable:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Signal:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Make Tool:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Members:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "function_name" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select or create a function to edit its graph." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Delete Selected" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Find Node Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Copy Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Cut Nodes" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Make Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Refresh Graph" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Member" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Input type not iterable: " +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid: " +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name." +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Base object is not a Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Path does not lead Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name '%s' in node %s." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid argument of type: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid arguments: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableGet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableSet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Custom node has no _step() method, can't process graph." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "" +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." +msgstr "" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Search VisualScript" +msgstr "" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Get %s" +msgstr "" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Set %s" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Select device from the list" +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Custom build requires a valid Android SDK path in Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid Android SDK path for custom build in Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "" +"Android build template not installed in the project. Install it from the " +"Project menu." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: 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 "" + +#: platform/android/export/export.cpp +msgid "" +"Android build version mismatch:\n" +" Template installed: %s\n" +" Godot Version: %s\n" +"Please reinstall Android build template from 'Project' menu." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Building Android Project (gradle)" +msgstr "" + +#: 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 "" + +#: platform/android/export/export.cpp +msgid "No build apk generated at: " +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Stop HTTP Server" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Run in Browser" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Run exported HTML in the system's default browser." +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not write file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not open template for export:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Invalid export template:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not read custom HTML shell:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not read boot splash image file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the \"Frames\" property in " +"order for AnimatedSprite to display frames." +msgstr "" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" + +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to " +"define its shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/2d/cpu_particles_2d.cpp +msgid "" +"CPUParticles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the \"Texture\" " +"property." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + +#: scene/2d/particles_2d.cpp scene/3d/particles.cpp +msgid "" +"A material to process the particles is not assigned, so no behavior is " +"imprinted." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "" +"Particles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/physics_body_2d.cpp +msgid "" +"Size changes to RigidBody2D (in character or rigid modes) will be overridden " +"by the physics engine when running.\n" +"Change the size in children collision shapes instead." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "This Bone2D chain should end at a Skeleton2D node." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "" +"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." +msgstr "" + +#: scene/2d/tile_map.cpp +msgid "" +"TileMap with Use Parent on needs a parent CollisionObject2D to give shapes " +"to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " +"KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnabler2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVRCamera must have an ARVROrigin node as its parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVRController must have an ARVROrigin node as its parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "" +"The controller ID must not be 0 or this controller won't be bound to an " +"actual controller." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVRAnchor must have an ARVROrigin node as its parent." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "" +"The anchor ID must not be 0 or this anchor won't be bound to an actual " +"anchor." +msgstr "" + +#: scene/3d/arvr_nodes.cpp +msgid "ARVROrigin requires an ARVRCamera child node." +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "%d%%" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "(Time Left: %d:%02d s)" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Plotting Meshes: " +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Plotting Lights:" +msgstr "" + +#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp +msgid "Finishing Plot" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Lighting Meshes: " +msgstr "" + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape or CollisionPolygon as a child to define " +"its shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"Plane shapes don't work well and will be removed in future versions. Please " +"don't use them." +msgstr "" + +#: scene/3d/cpu_particles.cpp +msgid "Nothing is visible because no mesh has been assigned." +msgstr "" + +#: scene/3d/cpu_particles.cpp +msgid "" +"CPUParticles animation requires the usage of a SpatialMaterial whose " +"Billboard Mode is set to \"Particle Billboard\"." +msgstr "" + +#: scene/3d/gi_probe.cpp +msgid "Plotting Meshes" +msgstr "" + +#: scene/3d/gi_probe.cpp +msgid "" +"GIProbes are not supported by the GLES2 video driver.\n" +"Use a BakedLightmap instead." +msgstr "" + +#: scene/3d/light.cpp +msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"Nothing is visible because meshes have not been assigned to draw passes." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"Particles animation requires the usage of a SpatialMaterial whose Billboard " +"Mode is set to \"Particle Billboard\"." +msgstr "" + +#: scene/3d/path.cpp +msgid "PathFollow only works when set as a child of a Path node." +msgstr "" + +#: scene/3d/path.cpp +msgid "" +"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " +"parent Path's Curve resource." +msgstr "" + +#: scene/3d/physics_body.cpp +msgid "" +"Size changes to RigidBody (in character or rigid modes) will be overridden " +"by the physics engine when running.\n" +"Change the size in children collision shapes instead." +msgstr "" + +#: scene/3d/remote_transform.cpp +msgid "" +"The \"Remote Path\" property must point to a valid Spatial or Spatial-" +"derived node to work." +msgstr "" + +#: scene/3d/soft_body.cpp +msgid "This body will be ignored until you set a mesh." +msgstr "" + +#: scene/3d/soft_body.cpp +msgid "" +"Size changes to SoftBody will be overridden by the physics engine when " +"running.\n" +"Change the size in children collision shapes instead." +msgstr "" + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the \"Frames\" property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/3d/vehicle_body.cpp +msgid "" +"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use " +"it as a child of a VehicleBody." +msgstr "" + +#: scene/3d/world_environment.cpp +msgid "" +"WorldEnvironment requires its \"Environment\" property to contain an " +"Environment to have a visible effect." +msgstr "" + +#: scene/3d/world_environment.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/world_environment.cpp +msgid "" +"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set " +"this environment's Background Mode to Canvas (for 2D scenes)." +msgstr "" + +#: scene/animation/animation_blend_tree.cpp +msgid "On BlendTree node '%s', animation not found: '%s'" +msgstr "" + +#: scene/animation/animation_blend_tree.cpp +msgid "Animation not found: '%s'" +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "In node '%s', invalid animation: '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Invalid animation: '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Nothing connected to input '%s' of node '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "No root AnimationNode for the graph is set." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Path to an AnimationPlayer node containing animations is not set." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "The AnimationPlayer root node is not a valid node." +msgstr "" + +#: scene/animation/animation_tree_player.cpp +msgid "This node has been deprecated. Use AnimationTree instead." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "HSV" +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Raw" +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Add current color as a preset." +msgstr "" + +#: scene/gui/container.cpp +msgid "" +"Container by itself serves no purpose unless a script configures its " +"children placement behavior.\n" +"If you don't intend to add a script, use a plain Control node instead." +msgstr "" + +#: scene/gui/control.cpp +msgid "" +"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to " +"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"." +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine, but they will hide upon " +"running." +msgstr "" + +#: scene/gui/range.cpp +msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." +msgstr "" + +#: scene/gui/scroll_container.cpp +msgid "" +"ScrollContainer is intended to work with a single child control.\n" +"Use a container as child (VBox, HBox, etc.), or a Control and set the custom " +"minimum size manually." +msgstr "" + +#: scene/gui/tree.cpp +msgid "(Other)" +msgstr "" + +#: scene/main/scene_tree.cpp +msgid "" +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid source for preview." +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid source for shader." +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid comparison function for that type." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Assignment to function." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Assignment to uniform." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Varyings can only be assigned in vertex function." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Constants cannot be modified." +msgstr "" diff --git a/editor/translations/ms.po b/editor/translations/ms.po index 7ff31a456c..103a41808e 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -524,8 +524,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -714,6 +715,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -790,6 +795,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -961,7 +970,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1426,7 +1435,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1667,6 +1677,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2577,7 +2591,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2889,6 +2904,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2945,6 +2964,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3375,6 +3398,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4496,6 +4523,10 @@ msgstr "" msgid "Transition: " msgstr "Set Peralihan ke:" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4750,6 +4781,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Lesen" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Lesen" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4942,6 +4999,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5597,6 +5722,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6222,6 +6351,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6348,10 +6494,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7472,6 +7614,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7491,6 +7634,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7601,6 +7748,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7617,6 +7776,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8752,6 +8939,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8851,6 +9046,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8902,6 +9101,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9159,6 +9366,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10737,6 +10948,15 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Set Peralihan ke:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10799,15 +11019,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Set Peralihan ke:" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Buang Trek Anim" @@ -10980,6 +11191,19 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Semua Pilihan" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11176,27 +11400,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/nb.po b/editor/translations/nb.po index b7422a2f92..e9b29f3911 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -559,8 +559,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Rediger" @@ -756,6 +757,10 @@ msgstr "Kun Valgte" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Veksle skriptpanel" + #: 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 @@ -840,6 +845,11 @@ msgstr "Ekstra Call Argumenter:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Lim inn Noder" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "Snapping innstillinger" @@ -1027,7 +1037,7 @@ msgid "Resource" msgstr "Ressurs" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Bane" @@ -1518,7 +1528,8 @@ msgid "Node Name:" msgstr "Nodenavn:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Navn" @@ -1792,6 +1803,11 @@ msgstr "Høyreklikk: Slett Punkt." #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "HÃ¥ndter Eksportmaler" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "%d flere filer" @@ -2796,7 +2812,8 @@ msgstr "Tilbakestille Scene" msgid "Miscellaneous project or scene-wide tools." msgstr "Diverse prosjekt- eller scene-relaterte verktøy" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Prosjekt" @@ -3152,6 +3169,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importer Mal Fra ZIP-Fil" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Eksporter Mal-Manager" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Eksporter Prosjekt" @@ -3209,6 +3231,11 @@ msgstr "Ã…pne den neste Editoren" msgid "Open the previous Editor" msgstr "Ã…pne den forrige Editoren" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Advarsler" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3678,6 +3705,11 @@ msgstr "Velg malfil" #: editor/export_template_manager.cpp #, fuzzy +msgid "Godot Export Templates" +msgstr "HÃ¥ndter Eksportmaler" + +#: editor/export_template_manager.cpp +#, fuzzy msgid "Export Template Manager" msgstr "Eksporter Mal-Manager" @@ -4920,6 +4952,11 @@ msgstr "" msgid "Transition: " msgstr "Overgang" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Panorerings-Modus" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -5192,6 +5229,32 @@ msgid "Download for this asset is already in progress!" msgstr "Nedlastning for denne asset'en er allerede i gang!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Lisens" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Lisens" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "første" @@ -5404,6 +5467,87 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Venstre" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Høyre" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Roter Polygon" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Bunnvisning" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Innrykk Venstre" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Plasser Utvalg I Midten" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Innrykk Høyre" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Plasser Utvalg I Midten" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Venstrevisning" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Toppvisning" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Høyrevisning" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Bunnvisning" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Skaler Størrelsesforhold:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Kun anker" @@ -6108,6 +6252,11 @@ msgid "Remove item %d?" msgstr "Fjern element %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshBibliotek..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Legg til Element" @@ -6775,6 +6924,23 @@ msgid "Save File As..." msgstr "Lagre Som..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importer Tema" @@ -6908,10 +7074,6 @@ msgstr "Lukk Dokumentasjon" msgid "Run" msgstr "Kjør" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Veksle skriptpanel" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Tre inn i" @@ -8097,6 +8259,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikon" @@ -8116,6 +8279,11 @@ msgstr "Farge" msgid "Constant" msgstr "Konstant" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -8235,6 +8403,20 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Vis Filer" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Ny %s" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "Neste skript" @@ -8254,6 +8436,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Roter Modus" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Animasjonsnode" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Rediger Poly" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Animasjonsnode" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Roter Modus" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Eksporter Prosjekt" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Panorerings-Modus" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Roter Modus" @@ -9457,6 +9674,15 @@ msgid "Runnable" msgstr "Kjørbar" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Legg til Input" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9558,6 +9784,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Filer" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9613,6 +9844,15 @@ msgstr "Eksporter Prosjekt" msgid "Export All" msgstr "Eksporter" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Filer" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9891,6 +10131,10 @@ msgid "Projects" msgstr "Prosjekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Skann" @@ -11561,6 +11805,16 @@ msgstr "Rediger Variabel:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Legg til Input" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Legg til Input" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "" "Ugyldig navn. Kan ikke kollidere med et eksisterende innebygd type navn." @@ -11628,16 +11882,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Legg til Input" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Legg til Input" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Fjern punkt" @@ -11825,6 +12069,21 @@ msgstr "Medlemmer:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Endre %s type" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Legger til %s..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Fjern Funksjon" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funksjoner:" @@ -12028,28 +12287,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "Navn er ikke en gyldig identifikator:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12937,10 +13179,6 @@ msgstr "Konstanter kan ikke endres." #~ msgid "RMB: Erase Point." #~ msgstr "Høyreklikk: Slett Punkt." -#, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Vis Filer" - #~ msgid "Save Theme As" #~ msgstr "Lagre drakt som" diff --git a/editor/translations/nl.po b/editor/translations/nl.po index 10d32da522..0954f2bc7e 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -39,12 +39,13 @@ # ebbe <ebbesteenhoudt@gmail.com>, 2019. # Tirrin <lensenjoe@gmail.com>, 2019. # Filip Van Raemdonck <arrawn@gmail.com>, 2019. +# Julian <jdhoogvorst@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-29 14:49+0000\n" -"Last-Translator: Filip Van Raemdonck <arrawn@gmail.com>\n" +"PO-Revision-Date: 2019-12-22 12:24+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" "Language: nl\n" @@ -52,7 +53,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 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -192,7 +193,7 @@ msgstr "Anim Wijzig Aanroep" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Time" -msgstr "anim-multi-change keyframe tijd" +msgstr "Anim Wijzig Meerdere Keyframe Waarden" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transition" @@ -245,7 +246,7 @@ msgstr "Animatie Terugspelen Track" #: editor/animation_track_editor.cpp msgid "Animation length (frames)" -msgstr "Animatielengte (in frames)" +msgstr "Animatielengte (frames)" #: editor/animation_track_editor.cpp msgid "Animation length (seconds)" @@ -303,7 +304,7 @@ msgstr "Tijd (en): " #: editor/animation_track_editor.cpp msgid "Toggle Track Enabled" -msgstr "Track schakelaar ingeschakeld" +msgstr "Track in-/uit schakelen" #: editor/animation_track_editor.cpp msgid "Continuous" @@ -479,7 +480,7 @@ msgstr "Voeg Methode Track sleutel toe" #: editor/animation_track_editor.cpp msgid "Method not found in object: " -msgstr "Methode niet gevonden in object " +msgstr "Methode niet gevonden in object: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" @@ -563,8 +564,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Bewerken" @@ -750,6 +752,10 @@ msgstr "Alleen Selectie" msgid "Standard" msgstr "Standaard" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Schakel Scripten Paneel" + #: 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 @@ -828,6 +834,11 @@ msgid "Extra Call Arguments:" msgstr "Extra Aanroep Argumenten:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Selecteer Method" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Geavanceerd" @@ -1007,7 +1018,7 @@ msgid "Resource" msgstr "Bron" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Pad" @@ -1067,7 +1078,7 @@ msgstr "Error bij het laden van:" #: editor/dependency_editor.cpp msgid "Load failed due to missing dependencies:" -msgstr "Laden mislukt vanwege het ontbrekende van afhankelijkheden:" +msgstr "Laden mislukt vanwege afwezige afhankelijkheden:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1139,7 +1150,7 @@ msgstr "Hoofdontwikkelaar" #: editor/editor_about.cpp msgid "Project Manager " -msgstr "Project Manager " +msgstr "Projectbeheer " #: editor/editor_about.cpp msgid "Developers" @@ -1481,7 +1492,8 @@ msgid "Node Name:" msgstr "Node Naam:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Naam" @@ -1556,8 +1568,8 @@ msgid "" "Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " "Etc' in Project Settings." msgstr "" -"Doel platform heeft 'ETC' afbeelding compressie nodig voor GLES2. Activeer " -"'Importeer ETC' in de project instellingen." +"Doelplatform vereist 'ETC' textuurcompressie voor GLES2. Schakel 'Import " +"Etc' in bij de Projectinstellingen." #: editor/editor_export.cpp msgid "" @@ -1731,6 +1743,10 @@ msgid "Erase Profile" msgstr "Wis Profiel" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Editor Profielen beheren" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Profiel(en) importeren" @@ -2031,7 +2047,7 @@ msgstr "Alleen Eigenschappen" #: editor/editor_help_search.cpp msgid "Theme Properties Only" -msgstr "Enkel Thema Eigenschappen" +msgstr "Alleen Thema Eigenschappen" #: editor/editor_help_search.cpp msgid "Member Type" @@ -2069,11 +2085,11 @@ msgstr "Selectie kopiëren" #: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Clear" -msgstr "Leegmaken" +msgstr "Wissen" #: editor/editor_log.cpp msgid "Clear Output" -msgstr "Maak Uitvoer Leeg" +msgstr "Uitvoer wissen" #: editor/editor_network_profiler.cpp editor/editor_node.cpp #: editor/editor_profiler.cpp @@ -2375,7 +2391,7 @@ msgstr "Exporteer Mesh Library" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." -msgstr "Deze bewerking is niet mogelijk zonder een hoofdknoop." +msgstr "Deze bewerking is niet mogelijk zonder een wortelknoop." #: editor/editor_node.cpp msgid "Export Tile Set" @@ -2416,7 +2432,7 @@ msgstr "Sluit de editor af?" #: editor/editor_node.cpp msgid "Open Project Manager?" -msgstr "Open de Project Manager?" +msgstr "Open Projectbeheer?" #: editor/editor_node.cpp msgid "Save & Quit" @@ -2430,8 +2446,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Save changes the following scene(s) before opening Project Manager?" msgstr "" -"Wil je de wijzigen aan de volgende scene(s) opslaan voor de Project Manager " -"opent?" +"Wijzigen aan de volgende scène(s) opslaan voor het openen van Projectbeheer?" #: editor/editor_node.cpp msgid "" @@ -2510,7 +2525,7 @@ msgstr "De scene '%s' heeft kapotte afhankelijkheden:" #: editor/editor_node.cpp msgid "Clear Recent Scenes" -msgstr "Maak Leeg" +msgstr "Recente scènes wissen" #: editor/editor_node.cpp msgid "" @@ -2666,7 +2681,7 @@ msgstr "Scene Opslaan" #: editor/editor_node.cpp msgid "Save All Scenes" -msgstr "Alle Scenes Opslaan" +msgstr "Alle Scènes Opslaan" #: editor/editor_node.cpp msgid "Convert To..." @@ -2698,7 +2713,8 @@ msgstr "Scene Herstellen" msgid "Miscellaneous project or scene-wide tools." msgstr "Diverse project of scene-brede gereedschappen." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Project" @@ -3042,6 +3058,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Sjablonen importeren Vanuit ZIP-Bestand" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Export Sjabloon Manager" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Project Exporteren" @@ -3098,6 +3118,11 @@ msgstr "Open de volgende Editor" msgid "Open the previous Editor" msgstr "Open de vorige Editor" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Waarschuwingen" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Geen deel-hulpbronnen gevonden." @@ -3509,7 +3534,7 @@ msgstr "Opvragen..." #: editor/export_template_manager.cpp msgid "Downloading" -msgstr "Bezig met downloaden" +msgstr "Bezig met neerladen" #: editor/export_template_manager.cpp msgid "Connection Error" @@ -3544,6 +3569,10 @@ msgid "Select Template File" msgstr "Selecteer sjabloonbestand" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Godot Export Templates" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Export Sjabloon Manager" @@ -3603,7 +3632,7 @@ msgstr "Naam bevat ongeldige tekens." #: editor/filesystem_dock.cpp msgid "Renaming file:" -msgstr "Hernoem bestand:" +msgstr "Bestandsnaam wijzigen:" #: editor/filesystem_dock.cpp msgid "Renaming folder:" @@ -3740,7 +3769,7 @@ msgstr "Creëer Script" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp msgid "Find in Files" -msgstr "Zoeken in bestanden" +msgstr "In bestanden zoeken" #: editor/find_in_files.cpp msgid "Find:" @@ -3759,6 +3788,8 @@ msgid "" "Include the files with the following extensions. Add or remove them in " "ProjectSettings." msgstr "" +"Voeg de bestanden toe met de volgende extensies. Voeg ze toe of verwijder ze " +"in ProjectSettings." #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3790,9 +3821,8 @@ msgid "Searching..." msgstr "Aan het zoeken..." #: editor/find_in_files.cpp -#, fuzzy msgid "Search complete" -msgstr "Zoek Tekst" +msgstr "Zoek Compleet" #: editor/groups_editor.cpp msgid "Add to Group" @@ -3811,21 +3841,18 @@ msgid "Invalid group name." msgstr "Ongeldige groepnaam." #: editor/groups_editor.cpp -#, fuzzy msgid "Rename Group" -msgstr "Groepen beheren" +msgstr "Groepen hernoemen" #: editor/groups_editor.cpp -#, fuzzy msgid "Delete Group" -msgstr "Layout Verwijderen" +msgstr "Groep Verwijderen" #: editor/groups_editor.cpp editor/node_dock.cpp msgid "Groups" msgstr "Groepen" #: editor/groups_editor.cpp -#, fuzzy msgid "Nodes Not in Group" msgstr "Knopen niet in de groep" @@ -3840,12 +3867,11 @@ msgstr "Knopen in de groep" #: editor/groups_editor.cpp msgid "Empty groups will be automatically removed." -msgstr "" +msgstr "Lege groepen worden automatisch verwijderd." #: editor/groups_editor.cpp -#, fuzzy msgid "Group Editor" -msgstr "Open Script Bewerker" +msgstr "Groep Bewerker" #: editor/groups_editor.cpp msgid "Manage Groups" @@ -3945,9 +3971,8 @@ msgid "Import As:" msgstr "Importeer als:" #: editor/import_dock.cpp -#, fuzzy msgid "Preset" -msgstr "Voorinstelling" +msgstr "Voorinstellingen" #: editor/import_dock.cpp msgid "Reimport" @@ -3958,9 +3983,10 @@ msgid "Save scenes, re-import and restart" msgstr "Sla scènes op, her-importeer en start opnieuw op" #: editor/import_dock.cpp -#, fuzzy msgid "Changing the type of an imported file requires editor restart." -msgstr "Om de video driver te veranderen moet de editor herstart worden." +msgstr "" +"Het veranderen van het type van een geïmporteerd bestand vereist dat de " +"editor herstart wordt." #: editor/import_dock.cpp msgid "" @@ -3974,12 +4000,10 @@ msgid "Failed to load resource." msgstr "Mislukt om resource te laden." #: editor/inspector_dock.cpp -#, fuzzy msgid "Expand All Properties" msgstr "Klap alle eigenschappen uit" #: editor/inspector_dock.cpp -#, fuzzy msgid "Collapse All Properties" msgstr "Klap alle eigenschappen in" @@ -4057,7 +4081,6 @@ msgid "MultiNode Set" msgstr "MultiNode groep" #: editor/node_dock.cpp -#, fuzzy msgid "Select a single node to edit its signals and groups." msgstr "Selecteer een Node om Signalen en Groepen aan te passen." @@ -4148,19 +4171,16 @@ msgstr "Laden..." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Move Node Point" -msgstr "Beweeg Punt" +msgstr "Beweeg Knooppunt" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Change BlendSpace1D Limits" -msgstr "Wijzig overlooptijd" +msgstr "Wijzig BlendSpace1D limiet" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Change BlendSpace1D Labels" -msgstr "Wijzig overlooptijd" +msgstr "Wijzig BlendSpace1D labels" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4171,20 +4191,17 @@ msgstr "" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Node Point" -msgstr "Node Toevoegen" +msgstr "Knooppunt Toevoegen" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Animation Point" -msgstr "Voeg Animatie Toe" +msgstr "Voeg Animatiepunt Toe" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Remove BlendSpace1D Point" -msgstr "Verwijder Pad Punt" +msgstr "Verwijder BlendSpace1D Punt" #: editor/plugins/animation_blend_space_1d_editor.cpp msgid "Move BlendSpace1D Node Point" @@ -4236,34 +4253,28 @@ msgid "Open Animation Node" msgstr "Animatieknoop openen" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Triangle already exists." -msgstr "Driehoek bestaat al" +msgstr "Driehoek bestaat al." #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Add Triangle" -msgstr "Variabele Toevoegen" +msgstr "Driehoek Toevoegen" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Change BlendSpace2D Limits" -msgstr "Wijzig overlooptijd" +msgstr "Wijzig BlendSpace2D limiet" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Change BlendSpace2D Labels" -msgstr "Wijzig overlooptijd" +msgstr "Wijzig BlendSpace2D labels" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Remove BlendSpace2D Point" -msgstr "Verwijder Pad Punt" +msgstr "Verwijder BlendSpace2D Punt" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Remove BlendSpace2D Triangle" -msgstr "Verwijder Variabele" +msgstr "Verwijder BlendSpace2D Driehoek" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "BlendSpace2D does not belong to an AnimationTree node." @@ -4271,12 +4282,11 @@ msgstr "BlendSpace2D hoort niet bij een AnimationTree knoop." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "No triangles exist, so no blending can take place." -msgstr "Er bestaan geen driehoeken, blending kan niet plaatsvinden." +msgstr "Er bestaan geen driehoeken, dus mengen kan niet plaatsvinden." #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Toggle Auto Triangles" -msgstr "AutoLoad-Globalen omschakelen" +msgstr "Omschakelen Automatische Driehoeken" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Create triangles by connecting points." @@ -4296,29 +4306,26 @@ msgid "Blend:" msgstr "Mengen:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Parameter Changed" -msgstr "Materiaal Wijzigingen" +msgstr "Parameter veranderd" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Edit Filters" -msgstr "Filters Bewerken" +msgstr "Filters berwerken" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Output node can't be added to the blend tree." msgstr "Output Node kan niet worden toegevoegd aan de blend tree." #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Add Node to BlendTree" -msgstr "Voeg Node(s) Toe Uit Tree" +msgstr "Voeg knoop toe aan BlendTree" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node Moved" -msgstr "Verplaatsingsmodus" +msgstr "Knoop verplaatst" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Unable to connect, port may be in use or connection may be invalid." @@ -4328,26 +4335,22 @@ msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Nodes Connected" -msgstr "Verbonden" +msgstr "Knoop Verbonden" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Nodes Disconnected" -msgstr "Verbinding Verbroken" +msgstr "Knopen Losgekoppeld" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Set Animation" -msgstr "Animatie" +msgstr "Animatie Instellen" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Delete Node" -msgstr "Alles Selecteren" +msgstr "Knoop Verwijderen" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/scene_tree_dock.cpp @@ -4355,14 +4358,12 @@ msgid "Delete Node(s)" msgstr "Knooppunt(en) verwijderen" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Toggle Filter On/Off" -msgstr "Aan-uitschakelaar Track." +msgstr "Schakel Filter Aan/Uit" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Change Filter" -msgstr "Wijzig Anim Lengte" +msgstr "Verander Filter" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "No animation player set, so unable to retrieve track names." @@ -4382,14 +4383,12 @@ msgstr "" "waardoor de spoornamen niet konden gevonden worden." #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Anim Clips" -msgstr "Animatieclips:" +msgstr "Animatieclips" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Audio Clips" -msgstr "Audioclips:" +msgstr "Audioclips" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Functions" @@ -4397,9 +4396,8 @@ msgstr "Functies" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Renamed" -msgstr "Node Naam:" +msgstr "Knoop Hernoemd" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -4412,9 +4410,8 @@ msgid "Edit Filtered Tracks:" msgstr "Bewerk gefilterde sporen:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Enable Filtering" -msgstr "Activeer filtering" +msgstr "Activeer Filtering" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -4435,7 +4432,7 @@ msgstr "Verander Animatie Naam:" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Delete Animation?" -msgstr "Animatie verwijderen?" +msgstr "Animatie wissen?" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -4461,7 +4458,7 @@ msgstr "Meng met volgende aanpassing" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "Wijzig overlooptijd" +msgstr "Wijzig overgangstijd" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" @@ -4549,9 +4546,8 @@ msgid "Enable Onion Skinning" msgstr "\"Onion Skinning\" Inschakelen" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Onion Skinning Options" -msgstr "Ui Schillen" +msgstr "Onion Skinning Opties" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" @@ -4599,22 +4595,22 @@ msgstr "Animatiespeler vastzetten" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "Maak Nieuwe Animatie Aan" +msgstr "Nieuwe Animatie Opstellen" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" -msgstr "Animatie Naam:" +msgstr "Animatienaam:" #: 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 "Foutmelding!" +msgstr "Fout!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" -msgstr "Mengtijden:" +msgstr "Overgangstijden:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" @@ -4625,12 +4621,10 @@ msgid "Cross-Animation Blend Times" msgstr "Cross-animatie mixtijden" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Move Node" -msgstr "Verplaatsingsmodus" +msgstr "Verplaats Knooppunt" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Add Transition" msgstr "Voeg vertaling toe" @@ -4664,19 +4658,16 @@ msgid "Start and end nodes are needed for a sub-transition." msgstr "Start- en eindknopen zijn nodig voor een sub-overgang." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "No playback resource set at path: %s." -msgstr "Niet in resource pad." +msgstr "Geen afspeelresource ingesteld op pad: %s." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Removed" -msgstr "Verwijderd:" +msgstr "Knooppunt Verwijderd" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition Removed" -msgstr "Overgangsknoop" +msgstr "Transitie Verwijderd" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set Start Node (Autoplay)" @@ -4718,6 +4709,11 @@ msgstr "Stel eindanimatie in. Dit is handig voor sub-transities." msgid "Transition: " msgstr "Overgang: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Verschuif Modus" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4888,37 +4884,32 @@ msgid "Request failed, return code:" msgstr "Aanvraag mislukt, retourcode:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed." msgstr "Aanvraag Mislukt." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Cannot save response to:" -msgstr "Kan thema niet opslaan in bestand:" +msgstr "Kan reactie niet opslaan naar:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." -msgstr "" +msgstr "Schrijferror." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" msgstr "Aanvraag mislukt, te veel redirects" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Redirect loop." msgstr "Redirectlus." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed, timeout" -msgstr "Aanvraag mislukt, retourcode:" +msgstr "Aanvraag mislukt, timeout" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "Tijd" +msgstr "Timeout." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." @@ -4961,9 +4952,8 @@ msgid "Idle" msgstr "Inactief" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Install..." -msgstr "Installeer" +msgstr "Installeer.." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Retry" @@ -4978,6 +4968,30 @@ msgid "Download for this asset is already in progress!" msgstr "Download voor dit onderdeel is al bezig!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Recent Bijgewerkt" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Minst Recent Bijgewerkt" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Naam (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Naam (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Licentie (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Licentie (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Eerste" @@ -4999,17 +5013,15 @@ msgstr "Alle" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Geen resultaten voor \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "Importeren" +msgstr "Importeren.." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Plugins..." -msgstr "Plugins" +msgstr "Plugins..." #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" @@ -5025,9 +5037,8 @@ msgid "Site:" msgstr "Site:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support" -msgstr "Ondersteuning..." +msgstr "Ondersteuning" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" @@ -5038,7 +5049,6 @@ msgid "Testing" msgstr "Testen" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Loading..." msgstr "Laden..." @@ -5093,12 +5103,11 @@ msgstr "Raster Stap:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Primary Line Every:" -msgstr "" +msgstr "Primaire Lijn Elke:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "steps" -msgstr "2 stappen" +msgstr "stappen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" @@ -5109,42 +5118,34 @@ msgid "Rotation Step:" msgstr "Rotatie Stap:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Step:" -msgstr "Schaal:" +msgstr "Schaal stap:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Vertical Guide" -msgstr "Verplaats vertical gids" +msgstr "Verplaats verticale gids" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Vertical Guide" msgstr "Maak nieuwe verticale gids" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Vertical Guide" msgstr "Verwijder de verticale gids" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Horizontal Guide" msgstr "Verplaats de horizontale gids" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Horizontal Guide" msgstr "Maak nieuwe horizontale gids" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Horizontal Guide" msgstr "Verwijder de horizontale gids" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Horizontal and Vertical Guides" msgstr "Maak nieuwe horizontale en verticale gidsen" @@ -5173,13 +5174,10 @@ msgid "Move CanvasItem" msgstr "Verplaats CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "" "Children of containers have their anchors and margins values overridden by " "their parent." -msgstr "" -"Waarschuwing: De positie en grootte van de kinderen van een houder worden " -"alleen door hun ouder bepaald." +msgstr "De positie en grootte van de kinderen worden door hun ouder bepaald." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Presets for the anchors and margins values of a Control node." @@ -5191,6 +5189,76 @@ msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." msgstr "" +"Wanneer actief, verplaatsen van de Control-knooppunten veranderd hun ankers " +"in plaats van hun marges." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Linksboven" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Rechtsboves" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Rechtsonder" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Linksonder" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Center links" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Center boven" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Center rechts" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Center onder" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Center" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Linkerbreedte" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Bovenbreedte" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Rechterbreedte" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Onderbreedte" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "VCentrum breedte" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "HCentrum breedte" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "Volledige rechthoek" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Ratio Behouden" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" @@ -5210,6 +5278,8 @@ msgid "" "Game Camera Override\n" "Overrides game camera with editor viewport camera." msgstr "" +"Game Camera Overschrijven\n" +"Overschrijft de Game Camera met de Viewport van de Editor." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5217,39 +5287,36 @@ msgid "" "Game Camera Override\n" "No game instance running." msgstr "" +"Game Camera Overschrijven\n" +"Geen spelinstantie actief." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock Selected" -msgstr "Gereedschappen" +msgstr "Slot Geselecteerd" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Unlock Selected" msgstr "Geselecteerde Verwijderen" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Group Selected" -msgstr "Selectie kopiëren" +msgstr "Selectie Groeperen" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Ungroup Selected" -msgstr "Selectie kopiëren" +msgstr "Selectie Degroeperen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" msgstr "Plak Houding" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Guides" -msgstr "Maak Houding Leeg" +msgstr "Wis hulplijnen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Custom Bone(s) from Node(s)" @@ -5257,9 +5324,8 @@ msgstr "" "Maak één of meerdere op maat gemaakte botten van één of meerdere knooppunten" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Bones" -msgstr "Maak Houding Leeg" +msgstr "Botten wissen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" @@ -5267,7 +5333,7 @@ msgstr "Maak IK Ketting" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" -msgstr "Maak IK Ketting Leeg" +msgstr "IK-Keten wissen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -5339,29 +5405,24 @@ msgid "Pan Mode" msgstr "Verschuif Modus" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Ruler Mode" -msgstr "Uitvoermodus:" +msgstr "Meetmode" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Automatisch schikken omschakelen." +msgstr "Automatisch snappen omschakelen." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Gebruik Uitlijnen" +msgstr "Gebruik slim snappen" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Automatisch schikken omschakelen." +msgstr "Gridsnappen omschakelen." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "Rooster Snap" +msgstr "Gebruik grid snappen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5372,9 +5433,8 @@ msgid "Use Rotation Snap" msgstr "Gebruik Rotatie Snap" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Scale Snap" -msgstr "Gebruik Uitlijnen" +msgstr "Gebruik schaal snap" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" @@ -5385,7 +5445,6 @@ msgid "Use Pixel Snap" msgstr "Gebruik Pixel Uitlijnen" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Smart Snapping" msgstr "Slim Uitlijnen" @@ -5395,40 +5454,35 @@ msgid "Configure Snap..." msgstr "Configureer Snap..." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Parent" -msgstr "Snap naar ouder" +msgstr "Snap naar Ouder" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Anchor" -msgstr "Snap naar node anker" +msgstr "Snap naar Knooppunt Anker" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Sides" -msgstr "Uitlijnen naar node zijden" +msgstr "Uitlijnen naar Knooppunt zijden" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Center" -msgstr "Schik automatisch aan middelpunt knoop" +msgstr "Snap naar middelpunt Knooppunt" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Other Nodes" -msgstr "Uitlijnen naar andere nodes" +msgstr "Snap naar andere nodes" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Guides" -msgstr "Op hulplijnen uitlijnen" +msgstr "Snappen aan gidsen" #: 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 "" -"Vergrendel het geselecteerde object in plaats (kan niet verplaatst worden)." +"Vergrendel het geselecteerde object op zijn plaats (kan niet verplaatst " +"worden)." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5461,9 +5515,8 @@ msgid "Make Custom Bone(s) from Node(s)" msgstr "Maak één of meerdere op maat gemaakte botten van één of meerdere Nodes" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Custom Bones" -msgstr "Maak Botten Leeg" +msgstr "Aangepaste Botten Wissen" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5471,9 +5524,8 @@ msgid "View" msgstr "Weergeven" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Raster Weergeven" +msgstr "Raster Altijd Weergeven" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5485,7 +5537,7 @@ msgstr "Toon linialen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "Toon hulplijnen" +msgstr "Toon gidsen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" @@ -5509,7 +5561,7 @@ msgstr "Raam Selectie" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Preview Canvas Scale" -msgstr "" +msgstr "Voorbeeld Canvas Schaal" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Translation mask for inserting keys." @@ -5524,28 +5576,25 @@ msgid "Scale mask for inserting keys." msgstr "Schaalmasker voor het invoegen van sleutels." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Insert keys (based on mask)." -msgstr "Voeg Sleutel in (Bestaande Banen)" +msgstr "Voeg Sleutel in (gebaseerd op bestaande maskers)." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "" "Auto insert keys when objects are translated, rotated or scaled (based on " "mask).\n" "Keys are only added to existing tracks, no new tracks will be created.\n" "Keys must be inserted manually for the first time." msgstr "" -"Automatische invoegtoetsen bij het vertalen van objecten, geroteerd op " -"schaal (op basis van masker).\n" +"Automatisch sleutels toevoegen als objecten verplaatst, geroteerd of schaal " +"(op basis van masker) worden\n" "Sleutels worden alleen toegevoegd aan bestaande tracks, er worden geen " "nieuwe tracks aangemaakt.\n" "Sleutels moeten voor de eerste keer handmatig worden ingevoerd." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Auto Insert Key" -msgstr "Anim Key Invoegen" +msgstr "Automatisch Sleutel invoegen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5557,7 +5606,7 @@ msgstr "Kopieer Houding" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" -msgstr "Maak Houding Leeg" +msgstr "Houding wissen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" @@ -5568,9 +5617,8 @@ msgid "Divide grid step by 2" msgstr "Deel rasterstap door 2" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Pan View" -msgstr "Achteraanzicht" +msgstr "Panweergave" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" @@ -5595,7 +5643,6 @@ msgid "Error instancing scene from %s" msgstr "Er is iets misgegaan bij het instantiëren van scene vanaf %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Change Default Type" msgstr "Wijzig standaard type" @@ -5608,9 +5655,8 @@ msgstr "" "Sleep & laat los + Alt : Verander node type" #: editor/plugins/collision_polygon_editor_plugin.cpp -#, fuzzy msgid "Create Polygon3D" -msgstr "Creëer Poly" +msgstr "Creëer Polygon3D" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Edit Poly" @@ -5633,14 +5679,13 @@ msgstr "Laad Emissie Masker" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Restart" -msgstr "Herstart Nu" +msgstr "Herstart" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Clear Emission Mask" -msgstr "Leeg Emissie Masker" +msgstr "Emissiemasker wissen" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -5669,9 +5714,8 @@ msgid "Emission Colors" msgstr "Emissie Kleuren" #: editor/plugins/cpu_particles_editor_plugin.cpp -#, fuzzy msgid "CPUParticles" -msgstr "Partikels" +msgstr "CPUParticles" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -5684,22 +5728,20 @@ msgid "Create Emission Points From Node" msgstr "Emissiepunten maken vanuit knooppunt" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Flat 0" -msgstr "Plat0" +msgstr "Plat 0" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Flat 1" -msgstr "Plat1" +msgstr "Plat 1" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease In" -msgstr "" +msgstr "Invloei" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease Out" -msgstr "" +msgstr "Uitvloei" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" @@ -5718,27 +5760,22 @@ msgid "Load Curve Preset" msgstr "Laad Curve Preset" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Add Point" msgstr "Punt toevoegen" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Remove Point" msgstr "Punt verwijderen" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Left Linear" msgstr "Links Lineair" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right Linear" -msgstr "Rechtslijnig" +msgstr "Rechts Lineair" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Load Preset" msgstr "Laad voorinstelling" @@ -5755,9 +5792,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Houd Shift ingedrukt om de raaklijnen individueel te bewerken" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Rechter Klik: Verwijder Punt" +msgstr "Klik rechts om Punt toe te voegen" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5800,22 +5836,20 @@ msgid "This doesn't work on scene root!" msgstr "Dit werkt niet op scene root!" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Trimesh Static Shape" -msgstr "Creëer Trimesh Vorm" +msgstr "Creëer Trimesh Static Shape" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Failed creating shapes!" -msgstr "" +msgstr "Shapes maken mislukt!" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Convex Shape(s)" -msgstr "Creëer Convexe Vorm" +msgstr "Creëer Convex Shape(s)" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "Creëer Navigatie Mesh" +msgstr "Creëer Navigation Mesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." @@ -5836,7 +5870,7 @@ msgstr "Model heeft geen UV in deze laag" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "MeshInstance ontbreekt een Mesh!" +msgstr "MeshInstance bevat geen Mesh!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" @@ -5867,14 +5901,12 @@ msgid "Create Trimesh Collision Sibling" msgstr "Creëer Trimesh Botsing Broer" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Convex Collision Sibling(s)" -msgstr "Creëer Convex Botsing Broer" +msgstr "Creëer Convex Collision Sibling(s)" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Outline Mesh..." -msgstr "Creëer Omlijning Mesh..." +msgstr "Creëer Outline Mesh..." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "View UV1" @@ -5894,20 +5926,25 @@ msgstr "Creëer een contour mesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" -msgstr "Grootte Omlijning:" +msgstr "Omlijningsgrootte:" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" -msgstr "Item %d verwijderen?" +msgstr "Element %d verwijderen?" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshBibilotheek..." #: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" -msgstr "Item Toevoegen" +msgstr "Element toevoegen" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove Selected Item" -msgstr "Verwijder Geselecteerde Item" +msgstr "Geselecteerd element verwijderen" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Import from Scene" @@ -5919,11 +5956,11 @@ msgstr "Update Vanuit Scene" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "Geen mesh bron gespecificeerd (en geen MultiMesh ingesteld in node)." +msgstr "Geen mesh bron aangegeven (en geen MultiMesh ingesteld in knoop)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "Geen mesh bron gespecificeerd (en MultiMesh bevat geen Mesh)." +msgstr "Geen mesh bron aangegeven (en MultiMesh bevat geen Mesh)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." @@ -5931,7 +5968,7 @@ msgstr "Mesh bron is ongeldig (ongeldig pad)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "Mesh bron is ongeldig (niet een MeshInstance)." +msgstr "Mesh bron is ongeldig (geen MeshInstance)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." @@ -5939,7 +5976,7 @@ msgstr "Mesh bron is ongeldig (bevat geen Mesh resource)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." -msgstr "Geen oppervlakte bron gespecificeerd." +msgstr "Geen oppervlakte bron aangegeven." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (invalid path)." @@ -6016,14 +6053,12 @@ msgstr "Creëer Navigatie Polygoon" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles" -msgstr "Converteer Naar Hoofdletters" +msgstr "Zet om in CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" -msgstr "Genereer Zichtbaarheid Rechthoek" +msgstr "Genereer Visibility Rect" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generate Visibility Rect" @@ -6040,26 +6075,23 @@ msgstr "Genereer Tijd (sec):" #: editor/plugins/particles_editor_plugin.cpp msgid "The geometry's faces don't contain any area." -msgstr "" +msgstr "De vlakken van de geometrie bevatten geen enkel gebied." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "The geometry doesn't contain any faces." -msgstr "Node bevat geen geometrie (vlakken)." +msgstr "De geometrie bevat geen vlakken." #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't inherit from Spatial." -msgstr "" +msgstr "\"%s\" erft niet van Spatial." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "\"%s\" doesn't contain geometry." -msgstr "Node bevat geen geometrie." +msgstr "\"%s\" bevat geen geometrie." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "\"%s\" doesn't contain face geometry." -msgstr "Node bevat geen geometrie." +msgstr "\"%s\" bevat geen vlak geometrie." #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" @@ -6119,9 +6151,8 @@ msgid "Add Point to Curve" msgstr "Voeg Punt toe aan Curve" #: editor/plugins/path_2d_editor_plugin.cpp -#, fuzzy msgid "Split Curve" -msgstr "Sluit Curve" +msgstr "Split Curve" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move Point in Curve" @@ -6151,9 +6182,8 @@ msgid "Click: Add Point" msgstr "Klik: Voeg Punt Toe" #: editor/plugins/path_2d_editor_plugin.cpp -#, fuzzy msgid "Left Click: Split Segment (in curve)" -msgstr "Splits Segment (in curve)" +msgstr "Linker Klik: Splits Segment (in kromme)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -6188,7 +6218,7 @@ msgstr "Opties" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Mirror Handle Angles" -msgstr "" +msgstr "Spiegel Hoekhendels" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -6232,7 +6262,6 @@ msgid "Split Segment (in curve)" msgstr "Splits Segment (in curve)" #: editor/plugins/physical_bone_plugin.cpp -#, fuzzy msgid "Move Joint" msgstr "Beweeg Punt" @@ -6242,9 +6271,8 @@ msgid "" msgstr "De Polygon2D skeleteigenschap wijst niet naar een Skeleton2D Node" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Sync Bones" -msgstr "Laat Botten Zien" +msgstr "Synchroniseer Botten" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" @@ -6267,51 +6295,44 @@ msgstr "" "worden via de viewport." #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Polygon & UV" -msgstr "Creëer Poly" +msgstr "Creëer Polygon & UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Maak nieuwe horizontale gids" +msgstr "Creëren Internal Vertex" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "Verwijder In-Controle Punt" +msgstr "Verwijder Internal Vertex" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" msgstr "Ongeldige Polygoon (heeft minimaal 3 verschillende hoekpunten nodig)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Bewerk Poly" +msgstr "Voeg eigen Polygon toe" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Verwijder Poly en punt" +msgstr "Verwijder Custom Polygon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" msgstr "Transformeer UV Map" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Transform Polygon" -msgstr "Transformatie Type" +msgstr "Transformeer Polygon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint Bone Weights" msgstr "Teken Botgewichten" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Open Polygon 2D UV editor." -msgstr "Polygon 2D UV Editor" +msgstr "Open Polygon 2D UV Editor." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" @@ -6322,24 +6343,20 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Beweeg Punt" +msgstr "Punten" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "Polygon->UV" +msgstr "Polygonen" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Bones" -msgstr "Maak Botten" +msgstr "Botten" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Move Points" -msgstr "Beweeg Punt" +msgstr "Beweeg Punten" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6401,12 +6418,11 @@ msgstr "UV->Polygon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" -msgstr "Wis UV" +msgstr "UV wissen" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Settings" -msgstr "Instellingen" +msgstr "Raster Instellingen" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Snap" @@ -6425,34 +6441,28 @@ msgid "Show Grid" msgstr "Raster Weergeven" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Configure Grid:" -msgstr "Configureer Snap" +msgstr "Configureer Raster:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Offset X:" -msgstr "Raster Verplaatsing:" +msgstr "Raster Verplaatsing X:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Offset Y:" -msgstr "Raster Verplaatsing:" +msgstr "Raster Verplaatsing Y:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Step X:" -msgstr "Raster Stap:" +msgstr "Raster Stap X:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Step Y:" -msgstr "Raster Stap:" +msgstr "Raster Stap Y:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Sync Bones to Polygon" -msgstr "Schaal Polygon" +msgstr "Synchroniseer Botten aan Polygoon" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" @@ -6509,69 +6519,75 @@ msgid "AnimationTree has no path set to an AnimationPlayer" msgstr "AnimationTree heeft geen ingesteld pad naar een AnimationPlayer" #: editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Path to AnimationPlayer is invalid" -msgstr "Animatie boom is ongeldig." +msgstr "Pad naar AnimationPlayer is ongeldig" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" -msgstr "Wis Recente Bestanden" +msgstr "'Recente Bestanden' wissen" #: editor/plugins/script_editor_plugin.cpp msgid "Close and save changes?" msgstr "Wijzigingen oplaan en sluiten?" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error writing TextFile:" -msgstr "Error bij het opslaan van TileSet!" +msgstr "Error schrijven TextFile:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Could not load file at:" -msgstr "Niet gevonden titel:" +msgstr "Bestand kon niet worden geladen op:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error saving file!" -msgstr "Error bij het opslaan van TileSet!" +msgstr "Error bij het opslaan van bestand!" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error while saving theme." -msgstr "Fout bij het opslaan van het thema" +msgstr "Fout bij het opslaan van het thema." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error Saving" msgstr "Fout bij het opslaan" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error importing theme." -msgstr "Fout bij import van thema" +msgstr "Fout bij import van thema." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error Importing" msgstr "Fout bij importeren" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New Text File..." -msgstr "Nieuwe Map..." +msgstr "Nieuw Tekst Bestand..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open File" msgstr "Open een Bestand" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Save File As..." msgstr "Opslaan Als..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importeer Thema" @@ -6588,9 +6604,8 @@ msgid "Save Theme As..." msgstr "Thema Opslaan Als..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "%s Class Reference" -msgstr " Klasse Referentie" +msgstr "%s Class Referentie" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -6603,18 +6618,16 @@ msgid "Find Previous" msgstr "Vind Vorige" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Filter scripts" -msgstr "Filter eigenschappen" +msgstr "Filter scripts" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." msgstr "Schakel het alfabetisch sorteren van de methode lijst in of uit." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Filter methods" -msgstr "Filter:" +msgstr "Filter methoden" #: editor/plugins/script_editor_plugin.cpp msgid "Sort" @@ -6645,14 +6658,12 @@ msgid "File" msgstr "Bestand" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open..." -msgstr "Openen" +msgstr "Openen..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Reopen Closed Script" -msgstr "Omschrijving:" +msgstr "Heropen gesloten script" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" @@ -6667,9 +6678,8 @@ msgid "Copy Script Path" msgstr "Kopieer Script Pad" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "History Previous" -msgstr "Geschiedenis voorgaande" +msgstr "Geschiedenis Vorige" #: editor/plugins/script_editor_plugin.cpp msgid "History Next" @@ -6681,9 +6691,8 @@ msgid "Theme" msgstr "Thema" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Import Theme..." -msgstr "Importeer Thema" +msgstr "Importeer Thema..." #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" @@ -6705,10 +6714,6 @@ msgstr "Sluit Docs" msgid "Run" msgstr "Opstarten" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Schakel Scripten Paneel" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Stap In" @@ -6731,23 +6736,20 @@ msgid "Keep Debugger Open" msgstr "Houd Debugger Open" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" -msgstr "Debug met externe editor" +msgstr "Debug met Externe Editor" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open Godot online documentation." -msgstr "Open Godot online documentatie" +msgstr "Open Godot online documentatie." #: editor/plugins/script_editor_plugin.cpp msgid "Request Docs" msgstr "Verzoek documentatie" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Help improve the Godot documentation by giving feedback." -msgstr "Help de Godot-documentatie te verbeteren door feedback te geven" +msgstr "Help de Godot-documentatie te verbeteren door feedback te geven." #: editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." @@ -6788,62 +6790,54 @@ msgid "Debugger" msgstr "Debugger" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" -msgstr "Zoek Hulp" +msgstr "Zoek Resultaten" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Clear Recent Scripts" -msgstr "Maak Leeg" +msgstr "'Recente Scripts' wissen" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Connections to method:" -msgstr "Verbind Aan Node:" +msgstr "Verbindingen aan methode:" #: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Source" -msgstr "Resource" +msgstr "Bron" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Signal" -msgstr "Signalen" +msgstr "Signaal" #: editor/plugins/script_text_editor.cpp msgid "Target" -msgstr "" +msgstr "Doel" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "" "Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." -msgstr "Ontkoppel '%s' van '%s'" +msgstr "" +"Ontbrekende verbonden methode '%s' voor signaal '%s' van knooppunt '%s'." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Line" -msgstr "Regel:" +msgstr "Regel" #: editor/plugins/script_text_editor.cpp msgid "(ignore)" msgstr "(negeren)" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function" -msgstr "Ga Naar Functie..." +msgstr "Ga Naar Functie" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." msgstr "Alleen bronnen uit bestandssysteem kunnen gedropt worden." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Lookup Symbol" -msgstr "Voltooi Symbool" +msgstr "Zoek Symbool" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -6872,17 +6866,16 @@ msgstr "Syntax Markeren" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp msgid "Go To" -msgstr "" +msgstr "Ga Naar" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp msgid "Bookmarks" -msgstr "" +msgstr "Favorieten" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Breakpoints" -msgstr "Punten aanmaken." +msgstr "Breekpunten" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp @@ -6931,21 +6924,18 @@ msgid "Complete Symbol" msgstr "Voltooi Symbool" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Evaluate Selection" -msgstr "Schaal selectie" +msgstr "Evalueer selectie" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" msgstr "Trim Navolgende Spaties" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" msgstr "Converteer Indentatie Naar Spaties" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" msgstr "Converteer Indentatie Naar Tabs" @@ -6954,41 +6944,34 @@ msgid "Auto Indent" msgstr "Auto Indentatie" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." -msgstr "Bestanden Filteren..." +msgstr "Zoeken in bestanden..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" msgstr "Contextuele Hulp" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Toggle Bookmark" msgstr "Toggle Favoriet" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Bookmark" -msgstr "Ga Naar Volgende Breekpunt" +msgstr "Ga naar volgende Favoriet" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Bookmark" -msgstr "Ga Naar Vorige Breekpunt" +msgstr "Ga Naar Vorige Favoriet" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Remove All Bookmarks" -msgstr "Verwijder Alle Items" +msgstr "Verwijder alle Favorieten" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Ga Naar Functie..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." msgstr "Ga Naar Regel..." @@ -7002,23 +6985,20 @@ msgid "Remove All Breakpoints" msgstr "Verwijder Alle Breekpunten" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" -msgstr "Ga Naar Volgende Breekpunt" +msgstr "Ga Naar Volgende Favoriet" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" -msgstr "Ga Naar Vorige Breekpunt" +msgstr "Ga Naar Vorige Favoriet" #: editor/plugins/shader_editor_plugin.cpp -#, fuzzy msgid "" "This shader has been modified on on disk.\n" "What action should be taken?" msgstr "" -"De volgende bestanden zijn nieuwer op de schijf.\n" -"Welke aktie moet worden genomen?:" +"Deze Shader is aangepast op de schijf.\n" +"Welke actie moet worden genomen?" #: editor/plugins/shader_editor_plugin.cpp msgid "Shader" @@ -7030,18 +7010,16 @@ msgstr "" "Dit skelet heeft geen botten, maak een aantal secundaire Bone2D knooppunten." #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Create Rest Pose from Bones" -msgstr "Creëer Emissie Punten Vanuit Mesh" +msgstr "CreëerRest Pose vanuit botten" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Rest Pose to Bones" msgstr "Stel Rustpose in op Botten" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Skeleton2D" -msgstr "Singleton" +msgstr "Skeleton2D" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Make Rest Pose (From Bones)" @@ -7052,23 +7030,20 @@ msgid "Set Bones to Rest Pose" msgstr "Stel Botten in op Rustpose" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical bones" -msgstr "Creëer Navigatie Mesh" +msgstr "Creëer fysieke botten" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Skeleton" msgstr "Skelet" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical skeleton" -msgstr "Subscriptie Maken" +msgstr "Creëer fysiek Skelet" #: editor/plugins/skeleton_ik_editor_plugin.cpp -#, fuzzy msgid "Play IK" -msgstr "Speel" +msgstr "Speel IK" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" @@ -7119,9 +7094,8 @@ msgid "Animation Key Inserted." msgstr "Animatie Key Ingevoegd." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Pitch" -msgstr "Schakelaar" +msgstr "Pitch" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" @@ -7196,14 +7170,12 @@ msgid "Rear" msgstr "Achter" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align Transform with View" -msgstr "Uitlijnen met zicht" +msgstr "Uitlijnen Transform met aanzicht" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align Rotation with View" -msgstr "Arrangeer Selectie naar Aanzicht" +msgstr "Arrangeer Rotatie naar Aanzicht" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." @@ -7214,9 +7186,8 @@ msgid "This operation requires a single selected node." msgstr "Deze bewerking vereist één geselecteerde knooppunt." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock View Rotation" -msgstr "Bekijk Informatie" +msgstr "Vergrendel View Rotatie" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -7259,14 +7230,12 @@ msgid "Audio Listener" msgstr "Audio Luisteraar" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Enable Doppler" -msgstr "Activeer filtering" +msgstr "Activeer Doppler" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Cinematic Preview" -msgstr "Creëren van Mesh Previews" +msgstr "Bioscoop Preview" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" @@ -7297,7 +7266,6 @@ msgid "Freelook Speed Modifier" msgstr "Vrijekijk Snelheid Modificator" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" msgstr "Vrijekijk Snelheid Modificator" @@ -7312,22 +7280,20 @@ msgstr "" "game performance." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "Bekijk Informatie" +msgstr "Bekijk rotatie vergrendeld" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "XForm Dialoog" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Nodes To Floor" -msgstr "Uitlijnen op raster" +msgstr "Snap Knooppunten aan vloer" #: editor/plugins/spatial_editor_plugin.cpp msgid "Couldn't find a solid floor to snap the selection to." -msgstr "" +msgstr "Geen solide vloer gevonden om selectie aan te koppelen." #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7340,13 +7306,12 @@ msgstr "" "Alt+RMB: Diepte selectie" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Use Local Space" -msgstr "Lokale Ruimtemodus (%s)" +msgstr "Gebruik Lokale Ruimtemodus" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "Gebruik Uitlijnen" +msgstr "Gebruik Snap" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -7373,9 +7338,8 @@ msgid "Right View" msgstr "Rechter Zijaanzicht" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Switch Perspective/Orthogonal View" -msgstr "Schakel Perspectief/Orthogonaal aanzicht" +msgstr "Schakel Perspectief/Orthogonaal Zicht" #: editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" @@ -7390,9 +7354,8 @@ msgid "Focus Selection" msgstr "Focus Selectie" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Toggle Freelook" -msgstr "Toggle Favoriet" +msgstr "Toggle Freelook" #: editor/plugins/spatial_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -7400,9 +7363,8 @@ msgid "Transform" msgstr "Transformatie" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Object to Floor" -msgstr "Lijn object uit op vloer" +msgstr "Snap Objecten aan vloer" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." @@ -7433,9 +7395,8 @@ msgid "4 Viewports" msgstr "4 Aanzicht Portalen" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Gizmos" -msgstr "Bekijk Gizmos" +msgstr "Gizmos" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" @@ -7447,9 +7408,8 @@ msgstr "Bekijk Raster" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Settings..." -msgstr "Instellingen" +msgstr "Instellingen..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -7516,29 +7476,24 @@ msgid "Nameless gizmo" msgstr "Naamloos apparaat" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Mesh2D" -msgstr "Creëer Omlijning Mesh" +msgstr "Creëer Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Polygon2D" -msgstr "Creëer Poly" +msgstr "Creëer Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D" -msgstr "Creëer Navigatie Polygoon" +msgstr "Creëer CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create LightOccluder2D" -msgstr "Creëer Occluder Polygon" +msgstr "Creëer LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Sprite is empty!" -msgstr "Mesh is leeg!" +msgstr "Sprite is leeg!" #: editor/plugins/sprite_editor_plugin.cpp msgid "Can't convert a sprite using animation frames to mesh." @@ -7549,77 +7504,64 @@ msgid "Invalid geometry, can't replace by mesh." msgstr "Ongeldige geometrie, kan niet worden vervangen door Mesh." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Mesh2D" -msgstr "Verbind Aan Node:" +msgstr "Converteren naar Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Invalid geometry, can't create polygon." -msgstr "Ongeldige geometrie, kan niet worden vervangen door Mesh." +msgstr "Ongeldige geometrie, kan geen polygon creëren." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Polygon2D" -msgstr "Beweeg Polygon" +msgstr "Converteer naar Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Invalid geometry, can't create collision polygon." -msgstr "Ongeldige geometrie, kan niet worden vervangen door Mesh." +msgstr "Ongeldige geometrie, kan geen collision polygoon creëren." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D Sibling" -msgstr "Creëer Navigatie Polygoon" +msgstr "Creëer CollisionPolygon2D Sibling" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Invalid geometry, can't create light occluder." -msgstr "Ongeldige geometrie, kan niet worden vervangen door Mesh." +msgstr "Ongeldige geometrie, kan geen light occluder creëren." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create LightOccluder2D Sibling" -msgstr "Creëer Occluder Polygon" +msgstr "Creëer LightOccluder2D Sibling" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Sprite" -msgstr "Sprite-Frames" +msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " msgstr "Simplificatie: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Vergroot (Pixels): " +msgstr "Krimpen (Pixels): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " msgstr "Vergroot (Pixels): " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Update Preview" -msgstr "Voorbeeld" +msgstr "Voorbeeld bijwerken" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Settings:" -msgstr "Instellingen" +msgstr "Instellingen:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "No Frames Selected" -msgstr "Raam Selectie" +msgstr "Geen Ramen geselecteerd" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Add %d Frame(s)" -msgstr "Voeg Frame toe" +msgstr "Voeg %d Frame(s) toe" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frame" @@ -7650,19 +7592,16 @@ msgid "(empty)" msgstr "(leeg)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Move Frame" -msgstr "Frame Plakken" +msgstr "Verplaats Frame" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Animations:" -msgstr "Animaties" +msgstr "Animaties:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "New Animation" -msgstr "Animatie" +msgstr "Niewe animatie" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -7673,18 +7612,16 @@ msgid "Loop" msgstr "Lus" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Animation Frames:" -msgstr "Animatie Frames" +msgstr "Animatie Frames:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Add a Texture from File" -msgstr "Texture(n) aan TileSet toevoegen." +msgstr "Voeg Texture van Bestand toe" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frames from a Sprite Sheet" -msgstr "" +msgstr "Frames toevoegen aan Sprite Sheet" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7703,29 +7640,24 @@ msgid "Move (After)" msgstr "Verplaats (Hierna)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Select Frames" -msgstr "Selecteer een Node" +msgstr "Selecteer Frames" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Horizontal:" -msgstr "Horizontaal omdraaien" +msgstr "Horizontaal:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Vertical:" -msgstr "Vertices" +msgstr "Verticaal:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Select/Clear All Frames" -msgstr "Alles Selecteren" +msgstr "Alle frames selecteren/wissen" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Create Frames from Sprite Sheet" -msgstr "Creëer vanuit Scene" +msgstr "Creëer Frames vanuit Sprite Sheet" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "SpriteFrames" @@ -7745,9 +7677,8 @@ msgstr "Snap Modus:" #: editor/plugins/texture_region_editor_plugin.cpp #: scene/resources/visual_shader.cpp -#, fuzzy msgid "None" -msgstr "<Geen>" +msgstr "Geen" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" @@ -7774,9 +7705,8 @@ msgid "Sep.:" msgstr "Separatie:" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "TextureRegion" -msgstr "Textuur Regio" +msgstr "TextureRegion" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" @@ -7795,9 +7725,8 @@ msgid "Remove All" msgstr "Verwijder Alles" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Edit Theme" -msgstr "Bewerk Thema..." +msgstr "Bewerk Thema" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme editing menu." @@ -7824,23 +7753,20 @@ msgid "Create From Current Editor Theme" msgstr "Creëer Derivatie Huidig Editor Thema" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Toggle Button" -msgstr "Muis Knop" +msgstr "Toggel Knop" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Button" -msgstr "Middelste Knop" +msgstr "Knop Uitschakelen" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" msgstr "Item" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Item" -msgstr "Uitgeschakeld" +msgstr "Item Uitschakelen" #: editor/plugins/theme_editor_plugin.cpp msgid "Check Item" @@ -7860,21 +7786,19 @@ msgstr "Radio Item Aangevinkt" #: editor/plugins/theme_editor_plugin.cpp msgid "Named Sep." -msgstr "" +msgstr "Genoemde Sep." #: editor/plugins/theme_editor_plugin.cpp msgid "Submenu" -msgstr "" +msgstr "Submenu" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 1" -msgstr "Item" +msgstr "Subitem 1" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 2" -msgstr "Item" +msgstr "Subitem 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" @@ -7885,9 +7809,8 @@ msgid "Many" msgstr "Veel" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled LineEdit" -msgstr "Uitgeschakeld" +msgstr "LineEdit Uitgeschakeld" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" @@ -7902,13 +7825,12 @@ msgid "Tab 3" msgstr "Tabblad 3" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Editable Item" -msgstr "Variabele Bewerken:" +msgstr "Bewerkbaar Item" #: editor/plugins/theme_editor_plugin.cpp msgid "Subtree" -msgstr "" +msgstr "Subtree" #: editor/plugins/theme_editor_plugin.cpp msgid "Has,Many,Options" @@ -7919,6 +7841,7 @@ msgid "Data Type:" msgstr "Data Type:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Icoon" @@ -7938,20 +7861,22 @@ msgstr "Kleur" msgid "Constant" msgstr "Constante" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "Theme Bestand" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Selectie Verwijderen" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Fix Invalid Tiles" -msgstr "Ongeldige naam." +msgstr "Repareer ongeldige tegels" #: editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Centreer Selectie" +msgstr "Knip Selectie" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -7983,21 +7908,19 @@ msgstr "Transponeren" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Disable Autotile" -msgstr "" +msgstr "Autotile uitschakelen" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Enable Priority" -msgstr "Filters Bewerken" +msgstr "Prioriteit Inschakelen" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Filter tiles" -msgstr "Bestanden Filteren..." +msgstr "Filter tegels" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Give a TileSet resource to this TileMap to use its tiles." -msgstr "" +msgstr "Geef een TileSet-bron aan deze TileMap om de tegels te gebruiken." #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint Tile" @@ -8008,35 +7931,32 @@ msgid "" "Shift+LMB: Line Draw\n" "Shift+Ctrl+LMB: Rectangle Paint" msgstr "" +"Shift+LMB: Lijn Tekenen\n" +"Shift+Ctrl+LMB: Vierkant Tekenen" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" msgstr "Kies Tegel" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate Left" msgstr "Naar links draaien" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate Right" msgstr "Naar rechts draaien" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Flip Horizontally" msgstr "Horizontaal omdraaien" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Flip Vertically" msgstr "Verticaal omdraaien" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear Transform" -msgstr "Transform vrijmaken" +msgstr "Transform wissen" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Add Texture(s) to TileSet." @@ -8055,18 +7975,30 @@ msgid "Merge from Scene" msgstr "Vervoeg vanuit Scene" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "New Autotile" +msgstr "Autotile uitschakelen" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Nieuw %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" -msgstr "Volgend script" +msgstr "Volgend Coördinaat" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the next shape, subtile, or Tile." msgstr "Selecteer de volgende shape, sub-tegel of Tegel." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Previous Coordinate" -msgstr "Vorig tabblad" +msgstr "Vorig Coördinaat" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the previous shape, subtile, or Tile." @@ -8074,43 +8006,70 @@ msgstr "Selecteer de vorige shape, subtegel of Tegel." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Region Mode" -msgstr "Uitvoermodus:" +msgid "Region" +msgstr "Regio Modus" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Collision Mode" -msgstr "Interpolatiemodus" +msgid "Collision" +msgstr "Collision modus" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Occlusion Mode" -msgstr "Bewerk Poly" +msgid "Occlusion" +msgstr "Occlusion Mode" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Navigation Mode" -msgstr "Creëer Navigatie Mesh" +msgid "Navigation" +msgstr "Navigatie Modus" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Bitmask Mode" -msgstr "Rotatiemodus" +msgid "Bitmask" +msgstr "Bitmask Modus" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Priority Mode" -msgstr "Exporteer Modus:" +msgid "Priority" +msgstr "Prioriteit Modus" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Z Index" +msgstr "Index:" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region Mode" +msgstr "Regio Modus" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision Mode" +msgstr "Collision modus" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion Mode" +msgstr "Occlusion Mode" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation Mode" +msgstr "Navigatie Modus" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask Mode" +msgstr "Bitmask Modus" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority Mode" +msgstr "Prioriteit Modus" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon Mode" -msgstr "Verschuif Modus" +msgstr "Icoon Modus" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Z Index Mode" -msgstr "Verschuif Modus" +msgstr "Z Index Modus" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." @@ -8125,9 +8084,8 @@ msgid "Erase bitmask." msgstr "Bitmasker wissen." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new rectangle." -msgstr "Nieuwe knopen maken." +msgstr "Creëer nieuwe driehoek." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." @@ -8151,6 +8109,8 @@ msgstr "Tegelnamen tonen (Alt-toets ingedrukt houden)" msgid "" "Add or select a texture on the left panel to edit the tiles bound to it." msgstr "" +"Voeg een textuur toe aan het linkerpaneel of selecteer deze om de tegels te " +"bewerken." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove selected texture? This will remove all tiles which use it." @@ -8171,9 +8131,8 @@ msgid "Merge from scene?" msgstr "Vervoegen vanuit scene?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Texture" -msgstr "Verwijder Sjabloon" +msgstr "Verwijder Textuur" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." @@ -8188,30 +8147,32 @@ msgstr "" "Klik op een andere Tegel om die te bewerken." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete selected Rect." -msgstr "Verwijder geselecteerde bestanden?" +msgstr "Verwijder geselecteerde Rect." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select current edited sub-tile.\n" "Click on another Tile to edit it." -msgstr "Selecteer zojuist bewerkte sub-tegel." +msgstr "" +"Selecteer huidige sub-tile om te bewerken.\n" +"Klik op een andere Tile om deze te bewerken." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete polygon." -msgstr "Verwijder punten" +msgstr "Verwijder polygoon." #: 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 "Selecteer een sub-tegel om zijn prioriteit te veranderen." +msgstr "" +"LMB: Zet bit aan.\n" +"RMB: Zet bit uit.\n" +"Shift+LMB: Zet wildcard bit.\n" +"Klik op een andere Tile om deze te bewerken." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -8224,208 +8185,180 @@ msgstr "" "Klik op een andere Tegel om deze aan te passen." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select sub-tile to change its priority.\n" "Click on another Tile to edit it." -msgstr "Selecteer een sub-tegel om zijn prioriteit te veranderen." +msgstr "" +"Selecteer een sub-tile om zijn prioriteit aan te passen.\n" +"Klik op een andere Tile om deze te bewerken." #: 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 "Selecteer een sub-tegel om zijn prioriteit te veranderen." +msgstr "" +"Selecteer een sub-tile om de z index aan te passen.\n" +"Klik op een andere Tile om deze te bewerken." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Set Tile Region" -msgstr "Textuur Regio" +msgstr "Stel Tile Region in" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Tile" -msgstr "Map Maken" +msgstr "Maak tegel" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "Tegel Icoon Instellen" +msgstr "Stel Tile Icon in" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Bitmask" -msgstr "Filters Bewerken" +msgstr "Bewerk Tile Bitmask" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Collision Polygon" -msgstr "Wijzig bestaande polygon:" +msgstr "Bewerk Collision Polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Occlusion Polygon" -msgstr "Bewerk Poly" +msgstr "Bewerk Occlusion Polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Navigation Polygon" -msgstr "Creëer Navigatie Polygoon" +msgstr "Bewerk Navigation Polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste Tile Bitmask" -msgstr "Plak Animatie" +msgstr "Plak Tile Bitmask" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "Wis Tegel Bitmasker" +msgstr "Tegel Bitmask wissen" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Concave" -msgstr "Beweeg Polygon" +msgstr "Creëer Polygon Concave" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Convex" -msgstr "Beweeg Polygon" +msgstr "Creëer Polygon Convex" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Tile" -msgstr "Verwijder Sjabloon" +msgstr "Verwijder Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Collision Polygon" -msgstr "Verwijder Poly en punt" +msgstr "Verwijder Collision Polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Occlusion Polygon" -msgstr "Creëer Occluder Polygon" +msgstr "Verwijder Occlusion Polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Navigation Polygon" -msgstr "Creëer Navigatie Polygoon" +msgstr "Verwijder Navigation Polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Priority" -msgstr "Filters Bewerken" +msgstr "Bewerk Tile Priority" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" -msgstr "Wijzig Tegel Z Index" +msgstr "Bewerk Tile Z Index" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Collision Polygon" -msgstr "Creëer Navigatie Polygoon" +msgstr "Creëer Collision Polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Occlusion Polygon" -msgstr "Creëer Occluder Polygon" +msgstr "Creëer Occlusion Polygon" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "This property can't be changed." -msgstr "Deze operatie kan niet uitgevoerd worden zonder scene." +msgstr "Deze eigenschap kan niet worden veranderd." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "TileSet" -msgstr "TileSet..." +msgstr "TileSet" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No VCS addons are available." -msgstr "Naam van primaire Node, indien beschikbaar" +msgstr "Geen VCS addons beschikbaar." #: editor/plugins/version_control_editor_plugin.cpp editor/rename_dialog.cpp msgid "Error" msgstr "Fout" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No commit message was provided" -msgstr "Geen naam opgegeven" +msgstr "Geen commitbericht was gegeven" #: editor/plugins/version_control_editor_plugin.cpp msgid "No files added to stage" -msgstr "" +msgstr "Geen bestanden toegevoegd aan stage" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit" -msgstr "Gemeenschap" +msgstr "Commit" #: editor/plugins/version_control_editor_plugin.cpp msgid "VCS Addon is not initialized" -msgstr "" +msgstr "VCS Addon is niet geïnitialiseerd" #: editor/plugins/version_control_editor_plugin.cpp msgid "Version Control System" -msgstr "" +msgstr "Versie Controle Systeem" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Initialize" -msgstr "Maak Hoofdletters" +msgstr "Initialiseren" #: editor/plugins/version_control_editor_plugin.cpp msgid "Staging area" -msgstr "" +msgstr "staging gebied" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Detect new changes" -msgstr "Nieuwe knopen maken." +msgstr "Detecteer nieuwe veranderingen" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Changes" -msgstr "Wijzig" +msgstr "Wijzigingen" #: editor/plugins/version_control_editor_plugin.cpp msgid "Modified" -msgstr "" +msgstr "Bewerkt" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Renamed" -msgstr "Hernoemen" +msgstr "Hernoemd" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Deleted" -msgstr "Verwijder" +msgstr "Verwijderd" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Typechange" -msgstr "Wijzig" +msgstr "Typewijziging" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage Selected" -msgstr "Geselecteerde Verwijderen" +msgstr "Stage Geselecteerd" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage All" -msgstr "Alles Opslaan" +msgstr "Stage Alles" #: editor/plugins/version_control_editor_plugin.cpp msgid "Add a commit message" -msgstr "" +msgstr "Voeg een vastleggingsbericht toe" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit Changes" -msgstr "Scriptveranderingen synchroniseren" +msgstr "Commit veranderingen" #: editor/plugins/version_control_editor_plugin.cpp #: modules/gdnative/gdnative_library_singleton_editor.cpp @@ -8435,28 +8368,28 @@ msgstr "Status" #: editor/plugins/version_control_editor_plugin.cpp msgid "View file diffs before committing them to the latest version" msgstr "" +"Bekijk de veranderde bestanden voordat ze gebruikt worden in de nieuwste " +"versie" #: editor/plugins/version_control_editor_plugin.cpp msgid "No file diff is active" -msgstr "" +msgstr "Geen bestands veranderingen actief" #: editor/plugins/version_control_editor_plugin.cpp msgid "Detect changes in file diff" -msgstr "" +msgstr "Detecteer verandering in bestanden" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(GLES3 only)" -msgstr "" +msgstr "(Alleen GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Voeg invoer toe" +msgstr "Uitput toevoegen" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar" -msgstr "Schaal:" +msgstr "Scalair" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector" @@ -8464,79 +8397,67 @@ msgstr "Vector" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean" -msgstr "" +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 "Voeg invoer toe" +msgstr "Voer input poort toe" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add output port" -msgstr "" +msgstr "Voeg output poort toe" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port type" -msgstr "Wijzig standaard type" +msgstr "Verander input port type" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change output port type" -msgstr "Wijzig standaard type" +msgstr "Verander output poort type" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port name" -msgstr "Verander Input Naam" +msgstr "Verander input poort naam" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change output port name" -msgstr "Verander Input Naam" +msgstr "Verander output poort name" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Remove input port" -msgstr "Punt verwijderen" +msgstr "Verwijder input poort" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Remove output port" -msgstr "Punt verwijderen" +msgstr "Verwijder output poort" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Set expression" -msgstr "Verander Expressie" +msgstr "Stel expressie in" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Resize VisualShader node" -msgstr "Shader" +msgstr "Verander de grote van de VisualShader knoop" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" msgstr "Uniforme naam instellen" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Set Input Default Port" -msgstr "Stel in als Standaard voor '%s'" +msgstr "Stel standaard invoer poort in" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Node to Visual Shader" -msgstr "Shader" +msgstr "Voer Knooppunt toe aan Visual Shader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Duplicate Nodes" -msgstr "Dupliceer Graaf Knooppunt(en)" +msgstr "Copier Knooppunten" #: editor/plugins/visual_shader_editor_plugin.cpp #: modules/visual_script/visual_script_editor.cpp @@ -8544,404 +8465,409 @@ msgid "Paste Nodes" msgstr "Plak Nodes" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Delete Nodes" -msgstr "Alles Selecteren" +msgstr "Verwijder Knooppunten" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" msgstr "Visuele Shader Invoertype Gewijzigd" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vertex" -msgstr "Vertices" +msgstr "Vertex" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Fragment" -msgstr "Argumenten:" +msgstr "Fragment" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Light" -msgstr "Rechts" +msgstr "Licht" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Show resulted shader code." -msgstr "Creëer Node" +msgstr "Laat shader resultaat zien." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Create Shader Node" msgstr "Maak een Shader knooppunt" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color function." -msgstr "Ga Naar Functie..." +msgstr "Kleur functie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color operator." -msgstr "" +msgstr "Color operator." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Grayscale function." -msgstr "Maak Functie" +msgstr "Grijsschaal functie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." -msgstr "" +msgstr "Converteer HSV vector naar RGB equivalent." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts RGB vector to HSV equivalent." -msgstr "" +msgstr "Converteer RGB vector naar HSV equivalent." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sepia function." -msgstr "Hernoem Functie" +msgstr "Sepia functie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Burn operator." -msgstr "" +msgstr "Burn operator." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Darken operator." -msgstr "" +msgstr "Verdonker operator." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Difference operator." -msgstr "Alleen verschillen" +msgstr "Verschil operator." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Dodge operator." -msgstr "" +msgstr "Ontwijk operator." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "HardLight operator." -msgstr "Verander Scalar Operator" +msgstr "Verander Scalair Operator." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." -msgstr "" +msgstr "Lichter maken operator." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Overlay operator." -msgstr "" +msgstr "Overlap operator." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Screen operator." -msgstr "" +msgstr "Scherm operator." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "SoftLight operator." -msgstr "" +msgstr "SoftLight operator." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color constant." -msgstr "Constante" +msgstr "Kleur Constante." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color uniform." -msgstr "Transform vrijmaken" +msgstr "Kleur uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the %s comparison between two parameters." msgstr "" +"Resulteert het boolean resultaat van de %s vergelijking tussen twee " +"parameters." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Equal (==)" -msgstr "" +msgstr "Gelijk aan (==)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than (>)" -msgstr "" +msgstr "Groter Dan (>)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than or Equal (>=)" -msgstr "" +msgstr "Groter Dan of Gelijk aan (>=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated vector if the provided scalars are equal, greater or " "less." msgstr "" +"Resulteert een geassocieerde vector als de gegeven scalars gelijk, groter of " +"kleiner zijn." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between INF and a scalar " "parameter." msgstr "" +"Resulteert het boolean resultaat van de vergelijking tussen INF en een " +"scalar parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between NaN and a scalar " "parameter." msgstr "" +"Resulteert het boolean resultaat van de vergelijking tussen NaN en een " +"scalar parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than (<)" -msgstr "" +msgstr "Kleiner Dan (<)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than or Equal (<=)" -msgstr "" +msgstr "Kleiner Dan of Gelijk aan (<=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Not Equal (!=)" -msgstr "" +msgstr "Niet Gelijk aan (!=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated vector if the provided boolean value is true or false." msgstr "" +"Resulteert een geassocieerde vector als de gegeven boolean true of false is." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated scalar if the provided boolean value is true or false." msgstr "" +"Resulteert een geassocieerde scalar als de gegeven boolean true of false is." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the comparison between two parameters." msgstr "" +"Resulteert het boolean resultaat van de vergelijking tussen twee parameters." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between INF (or NaN) and a " "scalar parameter." msgstr "" +"Resulteert het boolean resultaat van een vergelijking tussen INF (of NaN) en " +"een scalar parameter." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Boolean constant." -msgstr "Verander Vec Constante" +msgstr "Boolean Constante." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean uniform." -msgstr "" +msgstr "Uniforme Boolean." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for all shader modes." -msgstr "" +msgstr "'%s' invoer parameter voor alle shader modes." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Input parameter." -msgstr "Snap naar ouder" +msgstr "Input parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader modes." -msgstr "" +msgstr "'%s' invoer parameter voor vertex en fragment shader modes." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment and light shader modes." -msgstr "" +msgstr "'%s' invoer parameter voor fragment en light shader modes." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment shader mode." -msgstr "" +msgstr "'%s' invoer parameter voor fragment shader mode." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for light shader mode." -msgstr "" +msgstr "'%s' invoer parameter voor light shader mode." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex shader mode." -msgstr "" +msgstr "'%s' invoer parameter voor vertex shader mode." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader mode." -msgstr "" +msgstr "'%s' invoer parameter voor vertex en fragment shader mode." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar function." -msgstr "Verander Scalar Functie" +msgstr "Scalar functie." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar operator." -msgstr "Verander Scalar Operator" +msgstr "Scalar operator." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "E constant (2.718282). Represents the base of the natural logarithm." msgstr "" +"E-constante (2.718282). Vertegenwoordigt de basis van het natuurlijke " +"logaritme." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Epsilon constant (0.00001). Smallest possible scalar number." -msgstr "" +msgstr "Epsilon-constante (0.00001). Kleinst mogelijk scalar waarde." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Phi constant (1.618034). Golden ratio." -msgstr "" +msgstr "Phi-constante (1.618034). Golden ratio." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Pi/4 constant (0.785398) or 45 degrees." -msgstr "" +msgstr "Pi/4-constante (0.785398) of 45 graden." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Pi/2 constant (1.570796) or 90 degrees." -msgstr "" +msgstr "Pi/2-constante (1.570796) of 90 graden." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Pi constant (3.141593) or 180 degrees." -msgstr "" +msgstr "Pi-constante (3.141593) of 180 graden." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Tau constant (6.283185) or 360 degrees." -msgstr "" +msgstr "Tau-constante (6.283185) of 360 graden." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sqrt2 constant (1.414214). Square root of 2." -msgstr "" +msgstr "Sqrt2-constante (1.414214). Wortel van 2." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the absolute value of the parameter." -msgstr "" +msgstr "Resulteert de absolute waarde van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-cosine of the parameter." -msgstr "" +msgstr "Resulteert de arc-cosinus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic cosine of the parameter." -msgstr "" +msgstr "Resulteert de omgekeerde cosinus hyperbolicus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-sine of the parameter." -msgstr "" +msgstr "Resulteert de arc-sinus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic sine of the parameter." -msgstr "" +msgstr "Resulteert de omgekeerde sinus hyperbolicus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameter." -msgstr "" +msgstr "Resulteert de arctangens van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameters." -msgstr "" +msgstr "Resulteert de arctangens van de parameters." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic tangent of the parameter." -msgstr "" +msgstr "Resulteert de inverse tangent hyperbolicus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Finds the nearest integer that is greater than or equal to the parameter." msgstr "" +"Zoekt het dichtstbijzijnde gehele getal dat groter is dan of gelijk is aan " +"de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Constrains a value to lie between two further values." -msgstr "" +msgstr "Beperkt een waarde tussen twee andere waarden." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the cosine of the parameter." -msgstr "" +msgstr "Resulteert de cosinus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic cosine of the parameter." -msgstr "" +msgstr "Resulteert de cosinus hyperbolicus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in radians to degrees." -msgstr "" +msgstr "Converteert een kwantiteit in radialen naar graden." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-e Exponential." -msgstr "" +msgstr "Base-e Exponentieel." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 Exponential." -msgstr "" +msgstr "Base-2 Exponentieel." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest integer less than or equal to the parameter." msgstr "" +"Zoekt het dichtstbijzijnde gehele getal kleiner dan of gelijk aan de " +"parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Computes the fractional part of the argument." -msgstr "" +msgstr "Berekent het fractionele deel van het argument." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse of the square root of the parameter." -msgstr "" +msgstr "Resulteert de inverse van de vierkantswortel van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Natural logarithm." -msgstr "" +msgstr "Natuurlijk logaritme." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 logarithm." -msgstr "" +msgstr "Base-2 logaritme." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the greater of two values." -msgstr "" +msgstr "Resulteert de hoogste waarde." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the lesser of two values." -msgstr "" +msgstr "Resulteert de laagste waarde." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Linear interpolation between two scalars." -msgstr "" +msgstr "Lineaire interpolatie tussen twee scalars." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the opposite value of the parameter." -msgstr "" +msgstr "Resulteert de omgekeerde waarde van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 - scalar" -msgstr "" +msgstr "1.0 - scalar" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the value of the first parameter raised to the power of the second." msgstr "" +"Resulteert de waarde van de eerste parameter verhoogd tot de macht van de " +"tweede." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in degrees to radians." -msgstr "" +msgstr "Converteert kwantiteit in graden naar radialen." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 / scalar" -msgstr "" +msgstr "1.0 / scalar" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest integer to the parameter." -msgstr "" +msgstr "Vindt het dichtstbijzijnde gehele getal bij de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest even integer to the parameter." -msgstr "" +msgstr "Vindt het dichtstbijzijnde even gehele getal bij de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Clamps the value between 0.0 and 1.0." -msgstr "" +msgstr "Klemt de waarde tussen 0.0 en 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Extracts the sign of the parameter." -msgstr "" +msgstr "Extraheert het signum van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the sine of the parameter." -msgstr "" +msgstr "Resulteert de sinus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic sine of the parameter." -msgstr "" +msgstr "Resulteert de sinus hyperbolicus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the square root of the parameter." -msgstr "" +msgstr "Resulteert de vierkantswortel van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8951,6 +8877,11 @@ 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" +"\n" +"Resulteert 0.0 als 'x' kleiner dan 'edge0' is en resulteert 1.0 als x groter " +"is dan 'edge1'. Anders wordt de waarde geïnterpoleerd tussen 0.0 en 1.0 " +"middels Hermite polynomials." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8958,76 +8889,73 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Step function( scalar(edge), scalar(x) ).\n" +"\n" +"Resulteert 0.0 als 'x' kleiner dan 'edge' anders 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the tangent of the parameter." -msgstr "" +msgstr "Resulteert de tangens van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic tangent of the parameter." -msgstr "" +msgstr "Resulteert de tangens hyperbolicus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the truncated value of the parameter." -msgstr "" +msgstr "Zoekt de afgeronde waarde van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds scalar to scalar." -msgstr "" +msgstr "Voegt scalar aan scalar toe." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Divides scalar by scalar." -msgstr "" +msgstr "Deelt scalar met scalar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies scalar by scalar." -msgstr "" +msgstr "Vermenigvuldigd scalar met scalar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two scalars." -msgstr "" +msgstr "Resulteert de rest van twee scalars." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts scalar from scalar." -msgstr "" +msgstr "Trekt scalar van scalar af." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar constant." -msgstr "Verander Shalar Constante" +msgstr "Scalar constante." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar uniform." -msgstr "Verander Scalar Uniform" +msgstr "Scalar uniforme." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the cubic texture lookup." -msgstr "" +msgstr "Voer cubic texture lookup uit." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the texture lookup." -msgstr "" +msgstr "Voer texture lookup uit." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Cubic texture uniform lookup." -msgstr "Verander Textuur Uniform" +msgstr "Cubic texture uniform lookup." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "2D texture uniform lookup." -msgstr "Verander Textuur Uniform" +msgstr "2D texture uniform lookup." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "2D texture uniform lookup with triplanar." -msgstr "Verander Textuur Uniform" +msgstr "2D texture uniform lookup met triplanar." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform function." -msgstr "Transformatie Dialoog..." +msgstr "Transformatie functie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9039,74 +8967,77 @@ 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 "" +"Bereken het uitproduct van een paar vectoren.\n" +"\n" +"OuterProduct behandelt de eerste parameter 'c' als een kolomvector (matrix " +"met één kolom) en de tweede parameter 'r' als een rijvector (matrix met één " +"rij) en vermenigvuldigt een lineaire algebraïsche matrix 'c * r', waardoor " +"een matrix waarvan het aantal rijen het aantal componenten in 'c' is en " +"waarvan het aantal kolommen het aantal componenten in 'r' is." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes transform from four vectors." -msgstr "" +msgstr "Componeert transformatie van vier vectoren." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Decomposes transform to four vectors." -msgstr "" +msgstr "Ontleedt transformatie van vier vectoren." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the determinant of a transform." -msgstr "" +msgstr "Berekent de determinant van een transformatie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the inverse of a transform." -msgstr "" +msgstr "Berekent de inverse van een transformatie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the transpose of a transform." -msgstr "" +msgstr "Berekent de transpositie van een transformatie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies transform by transform." -msgstr "" +msgstr "Vermenigvuldigt een transformatie met een transformatie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies vector by transform." -msgstr "" +msgstr "Vermenigvuldigt vector met transformatie." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform constant." -msgstr "Transformatie Afgebroken." +msgstr "Transformeer constante." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform uniform." -msgstr "Transformatie Afgebroken." +msgstr "Transformeer uniforme." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector function." -msgstr "Ga Naar Functie..." +msgstr "Vector functie." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector operator." -msgstr "Verander Vec Operator" +msgstr "Vector operatie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes vector from three scalars." -msgstr "" +msgstr "Composteert vector van drie scalars." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Decomposes vector to three scalars." -msgstr "" +msgstr "Ontbindt vector naar drie scalars." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the cross product of two vectors." -msgstr "" +msgstr "Berekent het kruisproduct van twee vectoren." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the distance between two points." -msgstr "" +msgstr "Resulteert de afstand tussen twee punten." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the dot product of two vectors." -msgstr "" +msgstr "Berekent het puntproduct van twee vectoren." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9115,40 +9046,49 @@ 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 "" +"Resulteert de vector met dezelfde richting als de referentie vector. De " +"functie bevat drie vectorparameters: N, de orientatievector, I, de incident " +"vector en Nref, de referentie vector. Als het puntproduct van I en Nref " +"kleiner dan nul is, resulteert waarde N. Anders wordt -N geresulteerd." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the length of a vector." -msgstr "" +msgstr "Berekent de lengte van een vector." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Linear interpolation between two vectors." -msgstr "" +msgstr "Lineaire interpolatie tussen twee vectoren." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Linear interpolation between two vectors using scalar." -msgstr "" +msgstr "Lineaire interpolatie tussen twee vectoren met behulp van een scalar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the normalize product of vector." -msgstr "" +msgstr "Berekent genormaliseerd product van vector." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 - vector" -msgstr "" +msgstr "1.0 - vector" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 / vector" -msgstr "" +msgstr "1.0 / vector" #: 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 "" +"Resulteert de reflectievector (a: invalshoek vector, b : normaal vector )." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the vector that points in the direction of refraction." msgstr "" +"Resulteert de vector met dezelfde richting als de referentie vector. De " +"functie bevat drie vectorparameters: N, de orientatievector, I, de " +"invalsvector en Nref, de referentie vector. Als het puntproduct van I en " +"Nref kleiner dan nul is, resulteert waarde N. Anders wordt -N geresulteerd." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9158,6 +9098,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" +"\n" +"Resulteert 0.0 als 'x' kleiner dan 'edge0' is en resulteert 1.0 als 'x' " +"groter dan 'edge1' is. Anders word de waarde geïnterpoleerd tusse 0.0 en 1.0 " +"met behulp van Hermite polynomials." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9167,6 +9112,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" +"\n" +"Resulteert 0.0 als 'x' kleiner dan 'edge0' is en resulteert 1.0 als 'x' " +"groter dan 'edge1' is. Anders word de waarde geïnterpoleerd tusse 0.0 en 1.0 " +"met behulp van Hermite polynomials." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9174,6 +9124,9 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Step function( vector(edge), vector(x) ).\n" +"\n" +"Resulteert 0.0 als 'x' kleiner dan 'edge' anders 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9181,36 +9134,37 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Step function( scalar(edge), vector(x) ).\n" +"\n" +"Resulteert 0.0 als 'x' kleiner dan 'edge' anders 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds vector to vector." -msgstr "" +msgstr "Voegs vector aan vector toe." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Divides vector by vector." -msgstr "" +msgstr "Trekt vector van vector af." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies vector by vector." -msgstr "" +msgstr "Vermenigvuldigd vector met vector." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two vectors." -msgstr "" +msgstr "Resulteert de rest van twee vectoren." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts vector from vector." -msgstr "" +msgstr "Trekt vector van vector af." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector constant." -msgstr "Verander Vec Constante" +msgstr "Vector constante." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector uniform." -msgstr "Verander Vec Uniform" +msgstr "Uniforme vector." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9218,12 +9172,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 "" +"Aangepaste Godot Shader Language expressie, met aangepast aantal invoer- en " +"uitvoerpoorten. Dit is een directe injectie van code in de vertex/fragment/" +"light functie, niet gebruiken om functie declaraties in te schrijven." #: 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 "" +"Resulteert falloff gebaseerd op het puntproduct van de oppervlakte normaal " +"en kijkrichting van de camera (geeft bijbehorende invoer door)." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9232,71 +9191,92 @@ msgid "" "it later in the Expressions. You can also declare varyings, uniforms and " "constants." msgstr "" +"Aangepaste Godot Shader Language expressie die wordt geplaatst bovenop het " +"resultaat van de shader. Je kunt hierin meerdere functies plaatsen en later " +"aanroepen in de expressies. Je kunt hierin ook varyings, uniformen en " +"constanten declareren." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." -msgstr "" +msgstr "(Enkel Fragment/Light mode) Scalaire afgeleide functie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Vector derivative function." -msgstr "" +msgstr "(Alleen Fragment/Light mode) Vector afgeleide functie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Vector) Derivative in 'x' using local " "differencing." msgstr "" +"(Alleen Fragment/Light modus) (Vector) Afgeleide in 'x' met behulp van " +"lokale differentiatie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Derivative in 'x' using local " "differencing." msgstr "" +"(Alleen Fragment/Light modus) (Scalar) Afgeleide in 'x' met behulp van " +"lokale differentiatie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Vector) Derivative in 'y' using local " "differencing." msgstr "" +"(Alleen Fragment/Light modus) (Vector) Afgeleide in 'Y' met behulp van " +"lokale differentiatie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Derivative in 'y' using local " "differencing." msgstr "" +"(Alleen Fragment/Light modus) (Scalar) Afgeleide in 'Y' met behulp van " +"lokale differentiatie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and " "'y'." msgstr "" +"(Alleen Fragment/Light modus) (Vector) Som van absolute differentiatie in " +"'x' en 'y''." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and " "'y'." msgstr "" +"(Alleen Fragment/Light modus) (Scalar) Som van absolute differentiatie in " +"'x' en 'y''." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "VisualShader" -msgstr "Shader" +msgstr "VisualShader" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Edit Visual Property" -msgstr "Filters Bewerken" +msgstr "Bewerk visuele eigenschap" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Visual Shader Mode Changed" -msgstr "Shader Wijzigingen" +msgstr "Visual shader mode aangepast" #: editor/project_export.cpp msgid "Runnable" msgstr "Uitvoerbaar" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Voer initiële export toe..." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Voeg vorige patches toe..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Verwijder patch '%s' van lijst?" @@ -9323,19 +9303,16 @@ msgstr "" "vooraf ingestelde exportinstellingen of uw eigen exportinstellingen." #: editor/project_export.cpp -#, fuzzy msgid "Release" -msgstr "reeds losgelaten" +msgstr "Release" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "Aan het exporteren voor %s" +msgstr "Exporteer alles" #: editor/project_export.cpp -#, fuzzy msgid "The given export path doesn't exist:" -msgstr "Dit pad bestaat niet." +msgstr "Het gegeven exportpad bestaat niet:" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted:" @@ -9354,11 +9331,12 @@ 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 "" +"Indien aangevinkt, zal deze preset beschikbaar zijn voor one-click deploy.\n" +"Per platform kan maar een preset als runnable gekozen worden." #: editor/project_export.cpp -#, fuzzy msgid "Export Path" -msgstr "Project Exporteren" +msgstr "Export Pad" #: editor/project_export.cpp msgid "Resources" @@ -9409,6 +9387,10 @@ msgid "Make Patch" msgstr "Maak Patch" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Pakket Bestand" + +#: editor/project_export.cpp msgid "Features" msgstr "Functionaliteiten" @@ -9421,14 +9403,12 @@ msgid "Feature List:" msgstr "Kenmerkenlijst:" #: editor/project_export.cpp -#, fuzzy msgid "Script" -msgstr "Voer Script Uit" +msgstr "Script" #: editor/project_export.cpp -#, fuzzy msgid "Script Export Mode:" -msgstr "Project Exporteren" +msgstr "Script Exporteer modus:" #: editor/project_export.cpp msgid "Text" @@ -9455,14 +9435,20 @@ msgid "Export PCK/Zip" msgstr "Exporteer PCK/Zip" #: editor/project_export.cpp -#, fuzzy msgid "Export mode?" -msgstr "Project Exporteren" +msgstr "Exporteer modus?" #: editor/project_export.cpp -#, fuzzy msgid "Export All" -msgstr "Exporteren" +msgstr "Exporteer alles" + +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "Zip-bestand" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Godot Game Pack" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" @@ -9489,9 +9475,8 @@ msgid "Please choose an empty folder." msgstr "Kies alstublieft een lege map." #: editor/project_manager.cpp -#, fuzzy msgid "Please choose a 'project.godot' or '.zip' file." -msgstr "Kies alstublieft een 'project.godot' bestand." +msgstr "Kies alstublieft een 'project.godot' of '.zip' bestand." #: editor/project_manager.cpp msgid "Directory already contains a Godot project." @@ -9506,9 +9491,8 @@ msgid "Imported Project" msgstr "Geïmporteerd Project" #: editor/project_manager.cpp -#, fuzzy msgid "Invalid Project Name." -msgstr "Ongeldige naam." +msgstr "Ongeldige projectnaam." #: editor/project_manager.cpp msgid "Couldn't create folder." @@ -9633,25 +9617,22 @@ msgid "Unnamed Project" msgstr "Naamloos Project" #: editor/project_manager.cpp -#, fuzzy msgid "Missing Project" -msgstr "Importeer bestaand project" +msgstr "Ontbrekend project" #: editor/project_manager.cpp msgid "Error: Project is missing on the filesystem." -msgstr "" +msgstr "Error: Project ontbreekt in het bestandssysteem." #: editor/project_manager.cpp -#, fuzzy msgid "Can't open project at '%s'." -msgstr "Kan project niet openen" +msgstr "Kan project niet openen op '%s'." #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" msgstr "Weet je zeker dat je meer dan één project wilt openen?" #: editor/project_manager.cpp -#, fuzzy msgid "" "The following project settings file does not specify the version of Godot " "through which it was created.\n" @@ -9674,7 +9655,6 @@ msgstr "" "versies van Godot Engine." #: editor/project_manager.cpp -#, fuzzy msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -9703,7 +9683,6 @@ msgstr "" "Godot Engine, en is incompatibel met de huidige versie." #: editor/project_manager.cpp -#, fuzzy msgid "" "Can't run project: no main scene defined.\n" "Please edit the project and set the main scene in the Project Settings under " @@ -9722,9 +9701,8 @@ msgstr "" "Wijzig het project om de initiële import te starten." #: editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run %d projects at once?" -msgstr "Weet je zeker dat je meerdere projecten wilt uitvoeren?" +msgstr "Weet je zeker dat je %d projecten wilt uitvoeren?" #: editor/project_manager.cpp msgid "" @@ -9751,13 +9729,13 @@ msgstr "" "De inhoud van de projectmap wordt niet geraakt." #: editor/project_manager.cpp -#, fuzzy msgid "" "Language changed.\n" "The interface will update after restarting the editor or project manager." msgstr "" -"Taal veranderd. De gebruikersinterface wordt bijgewerkt de volgende keer dat " -"de editor of projectmanager wordt gestart." +"Taal veranderd. \n" +"De gebruikersinterface wordt bij het herstarten van de editor of " +"projectbeheer bijgewerkt." #: editor/project_manager.cpp msgid "" @@ -9769,12 +9747,15 @@ msgstr "" #: editor/project_manager.cpp msgid "Project Manager" -msgstr "Project Manager" +msgstr "Projectbeheer" #: editor/project_manager.cpp -#, fuzzy msgid "Projects" -msgstr "Project" +msgstr "Projecten" + +#: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Laatst bewerkt" #: editor/project_manager.cpp msgid "Scan" @@ -9789,26 +9770,22 @@ msgid "New Project" msgstr "Nieuw Project" #: editor/project_manager.cpp -#, fuzzy msgid "Remove Missing" -msgstr "Punt verwijderen" +msgstr "Ontbrekende verwijderen" #: editor/project_manager.cpp -#, fuzzy msgid "Templates" -msgstr "Verwijder Selectie" +msgstr "Templates" #: editor/project_manager.cpp msgid "Restart Now" msgstr "Herstart Nu" #: editor/project_manager.cpp -#, fuzzy msgid "Can't run project" -msgstr "Verbind..." +msgstr "Kan project niet uitvoeren" #: editor/project_manager.cpp -#, fuzzy msgid "" "You currently don't have any projects.\n" "Would you like to explore official example projects in the Asset Library?" @@ -9841,9 +9818,8 @@ msgstr "" "'\"' bevatten" #: editor/project_settings_editor.cpp -#, fuzzy msgid "An action with the name '%s' already exists." -msgstr "Action '%s' bestaat al!" +msgstr "Action '%s' bestaat al." #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" @@ -9858,9 +9834,8 @@ msgid "Add Input Action Event" msgstr "Toevoegen Input Action Event" #: editor/project_settings_editor.cpp -#, fuzzy msgid "All Devices" -msgstr "Apparaat" +msgstr "Alle Apparaten" #: editor/project_settings_editor.cpp msgid "Device" @@ -9895,24 +9870,20 @@ msgid "Wheel Down Button" msgstr "Muiswiel Omlaag Knop" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Wheel Left Button" -msgstr "Linker Knop." +msgstr "Linker muiswielknop" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Wheel Right Button" -msgstr "Rechter Knop." +msgstr "Rechter muiswielknop" #: editor/project_settings_editor.cpp -#, fuzzy msgid "X Button 1" -msgstr "Knop" +msgstr "X Knop 1" #: editor/project_settings_editor.cpp -#, fuzzy msgid "X Button 2" -msgstr "Knop" +msgstr "X Knop 2" #: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" @@ -9927,9 +9898,8 @@ msgid "Joypad Button Index:" msgstr "Controller Knop Index:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "Schaal Selectie" +msgstr "Verwijder Input Actie" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" @@ -9964,9 +9934,8 @@ msgid "Wheel Down." msgstr "Scrollwiel Omlaag." #: editor/project_settings_editor.cpp -#, fuzzy msgid "Add Global Property" -msgstr "Getter Property Toevoegen" +msgstr "Globale eigenschap toevoegen" #: editor/project_settings_editor.cpp msgid "Select a setting item first!" @@ -9981,9 +9950,8 @@ msgid "Setting '%s' is internal, and it can't be deleted." msgstr "Instelling '%s' is intern, en kan niet worden verwijderd." #: editor/project_settings_editor.cpp -#, fuzzy msgid "Delete Item" -msgstr "Verwijder" +msgstr "Verwijder Voorwerp" #: editor/project_settings_editor.cpp msgid "" @@ -10006,9 +9974,8 @@ msgid "Settings saved OK." msgstr "Instellingen succesvol opgeslagen." #: editor/project_settings_editor.cpp -#, fuzzy msgid "Moved Input Action Event" -msgstr "Toevoegen Input Action Event" +msgstr "Input Action Event verplaatst" #: editor/project_settings_editor.cpp msgid "Override for Feature" @@ -10063,13 +10030,12 @@ msgid "Override For..." msgstr "Override Voor..." #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -#, fuzzy msgid "The editor must be restarted for changes to take effect." -msgstr "Editor moet worden herstart voordat de wijzigingen worden toegepast" +msgstr "Editor moet worden herstart voordat de wijzigingen worden toegepast." #: editor/project_settings_editor.cpp msgid "Input Map" -msgstr "" +msgstr "Input Map" #: editor/project_settings_editor.cpp msgid "Action:" @@ -10124,23 +10090,20 @@ msgid "Locales Filter" msgstr "Lokalisatie filter" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Show All Locales" -msgstr "Laat Botten Zien" +msgstr "Laat alle lokalen zien" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Show Selected Locales Only" -msgstr "Alleen Selectie" +msgstr "Laat alleen geselecteerde lokalen zien" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Filter mode:" -msgstr "Filter:" +msgstr "Filter modus:" #: editor/project_settings_editor.cpp msgid "Locales:" -msgstr "" +msgstr "Lokalen:" #: editor/project_settings_editor.cpp msgid "AutoLoad" @@ -10160,11 +10123,11 @@ msgstr "Nul" #: editor/property_editor.cpp msgid "Easing In-Out" -msgstr "" +msgstr "In-uit vloeien" #: editor/property_editor.cpp msgid "Easing Out-In" -msgstr "" +msgstr "Uit-In vloeien" #: editor/property_editor.cpp msgid "File..." @@ -10179,18 +10142,16 @@ msgid "Assign" msgstr "Toewijzen" #: editor/property_editor.cpp -#, fuzzy msgid "Select Node" -msgstr "Alles Selecteren" +msgstr "Selecteer Knooppunt" #: editor/property_editor.cpp msgid "Error loading file: Not a resource!" msgstr "Fout bij laden bestand: Niet een bron!" #: editor/property_editor.cpp -#, fuzzy msgid "Pick a Node" -msgstr "Plak Nodes" +msgstr "Kies een Knooppunt" #: editor/property_editor.cpp msgid "Bit %d, val %d." @@ -10209,9 +10170,8 @@ msgid "Select Method" msgstr "Selecteer Method" #: editor/rename_dialog.cpp editor/scene_tree_dock.cpp -#, fuzzy msgid "Batch Rename" -msgstr "Hernoemen" +msgstr "Hernoemen meerdere" #: editor/rename_dialog.cpp msgid "Prefix" @@ -10222,37 +10182,32 @@ msgid "Suffix" msgstr "Achtervoegsel" #: editor/rename_dialog.cpp -#, fuzzy msgid "Advanced Options" -msgstr "Uitlijnen opties" +msgstr "Geavanceerde opties" #: editor/rename_dialog.cpp msgid "Substitute" msgstr "Plaatsvervanger" #: editor/rename_dialog.cpp -#, fuzzy msgid "Node name" -msgstr "Node Naam:" +msgstr "Knooppunt naam" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" msgstr "Naam van primaire Node, indien beschikbaar" #: editor/rename_dialog.cpp -#, fuzzy msgid "Node type" -msgstr "Vind Node Type" +msgstr "Knooppunt Type" #: editor/rename_dialog.cpp -#, fuzzy msgid "Current scene name" -msgstr "De huidige scene is nog niet opgeslagen. Toch openen?" +msgstr "Huidige scene naam" #: editor/rename_dialog.cpp -#, fuzzy msgid "Root node name" -msgstr "Hernoemen" +msgstr "Hernoem Wortel Knooppunt" #: editor/rename_dialog.cpp msgid "" @@ -10277,9 +10232,8 @@ msgid "Initial value for the counter" msgstr "Initiële waarde van teller" #: editor/rename_dialog.cpp -#, fuzzy msgid "Step" -msgstr "Stap(pen):" +msgstr "Stap" #: editor/rename_dialog.cpp msgid "Amount by which counter is incremented for each node" @@ -10298,9 +10252,8 @@ msgstr "" "Missende nummers worden opgevuld met nullen." #: editor/rename_dialog.cpp -#, fuzzy msgid "Regular Expressions" -msgstr "Verander Expressie" +msgstr "Reguliere Expressie" #: editor/rename_dialog.cpp msgid "Post-Process" @@ -10323,27 +10276,24 @@ msgid "Case" msgstr "Kapitalisatie" #: editor/rename_dialog.cpp -#, fuzzy msgid "To Lowercase" -msgstr "Kleine letters" +msgstr "Naar kleine letters" #: editor/rename_dialog.cpp -#, fuzzy msgid "To Uppercase" -msgstr "Hoofdletters" +msgstr "Naar hoofdletters" #: editor/rename_dialog.cpp -#, fuzzy msgid "Reset" -msgstr "Reset Zoom" +msgstr "Resetten" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent Node" -msgstr "" +msgstr "Reparent Knooppunt" #: editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" -msgstr "" +msgstr "Reparent Locatie (Selecteer nieuwe Ouder):" #: editor/reparent_dialog.cpp msgid "Keep Global Transform" @@ -10351,7 +10301,7 @@ msgstr "Houd Globale Transformatie" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent" -msgstr "" +msgstr "Reparent" #: editor/run_settings_dialog.cpp msgid "Run Mode:" @@ -10386,6 +10336,8 @@ msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." msgstr "" +"Kan scène '%s' niet instantiëren omdat de huidige scène in één van zijn " +"knopen bestaat." #: editor/scene_tree_dock.cpp msgid "Instance Scene(s)" @@ -10393,15 +10345,15 @@ msgstr "Instantie Scene(s)" #: editor/scene_tree_dock.cpp msgid "Replace with Branch Scene" -msgstr "" +msgstr "Vervangen met vertakte Scene" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" -msgstr "" +msgstr "Initialiseer Kind Scene" #: editor/scene_tree_dock.cpp msgid "Clear Script" -msgstr "Script vrijmaken" +msgstr "Script wissen" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -10417,51 +10369,51 @@ msgstr "Verander knooppunten van ouder" #: editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" -msgstr "" +msgstr "Kopieer Knooppunt(en)" #: editor/scene_tree_dock.cpp msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." msgstr "" +"Kan ouderschap van knopen in geërfde scenes niet aanpassen, volgorde van " +"knopen kan niet veranderen." #: editor/scene_tree_dock.cpp msgid "Node must belong to the edited scene to become root." msgstr "" +"Knooppunt moet eigendom van de bewerkte scene zijn om het wortelknooppunt te " +"worden." #: editor/scene_tree_dock.cpp msgid "Instantiated scenes can't become root" -msgstr "" +msgstr "Scene kan geen wortel worden" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make node as Root" -msgstr "Klinkt logisch!" +msgstr "Maak knooppunt wortelknooppunt" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete %d nodes?" -msgstr "Alles Selecteren" +msgstr "Verwijder %d knooppunten?" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete the root node \"%s\"?" -msgstr "Verwijder Shader Graaf Knooppunt(en)" +msgstr "Verwijder de wortel knoop \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\" and its children?" -msgstr "" +msgstr "Verwijder knooppunt \"%s\" en de kinderen?" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete node \"%s\"?" -msgstr "Alles Selecteren" +msgstr "Verwijder knoop \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." -msgstr "" +msgstr "Kan dit niet uitvoeren met het wortel knooppunt." #: editor/scene_tree_dock.cpp msgid "This operation can't be done on instanced scenes." -msgstr "" +msgstr "Deze operatie kan niet worden uitgevoerd op instanced scenes." #: editor/scene_tree_dock.cpp msgid "Save New Scene As..." @@ -10472,72 +10424,74 @@ msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." msgstr "" +"Het uitzetten van \"editable_instance\" zal ervoor zorgen dat alle " +"eigenschappen van deze knoop naar hun standaardwaarde worden teruggezet." #: 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 "" +"Het aanzetten van \"Als plaatsvervanger laden\" zal \"Bewerkbare kinderen\" " +"uitzetten en ervoor zorgen dat alle eigenschappen van deze knoop naar hun " +"standaardwaarde worden teruggezet." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make Local" -msgstr "Maak Botten" +msgstr "Maak locaal" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "New Scene Root" -msgstr "Klinkt logisch!" +msgstr "Nieuwe wortel Scene" #: editor/scene_tree_dock.cpp msgid "Create Root Node:" msgstr "Hoofdknooppunt maken:" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "2D Scene" -msgstr "Scène" +msgstr "2D Scene" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "3D Scene" -msgstr "Scène" +msgstr "3D Scene" #: editor/scene_tree_dock.cpp msgid "User Interface" msgstr "Gebruikersomgeving" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Other Node" -msgstr "Alles Selecteren" +msgstr "Ander knooppunt" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" msgstr "" +"Kan deze operatie niet uitvoeren op knooppunten van een scene buiten de tak!" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes the current scene inherits from!" -msgstr "" +msgstr "Kan niet werken aan knopen waar de huidige scène van erft!" #: editor/scene_tree_dock.cpp msgid "Attach Script" -msgstr "" +msgstr "Verbind Script" #: editor/scene_tree_dock.cpp msgid "Remove Node(s)" -msgstr "" +msgstr "Verwijder Knooppunt(en)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Change type of node(s)" -msgstr "Verander Input Naam" +msgstr "Verander knooppunt(en) type(n)" #: editor/scene_tree_dock.cpp msgid "" "Couldn't save new scene. Likely dependencies (instances) couldn't be " "satisfied." msgstr "" +"Kon nieuwe scène niet opslaan. Waarschijnlijk konden " +"(instantie-)afhankelijkheden niet voldaan worden." #: editor/scene_tree_dock.cpp msgid "Error saving scene." @@ -10545,27 +10499,25 @@ msgstr "Fout bij het opslaan van de scene." #: editor/scene_tree_dock.cpp msgid "Error duplicating scene to save it." -msgstr "" +msgstr "Fout bij het opslaan van een gekopieerde scene." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Sub-Resources" -msgstr "Resource" +msgstr "Sub-Resource" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" -msgstr "" +msgstr "Erfenis wissen" #: editor/scene_tree_dock.cpp msgid "Editable Children" -msgstr "" +msgstr "Bewerkbare kinderen" #: editor/scene_tree_dock.cpp msgid "Load As Placeholder" -msgstr "" +msgstr "Laden als" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open Documentation" msgstr "Open Godot online documentatie" @@ -10574,36 +10526,32 @@ msgid "Add Child Node" msgstr "Kindknooppunt toevoegen" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Expand/Collapse All" -msgstr "Alles inklappen" +msgstr "Alles Uitklappen/Inklappen" #: editor/scene_tree_dock.cpp msgid "Change Type" msgstr "Verander het type" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Reparent to New Node" -msgstr "Voeg nieuwe knooppunt aan" +msgstr "Reparent naar nieuw knooppunt" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make Scene Root" -msgstr "Klinkt logisch!" +msgstr "Maak Scene wortel" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" -msgstr "" +msgstr "Samenvoegen uit scene" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp msgid "Save Branch as Scene" -msgstr "" +msgstr "Tak opslaan als Scene" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Copy Node Path" -msgstr "Kopiëer Nodes" +msgstr "Kopieer knooppunt pad" #: editor/scene_tree_dock.cpp msgid "Delete (No Confirm)" @@ -10623,16 +10571,15 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Attach a new or existing script for the selected node." -msgstr "" +msgstr "Verbind een nieuw of bestaand script aan het geselecteerde knooppunt." #: editor/scene_tree_dock.cpp msgid "Clear a script for the selected node." -msgstr "Verwijder script van selecteerde knooppunt." +msgstr "Script van geselecteerde knopen wissen." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Remote" -msgstr "Verwijderen" +msgstr "Remote" #: editor/scene_tree_dock.cpp msgid "Local" @@ -10640,27 +10587,23 @@ msgstr "Lokaal" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance? (No Undo!)" -msgstr "" +msgstr "Erfenis wissen? (Kan niet ongedaan worden gemaakt!)" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Toggle Visible" -msgstr "Toggle Verborgen Bestanden" +msgstr "Toggle Zichtbaarheid" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Unlock Node" -msgstr "Alles Selecteren" +msgstr "Knooppunt ontgrendelen" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Button Group" -msgstr "Toevoegen aan Groep" +msgstr "Knoppen Groep" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "(Connecting From)" -msgstr "Verbindingsfout" +msgstr "(Verbonden vanaf)" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" @@ -10671,35 +10614,44 @@ msgid "" "Node has %s connection(s) and %s group(s).\n" "Click to show signals dock." msgstr "" +"Knoop heeft %s verbinding(en) en %s groep(en).\n" +"Klik hier om signaalvenster te tonen." #: editor/scene_tree_editor.cpp msgid "" "Node has %s connection(s).\n" "Click to show signals dock." msgstr "" +"Knoop heeft %s verbinding(en).\n" +"Klik hier om signaalvenster te tonen." #: editor/scene_tree_editor.cpp msgid "" "Node is in %s group(s).\n" "Click to show groups dock." msgstr "" +"Knooppunt zit in %2 groep(en).\n" +"Klink om groepen weer te geven." #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Open Script:" -msgstr "Omschrijving:" +msgstr "Open Script:" #: editor/scene_tree_editor.cpp msgid "" "Node is locked.\n" "Click to unlock it." msgstr "" +"Knooppund vergrendeld.\n" +"Klik om te ontgrendelen." #: editor/scene_tree_editor.cpp msgid "" "Children are not selectable.\n" "Click to make selectable." msgstr "" +"Kinderen zijn niet selecteerbaar.\n" +"Klik hier om selecteerbaar te maken." #: editor/scene_tree_editor.cpp msgid "Toggle Visibility" @@ -10710,10 +10662,12 @@ msgid "" "AnimationPlayer is pinned.\n" "Click to unpin." msgstr "" +"AnimationPlayer is vastgezet.\n" +"Klik om los te maken." #: editor/scene_tree_editor.cpp msgid "Invalid node name, the following characters are not allowed:" -msgstr "" +msgstr "Ongeldige knoopnaam, deze karakters zijn niet toegestaan:" #: editor/scene_tree_editor.cpp msgid "Rename Node" @@ -10721,50 +10675,43 @@ msgstr "Hernoem Node" #: editor/scene_tree_editor.cpp msgid "Scene Tree (Nodes):" -msgstr "" +msgstr "Scene boom (Knooppunten):" #: editor/scene_tree_editor.cpp msgid "Node Configuration Warning!" -msgstr "" +msgstr "Knoop configuratie waarschuwing!" #: editor/scene_tree_editor.cpp msgid "Select a Node" msgstr "Selecteer een Node" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Path is empty." -msgstr "Path is leeg" +msgstr "Pad is leeg." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty." -msgstr "Bestandsnaam is leeg" +msgstr "Bestandsnaam is leeg." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Path is not local." -msgstr "Path is niet lokaal" +msgstr "Pad is niet lokaal." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid base path." -msgstr "Ongeldig basis path" +msgstr "Ongeldig basis Pad." #: editor/script_create_dialog.cpp -#, fuzzy msgid "A directory with the same name exists." -msgstr "Directory met dezelfde naam bestaat al" +msgstr "Een map met dezelfde naam bestaat al." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid extension." -msgstr "Ongeldige extensie" +msgstr "Ongeldige extentie." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Wrong extension chosen." -msgstr "Verkeerde extensie gekozen" +msgstr "Verkeerde extensie gekozen." #: editor/script_create_dialog.cpp msgid "Error loading template '%s'" @@ -10779,148 +10726,124 @@ msgid "Error loading script from %s" msgstr "Fout bij het laden script van %s" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Overrides" -msgstr "Overschrijven" +msgstr "Overschrijvers" #: editor/script_create_dialog.cpp msgid "N/A" msgstr "Niet van toepassing" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script / Choose Location" -msgstr "Open Script/Kies Locatie" +msgstr "Open Script / Kies Locatie" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script" -msgstr "Omschrijving:" +msgstr "Open Script" #: editor/script_create_dialog.cpp -#, fuzzy msgid "File exists, it will be reused." -msgstr "Bestand Bestaat, zal herbruikt worden" +msgstr "Bestand Bestaat, zal hergebruikt worden." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid class name." -msgstr "Ongeldige klassenaam" +msgstr "Ongeldige klassenaam." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid inherited parent name or path." -msgstr "Ongeldige index eigenschap naam." +msgstr "Ongeldige overgenomen oudernaam of pad." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Script is valid." -msgstr "Script geldig" +msgstr "Script is geldig." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Allowed: a-z, A-Z, 0-9, _ and ." -msgstr "Toegestaan: a-z, A-Z, 0-9 en _" +msgstr "Toegestaan: a-z, A-Z, 0-9 en ." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in script (into scene file)." -msgstr "Ingebouwd script (in scene bestand)" +msgstr "Ingebouwd script (in scene bestand)." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Will create a new script file." -msgstr "Maak nieuw script bestand" +msgstr "Maak nieuw script bestand." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Will load an existing script file." -msgstr "Laad bestaand script" +msgstr "Laad bestaand script." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Klasse Naam" +msgstr "Klasse Naam:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Sjabloon" +msgstr "Template:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Ingebouwd Script" +msgstr "Ingebouwd Script:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" -msgstr "" +msgstr "Verbind Knooppunt Script" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Remote " -msgstr "Verwijderen" +msgstr "Remote " #: editor/script_editor_debugger.cpp msgid "Bytes:" -msgstr "" +msgstr "Bytes:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Warning:" -msgstr "Waarschuwingen:" +msgstr "Waarschuwing:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Error:" -msgstr "Fout" +msgstr "Fout:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error" -msgstr "Kopieer Fout" +msgstr "C++ Fout" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error:" -msgstr "Kopieer Fout" +msgstr "C++ Fout:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Source" -msgstr "Resource" +msgstr "C++ Bron" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Source:" -msgstr "Resource" +msgstr "Bron:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Source:" -msgstr "Resource" +msgstr "C++ Bron:" #: editor/script_editor_debugger.cpp msgid "Stack Trace" -msgstr "" +msgstr "Stack Trace" #: editor/script_editor_debugger.cpp msgid "Errors" msgstr "Fouten" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Child process connected." -msgstr "Verbinding Verbroken" +msgstr "Kind proces verbonden." #: editor/script_editor_debugger.cpp msgid "Copy Error" msgstr "Kopieer Fout" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Skip Breakpoints" -msgstr "Punten aanmaken." +msgstr "Breakpoint overslaan" #: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" @@ -10932,11 +10855,11 @@ msgstr "Inspecteer Volgende Instantie" #: editor/script_editor_debugger.cpp msgid "Stack Frames" -msgstr "" +msgstr "Stack Frames" #: editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "" +msgstr "Profiler" #: editor/script_editor_debugger.cpp msgid "Network Profiler" @@ -10944,23 +10867,23 @@ msgstr "Netwerk Profiler" #: editor/script_editor_debugger.cpp msgid "Monitor" -msgstr "" +msgstr "Monitor" #: editor/script_editor_debugger.cpp msgid "Value" -msgstr "" +msgstr "Waarde" #: editor/script_editor_debugger.cpp msgid "Monitors" -msgstr "" +msgstr "Monitors" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." -msgstr "" +msgstr "Kies één of meer elementen van de lijst om de grafiek weer te geven." #: editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" -msgstr "" +msgstr "Lijst van Video Memory gebruik per Resource:" #: editor/script_editor_debugger.cpp msgid "Total:" @@ -10968,11 +10891,11 @@ msgstr "Totaal:" #: editor/script_editor_debugger.cpp msgid "Video Mem" -msgstr "" +msgstr "Video Mem" #: editor/script_editor_debugger.cpp msgid "Resource Path" -msgstr "" +msgstr "Resource pad" #: editor/script_editor_debugger.cpp msgid "Type" @@ -10980,7 +10903,7 @@ msgstr "Type" #: editor/script_editor_debugger.cpp msgid "Format" -msgstr "" +msgstr "Formaat" #: editor/script_editor_debugger.cpp msgid "Usage" @@ -10988,42 +10911,39 @@ msgstr "Gebruik" #: editor/script_editor_debugger.cpp msgid "Misc" -msgstr "" +msgstr "Overig" #: editor/script_editor_debugger.cpp msgid "Clicked Control:" -msgstr "" +msgstr "Control aangeklikt:" #: editor/script_editor_debugger.cpp msgid "Clicked Control Type:" -msgstr "" +msgstr "Controltype aangeklikt:" #: editor/script_editor_debugger.cpp msgid "Live Edit Root:" -msgstr "" +msgstr "Live bewerking wortel:" #: editor/script_editor_debugger.cpp msgid "Set From Tree" -msgstr "" +msgstr "Stel in vanuit boom" #: editor/script_editor_debugger.cpp msgid "Export measures as CSV" -msgstr "" +msgstr "Exporteer metingen als CSV" #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Erase Shortcut" -msgstr "Rustig Afzetten" +msgstr "Verwijder sneltoets" #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Restore Shortcut" -msgstr "Snelkoppelingen" +msgstr "Herstel sneltoets" #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Change Shortcut" -msgstr "Wijzig Ankers" +msgstr "Wijzig Sneltoets" #: editor/settings_config_dialog.cpp msgid "Editor Settings" @@ -11035,15 +10955,15 @@ msgstr "Snelkoppelingen" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "Binding" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" -msgstr "" +msgstr "Verander Licht radius" #: editor/spatial_editor_gizmos.cpp msgid "Change AudioStreamPlayer3D Emission Angle" -msgstr "" +msgstr "Verander AudioStreamPlayer3D Emissiehoek" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" @@ -11051,19 +10971,19 @@ msgstr "Wijzig Camera FOV" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera Size" -msgstr "" +msgstr "Verander Camera grootte" #: editor/spatial_editor_gizmos.cpp msgid "Change Notifier AABB" -msgstr "" +msgstr "Verander Notifier AABB" #: editor/spatial_editor_gizmos.cpp msgid "Change Particles AABB" -msgstr "" +msgstr "Verander Particles AABB" #: editor/spatial_editor_gizmos.cpp msgid "Change Probe Extents" -msgstr "" +msgstr "Verander Probe Extents" #: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp msgid "Change Sphere Shape Radius" @@ -11071,7 +10991,7 @@ msgstr "Wijzig Sphere Vorm Straal" #: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp msgid "Change Box Shape Extents" -msgstr "" +msgstr "Wijzig Box Vorm Extents" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Radius" @@ -11083,11 +11003,11 @@ msgstr "Wijzig Capsule Vorm Hoogte" #: editor/spatial_editor_gizmos.cpp msgid "Change Cylinder Shape Radius" -msgstr "" +msgstr "Wijzig Cylinder Vorm Radius" #: editor/spatial_editor_gizmos.cpp msgid "Change Cylinder Shape Height" -msgstr "" +msgstr "Wijzig Cylinder Vorm Hoogte" #: editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" @@ -11127,19 +11047,19 @@ msgstr "Dubbelklikken om een nieuwe ingave te creëren" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "" +msgstr "Platform:" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform" -msgstr "" +msgstr "Platform" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Dynamic Library" -msgstr "" +msgstr "Dynamische Bibliotheek" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "Voeg een architectuur invoer toe" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "GDNativeLibrary" @@ -11147,12 +11067,11 @@ msgstr "GDNativeBibliotheek" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Enabled GDNative Singleton" -msgstr "" +msgstr "Schakel GDNative Singleton in" #: modules/gdnative/gdnative_library_singleton_editor.cpp -#, fuzzy msgid "Disabled GDNative Singleton" -msgstr "Schakel Update Draaier Uit" +msgstr "Schakel GDNative Singleton uit" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -11168,12 +11087,11 @@ msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "" +msgstr "Tekenreeks met lengte 1 verwacht (één karakter)." #: modules/gdscript/gdscript_functions.cpp -#, fuzzy msgid "Step argument is zero!" -msgstr "step argument is nul!" +msgstr "stap argument is nul!" #: modules/gdscript/gdscript_functions.cpp msgid "Not a script with an instance" @@ -11206,74 +11124,67 @@ msgstr "Ongeldige dictionary van instantie (ongeldige subklassen)" #: modules/gdscript/gdscript_functions.cpp msgid "Object can't provide a length." -msgstr "" +msgstr "Object kan geen lengte geven." #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Next Plane" -msgstr "Volgend tabblad" +msgstr "Volgend Blad" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Previous Plane" -msgstr "Vorig tabblad" +msgstr "Vorig blad" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Plane:" -msgstr "" +msgstr "Blad:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Next Floor" -msgstr "" +msgstr "Volgende verdieping" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Previous Floor" -msgstr "Vorig tabblad" +msgstr "Vorig Verdieping" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Floor:" -msgstr "" +msgstr "Verdieping:" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Delete Selection" -msgstr "Geselecteerde Verwijderen" +msgstr "Verwijder GridMap Selectie" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Fill Selection" -msgstr "Geselecteerde Verwijderen" +msgstr "GridMap vul selectie" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Paste Selection" -msgstr "Geselecteerde Verwijderen" +msgstr "GridMap Plak selectie" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Paint" -msgstr "" +msgstr "GridMap Verf" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Grid Map" -msgstr "" +msgstr "GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Snap View" -msgstr "" +msgstr "Snap Beeld" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Clip Disabled" -msgstr "Uitgeschakeld" +msgstr "Clippen Uitgeschakeld" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Above" -msgstr "" +msgstr "Clip Boven" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Below" -msgstr "" +msgstr "Clip Onder" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit X Axis" @@ -11301,62 +11212,59 @@ msgstr "Cursor Roteer Z" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate X" -msgstr "" +msgstr "Cursor Achter Roteer X" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Y" -msgstr "" +msgstr "Cursor Achter Roteer Y" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Z" -msgstr "" +msgstr "Cursor Achter Roteer Z" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Clear Rotation" -msgstr "" +msgstr "Cursorrotatie wissen" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Clear Selection" -msgstr "Schaal Selectie" +msgstr "Selectie wissen" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Fill Selection" -msgstr "Alle Selectie" +msgstr "Vul selectie" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Settings" -msgstr "" +msgstr "GridMap Instellingen" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Pick Distance:" -msgstr "" +msgstr "Selecteerafstand:" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Filter meshes" -msgstr "Filter:" +msgstr "Filter Meshes" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." -msgstr "" +msgstr "Voeg een MeshLibrary aan deze GridMap toe om meshes te gebruiken." #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" -msgstr "" +msgstr "Klassennaam kan geen gereserveerd sleutelwoord zijn" #: modules/mono/mono_gd/gd_mono_utils.cpp msgid "End of inner exception stack trace" -msgstr "" +msgstr "Einde van innerlijke exception stack trace" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "Bak NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "Leeg de navigatie mesh." +msgstr "Navigatiemesh wissen." #: modules/recast/navigation_mesh_generator.cpp msgid "Setting up Configuration..." @@ -11449,57 +11357,56 @@ msgid "Stack overflow with stack depth: " msgstr "Stack overloop met stack diepte: " #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Signal Arguments" -msgstr "Signaal Argumenten Bewerken:" +msgstr "Bewerken Signaal Argumenten" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Argument Type" -msgstr "Wijzig Array Waarde Type" +msgstr "Wijzig Argument type" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Argument name" -msgstr "Wijzig Array Waarde" +msgstr "Wijzig Argument naam" #: modules/visual_script/visual_script_editor.cpp msgid "Set Variable Default Value" -msgstr "" +msgstr "Stel standaard Variable waarde in" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Set Variable Type" -msgstr "Variabele Bewerken:" +msgstr "Zet variabele type" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Voeg invoerpoort toe" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Voeg uitvoerpoort toe" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Override an existing built-in function." -msgstr "" -"Ongeldige naam. Mag niet botsen met een bestaande ingebouwde type naam." +msgstr "Overschrijft een bestaande ingebouwde functie." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new function." -msgstr "Nieuwe knopen maken." +msgstr "Maak een nieuwe functie." #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" msgstr "Variabelen:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new variable." -msgstr "Nieuwe knopen maken." +msgstr "Creëer een nieuwe variabele." #: modules/visual_script/visual_script_editor.cpp msgid "Signals:" msgstr "Signalen:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new signal." -msgstr "Nieuwe veelhoek aanmaken." +msgstr "Creëer een nieuw signaal." #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" @@ -11526,9 +11433,8 @@ msgid "Add Function" msgstr "Functie Toevoegen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" -msgstr "Punt verwijderen" +msgstr "Verwijder invoer poort" #: modules/visual_script/visual_script_editor.cpp msgid "Add Variable" @@ -11539,44 +11445,30 @@ msgid "Add Signal" msgstr "Signaal Toevoegen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Input Port" -msgstr "Voeg invoer toe" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Voeg invoer toe" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" -msgstr "Punt verwijderen" +msgstr "Verwijder Invoerpoort" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" -msgstr "Punt verwijderen" +msgstr "Verwijder uitvoerpoort" #: modules/visual_script/visual_script_editor.cpp msgid "Change Expression" msgstr "Verander Expressie" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove VisualScript Nodes" -msgstr "Verwijder ongeldige keys" +msgstr "Verwijder VisualScript knooppunten" #: modules/visual_script/visual_script_editor.cpp msgid "Duplicate VisualScript Nodes" -msgstr "" +msgstr "Kopieer VisualScript Knooppunt" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." msgstr "" -"Houdt Meta ingedrukt om een Getter te plaatsen. Houdt Shift ingedrukt om een " -"generiek signatuur te plaatsen." +"%s ingedrukt houden om een Getter te plaatsen. Houd de Shift-toets ingedrukt " +"om een generieke signatuur te plaatsen." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." @@ -11585,10 +11477,8 @@ msgstr "" "generiek signatuur te plaatsen." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold %s to drop a simple reference to the node." -msgstr "" -"Houdt Meta ingedrukt om een simpele referentie naar de node te plaatsen." +msgstr "Houd %s ingedrukt om een simpele referentie naar de knoop te plaatsen." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a simple reference to the node." @@ -11596,9 +11486,8 @@ msgstr "" "Houdt Ctrl ingedrukt om een simpele referentie naar de node te plaatsen." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold %s to drop a Variable Setter." -msgstr "Houdt Meta ingedrukt om een Variable Setter te plaatsen." +msgstr "Houdt %s ingedrukt om een Variable Setter te plaatsen." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Variable Setter." @@ -11611,6 +11500,7 @@ msgstr "Preload Node Toevoegen" #: modules/visual_script/visual_script_editor.cpp msgid "Can't drop nodes because script '%s' is not used in this scene." msgstr "" +"Kan knopen niet plaatsen, script '%s'' wordt niet in deze scène gebruikt." #: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" @@ -11621,6 +11511,9 @@ msgid "" "Can't drop properties because script '%s' is not used in this scene.\n" "Drop holding 'Shift' to just copy the signature." msgstr "" +"Kan eigenschappen niet plaatsen omdat script '%s' niet gebruikt wordt in " +"deze scène.\n" +"Plaats met 'Shift'-toets ingedrukt om allen de signatuur te kopiëren." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11631,66 +11524,56 @@ msgid "Add Setter Property" msgstr "Setter Property Toevoegen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Base Type" -msgstr "Wijzig Array Waarde Type" +msgstr "Verander basis type" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Move Node(s)" -msgstr "Kopiëer Nodes" +msgstr "Verplaats knoop(en)" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove VisualScript Node" -msgstr "Verwijder Variabele" +msgstr "Verwijder VisualScript Knoop" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Nodes" -msgstr "Verbind Aan Node:" +msgstr "Verbind Knopen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Ontkoppel Graaf Knooppunten" +msgstr "Ontkoppel Knopen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Node Data" -msgstr "Verbind Aan Node:" +msgstr "Verbind Knoop gegevens" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Node Sequence" -msgstr "Verbind Aan Node:" +msgstr "Verbind Knooppunt sequentie" #: modules/visual_script/visual_script_editor.cpp msgid "Script already has function '%s'" -msgstr "" +msgstr "Script heeft al de functie '%s'" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Input Value" -msgstr "Wijzig Array Waarde" +msgstr "Wijzig Invoer Waarde" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Resize Comment" -msgstr "Formaat van CanvasItem wijzigen" +msgstr "Formaat wijzigen van commentaar" #: modules/visual_script/visual_script_editor.cpp msgid "Can't copy the function node." -msgstr "" +msgstr "Kan het functieknoop niet kopiëren." #: modules/visual_script/visual_script_editor.cpp msgid "Clipboard is empty!" -msgstr "" +msgstr "Plakbord is leeg!" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Paste VisualScript Nodes" -msgstr "Plak Nodes" +msgstr "Plak VisualScipt knoopen" #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function with a function node." @@ -11703,16 +11586,15 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp msgid "Select at least one node with sequence port." -msgstr "" +msgstr "Selecteer ten minste één knoop met een Sequence poort." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Slechts één sequence invoer kan geselecteerd worden." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Hernoem Functie" +msgstr "Creëer functie" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11735,23 +11617,32 @@ msgid "Editing Signal:" msgstr "Signaal Bewerken:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Tool:" -msgstr "Maak Botten" +msgstr "Maak gereedschap:" #: modules/visual_script/visual_script_editor.cpp msgid "Members:" msgstr "Leden:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy +msgid "Change Base Type:" +msgstr "Verander basis type:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Voeg knooppunten toe..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Functie Toevoegen..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" -msgstr "Functies:" +msgstr "functie_naam" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Select or create a function to edit its graph." -msgstr "Selecteer of maak een functie om de grafiek te bewerken" +msgstr "Selecteer of maak een functie om het diagram te bewerken." #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" @@ -11770,19 +11661,16 @@ msgid "Cut Nodes" msgstr "Knip Nodes" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Hernoem Functie" +msgstr "Creëer Functie" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Verversen" +msgstr "Diagram vernieuwen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Member" -msgstr "Leden" +msgstr "Bewerk Member" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -11842,41 +11730,42 @@ msgstr "" "string (error) zijn." #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Search VisualScript" -msgstr "Verwijder Variabele" +msgstr "Zoek VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "Krijg %s" #: modules/visual_script/visual_script_property_selector.cpp msgid "Set %s" -msgstr "" +msgstr "Zet %s" #: platform/android/export/export.cpp msgid "Package name is missing." -msgstr "" +msgstr "Package naam ontbreekt." #: platform/android/export/export.cpp msgid "Package segments must be of non-zero length." -msgstr "" +msgstr "Pakketsegmenten moeten een lengte ongelijk nul hebben." #: platform/android/export/export.cpp msgid "The character '%s' is not allowed in Android application package names." msgstr "" +"Het karakter '%s' is niet toegestaan in Android application pakketnamen." #: platform/android/export/export.cpp msgid "A digit cannot be the first character in a package segment." -msgstr "" +msgstr "Een getal kan niet het eerste teken zijn in een pakket segment." #: platform/android/export/export.cpp msgid "The character '%s' cannot be the first character in a package segment." msgstr "" +"Het karakter '%s' kan niet het eerste teken zijn in een pakket segment." #: platform/android/export/export.cpp msgid "The package must have at least one '.' separator." -msgstr "" +msgstr "De pakketnaam moet ten minste een '.' bevatten." #: platform/android/export/export.cpp msgid "Select device from the list" @@ -11884,44 +11773,48 @@ msgstr "Selecteer apparaat uit de lijst" #: platform/android/export/export.cpp msgid "ADB executable not configured in the Editor Settings." -msgstr "" +msgstr "ADB niet ingesteld in Editor Settings." #: platform/android/export/export.cpp msgid "OpenJDK jarsigner not configured in the Editor Settings." -msgstr "" +msgstr "OpenJDK niet ingesteld in Editor Settings." #: platform/android/export/export.cpp msgid "Debug keystore not configured in the Editor Settings nor in the preset." -msgstr "" +msgstr "Debug Keystore is niet ingesteld of aanwezig in de Editor Settings." #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." msgstr "" +"Eigen build vereist een geldige Android SDK pad in de Editorinstellingen." #: platform/android/export/export.cpp msgid "Invalid Android SDK path for custom build in Editor Settings." -msgstr "" +msgstr "Ongeldig Android SDK pad voor custom build in Editor Settings." #: platform/android/export/export.cpp msgid "" "Android build template not installed in the project. Install it from the " "Project menu." msgstr "" +"Geen Android bouwsjabloon geïnstalleerd in dit project. Vanuit het " +"projectmenu kan het geïnstalleerd worden." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." -msgstr "" +msgstr "Ongeldige publieke sleutel voor APK -uitbreiding." #: platform/android/export/export.cpp -#, fuzzy msgid "Invalid package name:" -msgstr "Ongeldige klassenaam" +msgstr "Ongeldige pakketnaam:" #: 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 "" +"Geprobeerd met een eigen bouwsjabloon te bouwen, maar versie info ontbreekt. " +"Installeer alstublieft opnieuw vanuit het 'Project' menu." #: platform/android/export/export.cpp msgid "" @@ -11930,116 +11823,96 @@ msgid "" " Godot Version: %s\n" "Please reinstall Android build template from 'Project' menu." msgstr "" +"Android buildversie onverenigbaar:\n" +" Template geïnstalleerd: %s\n" +" Godot versie: %s\n" +"Herinstalleer Android build template vanuit het 'Project' menu." #: platform/android/export/export.cpp msgid "Building Android Project (gradle)" -msgstr "" +msgstr "Bouwen van Android Project (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 "" +"Bouwen van Android Project mislukt, controleer de output voor de fout.\n" +"Zie docs.godotengine.org voor Android documentatie." #: platform/android/export/export.cpp msgid "No build apk generated at: " -msgstr "" +msgstr "Geen build APK gegeneerd op: " #: platform/iphone/export/export.cpp msgid "Identifier is missing." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" +msgstr "Identifier ontbreekt." #: platform/iphone/export/export.cpp -#, fuzzy msgid "The character '%s' is not allowed in Identifier." -msgstr "Naam is geen geldige identifier:" - -#: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" +msgstr "Het karakter '%s' is geen geldige identifier." #: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" +"App Store Team ID niet gespecificeerd - kan het project niet configureren." #: platform/iphone/export/export.cpp -#, fuzzy msgid "Invalid Identifier:" -msgstr "Naam is geen geldige identifier:" +msgstr "Ongeldige identifier:" #: platform/iphone/export/export.cpp msgid "Required icon is not specified in the preset." -msgstr "" +msgstr "Vereist icoon is niet gespecificeerd in de preset." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Stop HTTP Server" #: platform/javascript/export/export.cpp msgid "Run in Browser" -msgstr "" +msgstr "Uitvoeren in Browser" #: platform/javascript/export/export.cpp msgid "Run exported HTML in the system's default browser." msgstr "" +"Voer de geëxporteerde HTML uit in de standaard browser van het systeem." #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not write file:" -msgstr "Map kon niet gemaakt worden." +msgstr "Kon bestand niet schrijven:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not open template for export:" -msgstr "Map kon niet gemaakt worden." +msgstr "Kon template niet openen voor export:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Invalid export template:" -msgstr "Ongeldige index eigenschap naam." +msgstr "Ongeldige export template:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not read custom HTML shell:" -msgstr "Map kon niet gemaakt worden." +msgstr "Kon de custom HTML shell niet lezen:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Could not read boot splash image file:" -msgstr "Map kon niet gemaakt worden." +msgstr "Kon de opstartafbeelding niet lezen:" #: platform/javascript/export/export.cpp -#, fuzzy msgid "Using default boot splash image." -msgstr "Map kon niet gemaakt worden." +msgstr "Gebruik de standaard opstartafbeelding." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid package short name." -msgstr "Ongeldige klassenaam" +msgstr "Ongeldige pakket korte naam." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid package unique name." -msgstr "Ongeldige unieke naam." +msgstr "Ongeldige pakket unieke naam." #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid package publisher display name." -msgstr "Ongeldige unieke naam." +msgstr "Ongeldige pakket uitgevernaam." #: platform/uwp/export/export.cpp msgid "Invalid product GUID." @@ -12089,7 +11962,6 @@ msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "Ongeldige afmetingen van splash screen afbeelding (moet 620×300 zijn)." #: 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." @@ -12156,15 +12028,16 @@ msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"CPUParticles2D vereist een CanvasItemMaterial met \"Particles Animation\" " +"ingeschakeld." #: scene/2d/light_2d.cpp -#, fuzzy msgid "" "A texture with the shape of the light must be supplied to the \"Texture\" " "property." msgstr "" -"Een textuur met de vorm van het licht moet worden aangeboden in de 'texture' " -"eigenschap." +"Een textuur met de vorm van het licht moet in de 'Texture' eigenschap worden " +"aangegeven." #: scene/2d/light_occluder_2d.cpp msgid "" @@ -12174,11 +12047,10 @@ msgstr "" "laten werken." #: scene/2d/light_occluder_2d.cpp -#, fuzzy msgid "The occluder polygon for this occluder is empty. Please draw a polygon." msgstr "" "De occluder polygoon van deze occluder is leeg. Teken alsjeblieft een " -"polygoon!" +"polygoon." #: scene/2d/navigation_polygon.cpp msgid "" @@ -12209,18 +12081,26 @@ msgid "" "Use the CPUParticles2D node instead. You can use the \"Convert to " "CPUParticles\" option for this purpose." msgstr "" +"GPU-gebaseerde particles worden niet ondersteund door de GLES2-" +"stuurprogramma.\n" +"Gebruik in plaats daarvan een CPUParticles2D knoop. De \"Zet om in " +"CPUParticles\" optie kan hiervoor gebruikt worden." #: 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 "" +"Een materiaal om de particles te verwerken is niet aangegeven, dus geen " +"gedrag is gedefinieerd." #: scene/2d/particles_2d.cpp msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Particles2D animatie heeft een CanvasItemMaterial nodig met \"Particles " +"Animation\" aan." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -12232,6 +12112,9 @@ msgid "" "by the physics engine when running.\n" "Change the size in children collision shapes instead." msgstr "" +"Grootteveranderingen van een RigidBody2D (in Character- of Rigidmodus) zal " +"overschreven worden door de physics engine als het spel start.\n" +"Verander in plaats daarvan de grootte van CollisionShapes in de kinderen." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." @@ -12240,89 +12123,95 @@ msgstr "" #: scene/2d/skeleton_2d.cpp msgid "This Bone2D chain should end at a Skeleton2D node." -msgstr "" +msgstr "Een Bone2D ketting moet eindigen op een Skeleton2D Knooppunt." #: scene/2d/skeleton_2d.cpp msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." msgstr "" +"Een Bone2D werkt alleen met een Skeleton2D of een andere Bone2D knooppunt " +"als ouder." #: scene/2d/skeleton_2d.cpp msgid "" "This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." msgstr "" +"Dit bot heeft geen correcte REST pose. Deze kan in een Skeleton2D knoop " +"gezet worden." #: 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 "" -"CollisionShape2D dient enkel om een bots vorm te koppelen aan een node " -"afgeleid van CollisionObject2D. Gebruik het alsjeblieft als een child van " -"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D etc. om ze een vorm te " -"geven." +"TileMap met de optie \"Use Parent\" aan heeft een CollisionShape2D-ouder " +"nodig om vormen aan te geven. De TileMap hoort een kind van een Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D enz. knoop te zijn om ze een vorm " +"te geven." #: scene/2d/visibility_notifier_2d.cpp -#, fuzzy msgid "" "VisibilityEnabler2D works best when used with the edited scene root directly " "as parent." msgstr "" -"VisibilityEnable2D werkt het beste wanneer het gebruikt wordt met de " -"aangepaste scene root direct als ouder." +"VisibilityEnable2D werkt het beste wanneer het gebruikt wordt met de wortel " +"van de aangepaste scène als directe ouder." #: scene/3d/arvr_nodes.cpp msgid "ARVRCamera must have an ARVROrigin node as its parent." -msgstr "" +msgstr "ARVRCamera moet een ARVROrigin knooppunt als ouder hebben." #: scene/3d/arvr_nodes.cpp msgid "ARVRController must have an ARVROrigin node as its parent." -msgstr "" +msgstr "ARVRController moet een ARVROrigin knooppunt als ouder hebben." #: 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 "" +"Het controller ID moet ongelijk 0 zijn, anders zal deze controller niet " +"verbonden worden met een werkelijke controller." #: scene/3d/arvr_nodes.cpp msgid "ARVRAnchor must have an ARVROrigin node as its parent." -msgstr "" +msgstr "ARVRAnchor moet een ARVROrigin knooppunt als ouder hebben." #: 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 "" +"Het anker ID moet ongelijk 0 zijn, anders zal dit anker niet verbonden " +"worden met een werkelijk anker." #: scene/3d/arvr_nodes.cpp msgid "ARVROrigin requires an ARVRCamera child node." -msgstr "" +msgstr "ARVROrigin heeft een ARVRCamera nodig als kind." #: scene/3d/baked_lightmap.cpp msgid "%d%%" -msgstr "" +msgstr "%d%%" #: scene/3d/baked_lightmap.cpp msgid "(Time Left: %d:%02d s)" -msgstr "" +msgstr "(Tijd resterend: %d:%02d s)" #: scene/3d/baked_lightmap.cpp msgid "Plotting Meshes: " -msgstr "" +msgstr "Plotten Meshes: " #: scene/3d/baked_lightmap.cpp msgid "Plotting Lights:" -msgstr "" +msgstr "Plotten Light:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" -msgstr "" +msgstr "Plotten Voltooid" #: scene/3d/baked_lightmap.cpp msgid "Lighting Meshes: " -msgstr "" +msgstr "Light Meshes: " #: scene/3d/collision_object.cpp msgid "" @@ -12360,43 +12249,49 @@ msgstr "" "van Area, StaticBody, RigidBody, KinematicBody etc. om ze een vorm te geven." #: scene/3d/collision_shape.cpp -#, fuzzy msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it." msgstr "" -"Een vorm moet gegeven worden om CollisionShape te laten werken. Maak " -"alsjeblieft een vorm resource voor deze!" +"Om CollisionShape te laten werken, hoort het een Shape te hebben. Maak " +"hiervoor alstublieft een Shape bron aan." #: 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 "" +"Een vlak als vorm werkt niet goed en zal verwijderd worden in toekomstige " +"versies. Gebruik wordt afgeraden." #: scene/3d/cpu_particles.cpp msgid "Nothing is visible because no mesh has been assigned." -msgstr "" +msgstr "Niets is zichtbaar want geen mesh is toegewezen." #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial whose " "Billboard Mode is set to \"Particle Billboard\"." msgstr "" +"CPUParticles animatie heeft een SpatialMaterial nodig met \"BillBoard Mode\" " +"op de waarde \"Particle Billboard\"." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" -msgstr "" +msgstr "Plotten van Meshes" #: scene/3d/gi_probe.cpp msgid "" "GIProbes are not supported by the GLES2 video driver.\n" "Use a BakedLightmap instead." msgstr "" +"GIProbes worden niet ondersteund door het GLES2 grafische stuurprogramma.\n" +"Gebruik in plaats daarvan een BakedLightmap." #: scene/3d/light.cpp msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." msgstr "" +"Een SpotLight met een hoek breder dan 90 graden kan geen schaduwen werpen." #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." @@ -12417,28 +12312,37 @@ msgid "" "Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" "\" option for this purpose." msgstr "" +"Op GPU-gebaseerde particles worden niet ondersteund door het GLES2 grafische " +"stuurprogramma.\n" +"Gebruik in plaats daarvan een CPUParticles knoop. De optie \"Zet om in " +"CPUParticles\" kan hiervoor gebruikt worden." #: scene/3d/particles.cpp msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" +"Niets is zichtbaar want meshes zijn niet toegewezen aan de tekendoorlopen " +"(draw passes)." #: scene/3d/particles.cpp msgid "" "Particles animation requires the usage of a SpatialMaterial whose Billboard " "Mode is set to \"Particle Billboard\"." msgstr "" +"Particles animatie heeft een SpatialMaterial nodig met \"BillBoard Mode\" op " +"de waarde \"Particle Billboard\"." #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D werkt alleen wanneer het een kind van een Path2D node is." +msgstr "PathFollow werkt alleen wanneer het een kind van een Path knoop is." #: scene/3d/path.cpp msgid "" "PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " "parent Path's Curve resource." msgstr "" +"Een PathFollow met \"Rotation Mode\" op \"ROTATION_ORIENTED\" vereist dat de " +"\"Up Vector\" van de Curve bron in de ouder Path aan staat." #: scene/3d/physics_body.cpp msgid "" @@ -12446,18 +12350,21 @@ msgid "" "by the physics engine when running.\n" "Change the size in children collision shapes instead." msgstr "" +"Grootteveranderingen van een RigidBody (in Character- of Rigidmodus) zal " +"overschreven worden door de physics engine als het spel start.\n" +"Verander in plaats daarvan de grootte van CollisionShapes in de kinderen." #: scene/3d/remote_transform.cpp -#, fuzzy msgid "" "The \"Remote Path\" property must point to a valid Spatial or Spatial-" "derived node to work." msgstr "" -"Pad eigenschap moet verwijzen naar een geldige Spatial node om te werken." +"De \"Remote Path\" eigenschap moet wijzen naar een geldige Spatial (of van " +"Spatial afgeleide) knoop om te werken." #: scene/3d/soft_body.cpp msgid "This body will be ignored until you set a mesh." -msgstr "" +msgstr "Dit lichaam zal worden genegeerd totdat je een mesh instelt." #: scene/3d/soft_body.cpp msgid "" @@ -12465,27 +12372,33 @@ msgid "" "running.\n" "Change the size in children collision shapes instead." msgstr "" +"Grootteveranderingen van een SoftBody (in Character- of Rigidmodus) zal " +"overschreven worden door de physics engine als het spel start.\n" +"Verander de grootte van CollisionShapes in de kinderen." #: 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 "" -"Een SpriteFrames resource moet gemaakt of gegeven worden in de 'Frames' " -"eigenschap om AnimatedSprite3D frames te laten tonen." +"Een SpriteFrames bron moet in de 'Frames' eigenschap gemaakt of gegeven " +"worden om AnimatedSprite3D frames te laten tonen." #: scene/3d/vehicle_body.cpp msgid "" "VehicleWheel serves to provide a wheel system to a VehicleBody. Please use " "it as a child of a VehicleBody." msgstr "" +"VehicleWheel dient ervoor een VehicleBody met een wielsysteem te voorzien. " +"Gebruik het als kind van een VehicleBody." #: scene/3d/world_environment.cpp msgid "" "WorldEnvironment requires its \"Environment\" property to contain an " "Environment to have a visible effect." msgstr "" +"WorldEnvironment vereist dat de \"Environment\" eigenschap een Environment " +"heeft om een zichtbaar effect te hebben." #: scene/3d/world_environment.cpp msgid "" @@ -12499,33 +12412,32 @@ 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 "" +"Deze WorldEnvironment wordt genegeerd. Voeg een Camera (voor 3D scènes) toe " +"of zet de \"Background Mode\" naar Canvas (voor 2D scènes)." #: scene/animation/animation_blend_tree.cpp msgid "On BlendTree node '%s', animation not found: '%s'" -msgstr "" +msgstr "In BlendTree knoop '%s', animatie niet gevonden: '%s'" #: scene/animation/animation_blend_tree.cpp -#, fuzzy msgid "Animation not found: '%s'" -msgstr "Animatie Tools" +msgstr "Animatie niet gevonden: '%s'" #: scene/animation/animation_tree.cpp msgid "In node '%s', invalid animation: '%s'." -msgstr "" +msgstr "In knoop '%s', ongeldige animatie: '%s'." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Invalid animation: '%s'." -msgstr "FOUTMELDING: Invalide animatie naam!" +msgstr "Ongeldige animatie: '%s'." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Nothing connected to input '%s' of node '%s'." -msgstr "Ontkoppel '%s' van '%s'" +msgstr "Niets verbonden met invoer '%s' van knoop '%s'." #: scene/animation/animation_tree.cpp msgid "No root AnimationNode for the graph is set." -msgstr "" +msgstr "Geen AnimationNode wortel is voor deze graaf aangegeven." #: scene/animation/animation_tree.cpp msgid "Path to an AnimationPlayer node containing animations is not set." @@ -12536,37 +12448,35 @@ msgstr "" #: scene/animation/animation_tree.cpp msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node." msgstr "" +"Het pad naar de AnimationPlayer leidt niet naar een AnimationPlayer knoop." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "The AnimationPlayer root node is not a valid node." -msgstr "Animatie boom is ongeldig." +msgstr "De AnimationPlayer wortel is een ongeldig knoop." #: scene/animation/animation_tree_player.cpp msgid "This node has been deprecated. Use AnimationTree instead." -msgstr "" +msgstr "Deze knoop is verouderd. Gebruik in plaats daarvan AnimationTree." #: scene/gui/color_picker.cpp msgid "Pick a color from the screen." -msgstr "" +msgstr "Kies een kleur van het scherm." #: scene/gui/color_picker.cpp msgid "HSV" -msgstr "" +msgstr "HSV" #: scene/gui/color_picker.cpp -#, fuzzy msgid "Raw" -msgstr "Yaw" +msgstr "Rauw" #: scene/gui/color_picker.cpp msgid "Switch between hexadecimal and code values." -msgstr "" +msgstr "Wissel tussen hexadecimaal en codewaarden." #: scene/gui/color_picker.cpp -#, fuzzy msgid "Add current color as a preset." -msgstr "Huidige kleur als een preset toevoegen" +msgstr "Huidige kleur als voorkeuze toevoegen." #: scene/gui/container.cpp msgid "" @@ -12575,15 +12485,18 @@ msgid "" "If you don't intend to add a script, use a plain Control node instead." msgstr "" "Container op zich dient geen doel, tenzij een script de plaatsing van de " -"kindknooppunten bepaalt.\n" +"kinderen bepaalt.\n" "Als je niet van plan bent om een script toe te voegen, gebruik dan een " -"gewone Control node." +"gewone Control knoop." #: 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 "" +"De Hint Tooltip zal niet worden getoond omdat Mouse Filter van deze knoop op " +"\"Ignore\" staat. Zet Mouse Filter op \"Stop\" of \"Pass\" om dit op te " +"lossen." #: scene/gui/dialogs.cpp msgid "Alert!" @@ -12591,22 +12504,21 @@ msgstr "Alarm!" #: scene/gui/dialogs.cpp msgid "Please Confirm..." -msgstr "Bevestig Alsjeblieft..." +msgstr "Bevestig alsjeblieft..." #: 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 " "running." msgstr "" -"Standaard verbergen pop-ups zich tenzij je popup() aanroept of één van de " -"popup*() functies. Ze zichtbaar maken om te bewerken is prima, maar ze " -"zullen zich verbergen bij het uitvoeren." +"Standaard worden pop-ups verborgen, tenzij je popup() aanroept of één van de " +"popup*() methoden. Ze zichtbaar maken om te bewerken is prima, maar ze " +"zullen zich verbergen bij het draaien van het spel." #: scene/gui/range.cpp msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." -msgstr "" +msgstr "Als \"Exp Edit\" aanstaat, moet \"Min Value\" groter zijn dan nul." #: scene/gui/scroll_container.cpp msgid "" @@ -12614,19 +12526,21 @@ msgid "" "Use a container as child (VBox, HBox, etc.), or a Control and set the custom " "minimum size manually." msgstr "" +"ScrollContainer hoort te werken met een enkel Control kind.\n" +"Gebruik een houder (VBox, Hbox, enz.) of een Control als kind en zet de " +"minimale grootte handmatig." #: scene/gui/tree.cpp msgid "(Other)" msgstr "(Andere)" #: scene/main/scene_tree.cpp -#, fuzzy msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." msgstr "" -"Standaard Omgeving gespecificeerd in Project Instellingen (Rendering -> " -"Viewport -> Standaard Omgeving) kan niet worden geladen." +"De standaard Environment zoals aangegeven in Projectinstellingen " +"(Rendering→Environment→Default Environment) kon niet worden geladen." #: scene/main/viewport.cpp msgid "" @@ -12641,34 +12555,32 @@ msgstr "" "RenderTarget van en wijs zijn interne texture toe aan een node om te tonen." #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid source for preview." -msgstr "Ongeldige bron voor shader." +msgstr "Ongeldige bron voor voorvertoning." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for shader." msgstr "Ongeldige bron voor shader." #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid comparison function for that type." -msgstr "Ongeldige bron voor shader." +msgstr "Ongeldige vergelijkingsfunctie voor dat type." #: servers/visual/shader_language.cpp msgid "Assignment to function." -msgstr "" +msgstr "Toewijzing aan functie." #: servers/visual/shader_language.cpp msgid "Assignment to uniform." -msgstr "" +msgstr "Toewijzing aan uniform." #: servers/visual/shader_language.cpp msgid "Varyings can only be assigned in vertex function." -msgstr "" +msgstr "Varyings kunnen alleen worden toegewezenin vertex functies." #: servers/visual/shader_language.cpp msgid "Constants cannot be modified." -msgstr "" +msgstr "Constanten kunnen niet worden aangepast." #~ msgid "Pause the scene" #~ msgstr "Pauzeer de scene" diff --git a/editor/translations/or.po b/editor/translations/or.po index 6b52bb709a..d5af2fc0c9 100644 --- a/editor/translations/or.po +++ b/editor/translations/or.po @@ -505,8 +505,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -692,6 +693,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -768,6 +773,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -939,7 +948,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1404,7 +1413,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1644,6 +1654,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2552,7 +2566,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2863,6 +2878,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2919,6 +2938,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3349,6 +3372,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4459,6 +4486,10 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4713,6 +4744,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4904,6 +4959,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5553,6 +5676,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6178,6 +6305,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6304,10 +6448,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7422,6 +7562,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7441,6 +7582,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7549,6 +7694,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7565,6 +7722,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8689,6 +8874,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8788,6 +8981,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8839,6 +9036,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9096,6 +9301,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10666,6 +10875,14 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10726,14 +10943,6 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "" @@ -10904,6 +11113,18 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11100,27 +11321,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index fc8ae9f5dc..69a0658418 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -42,7 +42,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-25 04:05+0000\n" +"PO-Revision-Date: 2019-12-21 08:37+0000\n" "Last-Translator: Tomek <kobewi4e@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" @@ -52,7 +52,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -561,8 +561,9 @@ msgstr "klatek na sekundÄ™" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Edycja" @@ -748,6 +749,10 @@ msgstr "Tylko zaznaczenie" msgid "Standard" msgstr "Standardowy" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Przełącz panel skryptów" + #: 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 @@ -826,6 +831,11 @@ msgid "Extra Call Arguments:" msgstr "Dodatkowe argumenty wywoÅ‚ania:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Wybierz metodÄ™" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Zaawansowane" @@ -1002,7 +1012,7 @@ msgid "Resource" msgstr "Zasoby" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Åšcieżka" @@ -1473,7 +1483,8 @@ msgid "Node Name:" msgstr "Nazwa wÄ™zÅ‚a:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nazwa" @@ -1722,6 +1733,10 @@ msgid "Erase Profile" msgstr "Usuń profil" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Profil funkcjonalnoÅ›ci Godota" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Importuj profil(e)" @@ -2683,7 +2698,8 @@ msgstr "Przywróć scenÄ™" msgid "Miscellaneous project or scene-wide tools." msgstr "Różne narzÄ™dzia dla scen lub projektu." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekt" @@ -3020,6 +3036,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Zaimportuj Szablony z pliku ZIP" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Szablonowy pakiet" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Wyeksportuj projekt" @@ -3076,6 +3096,11 @@ msgstr "Otwórz nastÄ™pny edytor" msgid "Open the previous Editor" msgstr "Otwórz poprzedni edytor" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Ostrzeżenie" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Nie znaleziono podzasobów." @@ -3523,6 +3548,10 @@ msgid "Select Template File" msgstr "Wybierz plik szablonu" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Szablony eksportu Godota" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Menedżer szablonów eksportu" @@ -4661,6 +4690,11 @@ msgstr "Ustaw koniec animacji. To jest przydatne dla podprzejść." msgid "Transition: " msgstr "PrzejÅ›cie: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Tryb przesuwania" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4917,6 +4951,30 @@ msgid "Download for this asset is already in progress!" msgstr "Pobieranie tego zasobu jest już w toku!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Ostatnio zaktualizowane" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "NajwczeÅ›niej zaktualizowane" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Nazwa (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Nazwa (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Licencja (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Licencja (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "PoczÄ…tek" @@ -5120,6 +5178,74 @@ msgstr "" "zamiast marginesów." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Lewy górny róg" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Prawy górny róg" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Prawy dolny róg" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Lewy dolny róg" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "WyÅ›rodkowane po lewej" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "WyÅ›rodkowane na górze" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "WyÅ›rodkowane po prawej" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "WyÅ›rodkowane na dole" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "WyÅ›rodkowane" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "RozciÄ…gnij po lewej" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "RozciÄ…gnij na górze" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "RozciÄ…gnij po prawej" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "RozciÄ…gnij na dole" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "RozciÄ…gnij pionowo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "RozciÄ…gnij poziomo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "CaÅ‚y obszar" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Zachowaj proporcie" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Tylko zakotwiczenia" @@ -5228,7 +5354,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" -msgstr "Alt + RMB: Głębokość listy" +msgstr "Alt+PPM: Lista obiektów pod spodem" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5786,6 +5912,11 @@ msgid "Remove item %d?" msgstr "UsuÅ„ element %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Biblioteka Meshów..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Dodaj element" @@ -6417,6 +6548,23 @@ msgid "Save File As..." msgstr "Zapisz plik jako..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Zaimportuj motyw" @@ -6543,10 +6691,6 @@ msgstr "Zamknij pliki pomocy" msgid "Run" msgstr "Uruchom" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Przełącz panel skryptów" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Krok w" @@ -7441,7 +7585,7 @@ msgstr "PrÄ™dkość (FPS):" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" -msgstr "PÄ™tla" +msgstr "ZapÄ™tl" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animation Frames:" @@ -7673,6 +7817,7 @@ msgid "Data Type:" msgstr "Typ danych:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikona" @@ -7692,6 +7837,10 @@ msgstr "Kolor" msgid "Constant" msgstr "StaÅ‚e" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "Plik motywu" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "UsuÅ„ zaznaczenie" @@ -7803,6 +7952,20 @@ msgid "Merge from Scene" msgstr "Połącz ze sceny" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Wyłącz autokafelki" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Nowy %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "NastÄ™pny koordynat" @@ -7819,6 +7982,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Wybierz poprzedni ksztaÅ‚t, podkafelek lub Kafelek." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Tryb obszaru" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Tryb kolizji" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Tryb okluzji" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Tryb nawigacji" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Tryb maski bitowej" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Tryb priorytetów" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Indeks:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Tryb obszaru" @@ -9032,6 +9230,14 @@ msgid "Runnable" msgstr "Uruchamiany" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Dodaj wstÄ™pny eksport..." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Dodaj poprzednie Å‚atki..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Usunąć ścieżkÄ™ \"%s\" z listy?" @@ -9142,6 +9348,10 @@ msgid "Make Patch" msgstr "Utwórz Å›cieżkÄ™" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Plik paczki" + +#: editor/project_export.cpp msgid "Features" msgstr "FunkcjonalnoÅ›ci" @@ -9193,6 +9403,14 @@ msgstr "Tryb eksportu?" msgid "Export All" msgstr "Eksportuj wszystko" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "Plik ZIP" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Godotowa paczka gry" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Brakuje eksportu szablonów dla tej platformy:" @@ -9498,6 +9716,10 @@ msgid "Projects" msgstr "Projekty" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Data modyfikacji" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Skanuj" @@ -11110,6 +11332,14 @@ msgid "Set Variable Type" msgstr "Ustaw typ zmiennej" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Dodaj port wejÅ›ciowy" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Dodaj port wyjÅ›ciowy" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "ZastÄ…p istniejÄ…cÄ… funkcjÄ™ wbudowanÄ…." @@ -11170,14 +11400,6 @@ msgid "Add Signal" msgstr "Dodaj sygnaÅ‚" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "Dodaj port wejÅ›ciowy" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "Dodaj port wyjÅ›ciowy" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "UsuÅ„ port wejÅ›ciowy" @@ -11356,6 +11578,18 @@ msgid "Members:" msgstr "CzÅ‚onkowie:" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "ZmieÅ„ typ podstawowy:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Dodaj wÄ™zÅ‚y..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Dodaj funkcjÄ™..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "nazwa_funkcji" @@ -11571,27 +11805,10 @@ msgid "Identifier is missing." msgstr "Brakuje identyfikatora." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Segmenty identyfikatora muszÄ… mieć niezerowÄ… dÅ‚ugość." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "Znak \"%s\" nie jest dozwolony w identyfikatorze." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "Cyfra nie może być pierwszym znakiem w segmencie identyfikatora." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "Znak \"%s\" nie może być pierwszym znakiem w segmencie identyfikatora." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "Identyfikator musi mieć co najmniej jednÄ… kropkÄ™ jako separator." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "App Store Team ID nie podany - nie można skonfigurować projektu." @@ -12312,6 +12529,20 @@ 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 "Identifier segments must be of non-zero length." +#~ msgstr "Segmenty identyfikatora muszÄ… mieć niezerowÄ… dÅ‚ugość." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "Cyfra nie może być pierwszym znakiem w segmencie identyfikatora." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Znak \"%s\" nie może być pierwszym znakiem w segmencie identyfikatora." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "Identyfikator musi mieć co najmniej jednÄ… kropkÄ™ jako separator." + #~ msgid "Pause the scene" #~ msgstr "Zapauzuj scenÄ™" @@ -12837,9 +13068,6 @@ msgstr "StaÅ‚e nie mogÄ… być modyfikowane." #~ msgid "Rotate 270 degrees" #~ msgstr "Obróć o 270 stopni" -#~ msgid "Warning" -#~ msgstr "Ostrzeżenie" - #~ msgid "Variable" #~ msgstr "Zmienna" @@ -13293,9 +13521,6 @@ msgstr "StaÅ‚e nie mogÄ… być modyfikowane." #~ msgid "Re-Import Changed Resources" #~ msgstr "Zaimportuj ponownie zmienione zasoby" -#~ msgid "Loading Export Templates" -#~ msgstr "Wczytywanie szablonów eksportu" - #, fuzzy #~ msgid "" #~ "\n" @@ -13835,10 +14060,6 @@ msgstr "StaÅ‚e nie mogÄ… być modyfikowane." #~ msgstr "Utwórz nowy zasób" #, fuzzy -#~ msgid "Full name" -#~ msgstr "Poprawna nazwa" - -#, fuzzy #~ msgid "Organization" #~ msgstr "PrzejÅ›cie" diff --git a/editor/translations/pr.po b/editor/translations/pr.po index f20178f8bb..712d891f86 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -536,8 +536,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Edit" @@ -725,6 +726,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -804,6 +809,11 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Paste yer Node" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -981,7 +991,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1451,7 +1461,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1707,6 +1718,10 @@ msgid "Erase Profile" msgstr "Yar, Blow th' Selected Down!" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2633,7 +2648,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2951,6 +2967,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Discharge ye' Variable" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -3007,6 +3028,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3451,6 +3476,11 @@ msgid "Select Template File" msgstr "Slit th' Node" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Discharge ye' Variable" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4612,6 +4642,11 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Slit th' Node" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4866,6 +4901,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5065,6 +5124,75 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5733,6 +5861,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6374,6 +6506,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6504,10 +6653,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7664,6 +7809,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7683,6 +7829,11 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Paste yer Node" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7798,6 +7949,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7814,6 +7977,38 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Ye be fixin' Signal:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Ye be fixin' Signal:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Ye be fixin' Signal:" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Edit yer Variable:" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8988,6 +9183,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Add Signal" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9088,6 +9292,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9139,6 +9347,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9400,6 +9616,10 @@ msgid "Projects" msgstr "Rename Function" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11030,6 +11250,16 @@ msgid "Set Variable Type" msgstr "Edit yer Variable:" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Add Signal" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Add Signal" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -11096,16 +11326,6 @@ msgstr "Add Signal" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Add Signal" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Add Signal" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Discharge ye' Signal" @@ -11295,6 +11515,21 @@ msgstr "th' Members:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "th' Base Type:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Add Node" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Add Function" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Yer functions:" @@ -11498,28 +11733,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "Yer name's got no valid identifier:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index 88953ef6e5..7ac70e2518 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -72,12 +72,15 @@ # Wow Bitch <hahaj@itmailr.com>, 2019. # Alan Tavares <alan1tavares@gmail.com>, 2019. # Rafael Silveira <res883@gmail.com>, 2019. +# Luigi <luigimendeszanchett@gmail.com>, 2019. +# Nicolas Abril <nicolas.abril@protonmail.ch>, 2019. +# johnnybigoode <jamarson@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2019-11-20 14:07+0000\n" -"Last-Translator: Joaquim Ferreira <joaquimferreira1996@bol.com.br>\n" +"PO-Revision-Date: 2019-12-21 08:37+0000\n" +"Last-Translator: johnnybigoode <jamarson@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -85,7 +88,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -227,14 +230,12 @@ msgid "Anim Multi Change Keyframe Time" msgstr "Alterar Tempo de Quadro-Chave da Animação" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "Alterar Transição da Animação" +msgstr "Alterar Transição da Animação Multipla" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "Alterar Transformação da Anim" +msgstr "Transformação de Animação com Múltiplas Mudanças" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Value" @@ -595,8 +596,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Editar" @@ -754,7 +756,6 @@ msgid "%d match." msgstr "%d correspondência." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d matches." msgstr "%d correspondências." @@ -783,6 +784,10 @@ msgstr "Selecionar Apenas" msgid "Standard" msgstr "Padrão" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Alternar Painel de Scripts" + #: 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 @@ -861,6 +866,11 @@ msgid "Extra Call Arguments:" msgstr "Argumentos de Chamada Extras:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Selecionar Mtéodo" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Avançado" @@ -1037,7 +1047,7 @@ msgid "Resource" msgstr "Recurso" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Caminho" @@ -1509,7 +1519,8 @@ msgid "Node Name:" msgstr "Nome do nó:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nome" @@ -1758,6 +1769,10 @@ msgid "Erase Profile" msgstr "Apagar Perfil" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Perfil de funcionalidade do Godot" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Importar Perfil(s)" @@ -2130,7 +2145,7 @@ msgstr "Nó" #: editor/editor_network_profiler.cpp msgid "Incoming RPC" -msgstr "Incoming RPC" +msgstr "RPC recebido" #: editor/editor_network_profiler.cpp msgid "Incoming RSET" @@ -2724,7 +2739,8 @@ msgstr "Reverter Cena" msgid "Miscellaneous project or scene-wide tools." msgstr "Ferramentas diversas atuantes no projeto ou cena." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projeto" @@ -2952,7 +2968,7 @@ msgstr "Tocar" #: editor/editor_node.cpp msgid "Pause the scene execution for debugging." -msgstr "" +msgstr "Pausar a execução da cena para depuração." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3043,9 +3059,16 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" +"Isso irá configurar seu projeto para compilações customizadas do Android " +"instalando o modelo de origem para \"res://android/build\".\n" +"Em seguida, você pode aplicar modificações e compilar seu próprio APK " +"customizado na exportação (Adicionando módulos, alterando o AndroidManifest." +"xml, etc.).\n" +"Note que para fazer uma compilação customizada, em vez de usar APKs pre-" +"compilados, a opção \"Usar compilação customizada\" deve estar ativa nas " +"predefinições de exportação do Android." #: editor/editor_node.cpp -#, fuzzy msgid "" "The Android build template is already installed in this project and it won't " "be overwritten.\n" @@ -3053,12 +3076,17 @@ msgid "" "operation again." msgstr "" "O modelo de compilação do Android já está instalado e não será substituÃdo.\n" -"Remova a pasta \"build\" manualmente antes de tentar esta operação novamente." +"Remova a pasta \"res://android/build\" manualmente antes de tentar esta " +"operação novamente." #: editor/editor_node.cpp msgid "Import Templates From ZIP File" msgstr "Importar Modelos de um Arquivo ZIP" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Pacote de modelos" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Exportar Projeto" @@ -3115,10 +3143,14 @@ msgstr "Abrir o próximo Editor" msgid "Open the previous Editor" msgstr "Abrir o Editor anterior" -#: editor/editor_path.cpp +#: editor/editor_node.h #, fuzzy +msgid "Warning!" +msgstr "Aviso" + +#: editor/editor_path.cpp msgid "No sub-resources found." -msgstr "Nenhuma superfÃcie de origem especificada." +msgstr "Nenhum sub-recurso encontrado." #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" @@ -3129,9 +3161,8 @@ msgid "Thumbnail..." msgstr "Miniatura..." #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Main Script:" -msgstr "Abrir script" +msgstr "Script Principal:" #: editor/editor_plugin_settings.cpp msgid "Edit Plugin" @@ -3376,7 +3407,6 @@ msgid "Import From Node:" msgstr "Importar a Partir do Nó:" #: editor/export_template_manager.cpp -#, fuzzy msgid "Redownload" msgstr "Baixar Novamente" @@ -3566,6 +3596,10 @@ msgid "Select Template File" msgstr "Selecionar o Arquivo de Modelo" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Modelos de Exportação do Godot" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Gerenciador de Exportação de Modelo" @@ -3644,9 +3678,8 @@ msgid "New Inherited Scene" msgstr "Nova Cena Herdada" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Set As Main Scene" -msgstr "Cena Principal" +msgstr "Definido como Cena Principal" #: editor/filesystem_dock.cpp msgid "Open Scenes" @@ -3965,9 +3998,8 @@ msgid "Import As:" msgstr "Importar como:" #: editor/import_dock.cpp -#, fuzzy msgid "Preset" -msgstr "Predefinições" +msgstr "Predefinição" #: editor/import_dock.cpp msgid "Reimport" @@ -4380,19 +4412,16 @@ msgstr "" "possÃvel obter os nomes das trilhas." #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Anim Clips" -msgstr "Clipes de Animação:" +msgstr "Clipes de Animação" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Audio Clips" -msgstr "Clipes de Ãudio:" +msgstr "Clipes de Ãudio" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Functions" -msgstr "Funções:" +msgstr "Funções" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp @@ -4712,6 +4741,11 @@ msgstr "Definir a animação final. Isso é útil para sub-transições." msgid "Transition: " msgstr "Transição: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Modo Panorâmico" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4966,6 +5000,30 @@ msgid "Download for this asset is already in progress!" msgstr "Download deste asset já está em progresso!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Atualizado recentemente" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Ultima Atualização Recente" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Nome (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Nome (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Licença (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Licença (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Primeiro" @@ -5077,12 +5135,11 @@ msgstr "Passo de grade:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Primary Line Every:" -msgstr "" +msgstr "Linha Primária a Cada:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "steps" -msgstr "2 passos" +msgstr "passos" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" @@ -5093,7 +5150,6 @@ msgid "Rotation Step:" msgstr "Passo de Rotação:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Step:" msgstr "Escala:" @@ -5171,6 +5227,79 @@ msgstr "" "margens." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Superior Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Superior Direita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Inferior direita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Inferior Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Centro Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Centro Superior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Centro Direita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Centro Inferior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Centro" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Visão Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Visão Superior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Visão Direita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Visão inferior" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Full Rect" +msgstr "Nome Válido" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Manter proporção" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Apenas âncoras" @@ -5188,6 +5317,8 @@ msgid "" "Game Camera Override\n" "Overrides game camera with editor viewport camera." msgstr "" +"Substituir Câmera do Jogo\n" +"Substitui a câmera do jogo com a câmera de visualização do editor." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5195,6 +5326,8 @@ msgid "" "Game Camera Override\n" "No game instance running." msgstr "" +"Substituir Câmera do Jogo\n" +"Nenhuma instância de jogo em execução." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5310,50 +5443,44 @@ msgid "Pan Mode" msgstr "Modo Panorâmico" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Ruler Mode" -msgstr "Modo de InÃcio:" +msgstr "Modo Régua" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Alternar o snap." +msgstr "Alternar Encaixe Inteligente." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Usar Snap" +msgstr "Usar Encaixe Inteligente" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Alternar o snap." +msgstr "Alternar Encaixe de grade." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "Snap de Grade" +msgstr "Usar Encaixe de Grade" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" -msgstr "Opções de agarramento" +msgstr "Opções de encaixe" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" -msgstr "Usar Snap de Rotação" +msgstr "Usar Encaixe de Rotação" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Scale Snap" -msgstr "Usar Snap" +msgstr "Usar Encaixe Escalar" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "Snap Relativo" +msgstr "Encaixe Relativo" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "Usar Snap de Pixel" +msgstr "Usar Encaixe de Pixel" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Smart Snapping" @@ -5362,7 +5489,7 @@ msgstr "Encaixe inteligente" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap..." -msgstr "Configurar Snap..." +msgstr "Configurar Encaixe..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Parent" @@ -5430,9 +5557,8 @@ msgid "View" msgstr "Visualizar" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Mostrar Grade" +msgstr "Sempre Mostrar a Grade" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5487,15 +5613,14 @@ msgid "Insert keys (based on mask)." msgstr "Inserir Chaves (baseado na máscara)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "" "Auto insert keys when objects are translated, rotated or scaled (based on " "mask).\n" "Keys are only added to existing tracks, no new tracks will be created.\n" "Keys must be inserted manually for the first time." msgstr "" -"Inserir chaves automaticamente quando os objetos são transladados, girados " -"em escala (com base na máscara). \n" +"Inserir chaves automaticamente quando os objetos são transladados, " +"rotacionados ou escalados (com base na máscara). \n" "As chaves são adicionadas apenas à s faixas existentes, nenhuma nova trilha " "será criada. \n" "As chaves devem ser inseridas manualmente pela primeira vez." @@ -5700,9 +5825,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Segure Shift para editar tangentes individualmente" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Clique Direito: Excluir Ponto" +msgstr "Clique com o botão direito para adicionar o ponto" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5842,6 +5966,11 @@ msgid "Remove item %d?" msgstr "Remover item %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Adicionar Item" @@ -6478,6 +6607,23 @@ msgid "Save File As..." msgstr "Salvar como..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importar Tema" @@ -6604,10 +6750,6 @@ msgstr "Fechar Docs" msgid "Run" msgstr "Rodar" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Alternar Painel de Scripts" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Passo para dentro" @@ -7158,9 +7300,8 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de velocidade da Visão Livre" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "Modificador de velocidade da Visão Livre" +msgstr "Modificador de velocidade lenta da Visão Livre" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7432,9 +7573,8 @@ msgid "Simplification: " msgstr "Simplificação: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Produzir (Pixels): " +msgstr "Diminuir (Pixels): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7485,9 +7625,8 @@ msgid "(empty)" msgstr "(vazio)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Move Frame" -msgstr "Colar Frame" +msgstr "Mover Quadro" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animations:" @@ -7735,6 +7874,7 @@ msgid "Data Type:" msgstr "Tipo de Dados:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ãcone" @@ -7754,6 +7894,10 @@ msgstr "Cor" msgid "Constant" msgstr "Constante" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "Arquivo de Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Apagar Seleção" @@ -7804,13 +7948,12 @@ msgid "Enable Priority" msgstr "Ativar Prioridade" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Filter tiles" -msgstr "Filtrar Arquivos..." +msgstr "Filtros do tile" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Give a TileSet resource to this TileMap to use its tiles." -msgstr "" +msgstr "Atribua um recurso TileSet a este TileMap para usar seus tiles." #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint Tile" @@ -7865,6 +8008,20 @@ msgid "Merge from Scene" msgstr "Fundir a partir de Cena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Desativar Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Atlas:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Próxima Coordenada" @@ -7881,6 +8038,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Selecione a forma, subtile ou tile anterior." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Modo Região" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Modo Colisão" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Modo Oclusão" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Modo Navegação" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Modo Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Modo Prioridade" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Ãndice:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modo Região" @@ -7948,6 +8140,8 @@ msgstr "Exibir nomes de mosaico (segure a tecla Alt)" msgid "" "Add or select a texture on the left panel to edit the tiles bound to it." msgstr "" +"Adicione ou selecione uma textura no painel esquerdo para editar os tiles " +"vinculados." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove selected texture? This will remove all tiles which use it." @@ -8120,78 +8314,68 @@ msgid "TileSet" msgstr "Conjunto de Telha" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No VCS addons are available." -msgstr "Nome pai do nó, se disponÃvel" +msgstr "Nenhum complemento VCS está disponÃvel." #: editor/plugins/version_control_editor_plugin.cpp editor/rename_dialog.cpp msgid "Error" msgstr "Erro" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No commit message was provided" -msgstr "Nenhum nome fornecido" +msgstr "Nenhuma mensagem de confirmação foi fornecida" #: editor/plugins/version_control_editor_plugin.cpp msgid "No files added to stage" -msgstr "" +msgstr "Nenhum arquivo adicionado ao palco" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit" -msgstr "Comunidade" +msgstr "Confirmação" #: editor/plugins/version_control_editor_plugin.cpp msgid "VCS Addon is not initialized" -msgstr "" +msgstr "Extensão VCS não inicializado" #: editor/plugins/version_control_editor_plugin.cpp msgid "Version Control System" -msgstr "" +msgstr "Sistema de Controle de Versionamento" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Initialize" -msgstr "Capitalizar" +msgstr "Inicializar" #: editor/plugins/version_control_editor_plugin.cpp msgid "Staging area" -msgstr "" +msgstr "Ãrea Temporária" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Detect new changes" -msgstr "Criar um novo retângulo." +msgstr "Detectar novas mudanças" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Changes" -msgstr "Alterar" +msgstr "Mudanças" #: editor/plugins/version_control_editor_plugin.cpp msgid "Modified" msgstr "Modificado" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Renamed" -msgstr "Renomear" +msgstr "Renomeado" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Deleted" -msgstr "Excluir" +msgstr "ExcluÃdo" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Typechange" -msgstr "Alterar" +msgstr "Alterar tipo" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage Selected" -msgstr "Excluir Selecionados" +msgstr "Estágio selecionado" #: editor/plugins/version_control_editor_plugin.cpp #, fuzzy @@ -8200,7 +8384,7 @@ msgstr "Salvar Tudo" #: editor/plugins/version_control_editor_plugin.cpp msgid "Add a commit message" -msgstr "" +msgstr "Adicione uma mensagem de confirmação" #: editor/plugins/version_control_editor_plugin.cpp #, fuzzy @@ -8214,25 +8398,23 @@ msgstr "Estado" #: editor/plugins/version_control_editor_plugin.cpp msgid "View file diffs before committing them to the latest version" -msgstr "" +msgstr "Ver aquivos diff antes do commit para a última versão" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No file diff is active" -msgstr "Nenhum arquivo selecionado!" +msgstr "Nenhuma mudança no arquivo" #: editor/plugins/version_control_editor_plugin.cpp msgid "Detect changes in file diff" -msgstr "" +msgstr "Detectar mudanças no arquivo diff" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(GLES3 only)" msgstr "(Apenas GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Adicionar saÃda +" +msgstr "Adicionar saÃda" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8249,7 +8431,7 @@ msgstr "Booleano" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy msgid "Sampler" -msgstr "Amostras" +msgstr "Amostrador (Sampler)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8381,9 +8563,8 @@ msgid "Dodge operator." msgstr "Operador de desvio." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "HardLight operator." -msgstr "Operador HardLight" +msgstr "Operador HardLight." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8466,11 +8647,10 @@ msgstr "" "falso." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns an associated scalar if the provided boolean value is true or false." msgstr "" -"Retorna um vetor associado se o valor lógico fornecido for verdadeiro ou " +"Retorna um vetor associado se o valor booleano fornecido for verdadeiro ou " "falso." #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8502,9 +8682,8 @@ msgid "Input parameter." msgstr "Parâmetro de entrada." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "'%s' input parameter for vertex and fragment shader modes." -msgstr "Parâmetro de entrada '%s' para os modos de shader vértice e fragmento." +msgstr "Parâmetro de entrada '%s' para os modos vértice e fragmento de shader." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment and light shader modes." @@ -8710,7 +8889,6 @@ msgid "Returns the square root of the parameter." msgstr "Retorna a raiz quadrada do parâmetro." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" "\n" @@ -8718,20 +8896,19 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" -"Função SmoothStep( escalar(edge0), escalar(edge1), escalar(x) ).\n" +"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" "\n" "Retorna 0.0 se 'x' é menor que 'edge0' e 1.0 se 'x' é maior que 'edge1'. " -"Caso contrário o valor retornado é interpolado entre 0.0 e 1.0 utilizando " +"Caso contrário, o valor retornado é interpolado entre 0.0 e 1.0 utilizando " "polinômios de Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Step function( scalar(edge), scalar(x) ).\n" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" -"Função Step( escalar(edge), escalar(x) ).\n" +"Step function( scalar(edge), scalar(x) ).\n" "\n" "Retorna 0.0 se 'x' é menor que 'edge' e 1.0 caso contrário." @@ -8748,9 +8925,8 @@ msgid "Finds the truncated value of the parameter." msgstr "Encontra o valor truncado do parâmetro." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Adds scalar to scalar." -msgstr "Adiciona escalar a escalar." +msgstr "Adiciona um escalar a um escalar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Divides scalar by scalar." @@ -8761,54 +8937,44 @@ msgid "Multiplies scalar by scalar." msgstr "Multiplica escalar por escalar." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Returns the remainder of the two scalars." -msgstr "Retorna o resto de dois escalares." +msgstr "Retorna o resto dos dois escalares." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Subtracts scalar from scalar." -msgstr "Subtrai escalar de escalar." +msgstr "Subtrai o escalar do escalar." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar constant." -msgstr "Alterar Constante Escalar" +msgstr "Constante Escalar" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar uniform." -msgstr "Alterar Uniforme Escalar" +msgstr "Escalar uniforme." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Perform the cubic texture lookup." -msgstr "Faça a pesquisa da textura cúbica." +msgstr "Execute a pesquisa de textura cúbica." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Perform the texture lookup." -msgstr "Fazer pesquisa da textura." +msgstr "Faz uma busca de texturas." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Cubic texture uniform lookup." -msgstr "Alterar Uniforme da Textura" +msgstr "Pesquisa uniforme de textura cúbica." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "2D texture uniform lookup." -msgstr "Alterar Uniforme da Textura" +msgstr "Consulta de textura 2D uniforme." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "2D texture uniform lookup with triplanar." -msgstr "Alterar Uniforme da Textura" +msgstr "Consulta de textura 2D uniforme com triplanar." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform function." -msgstr "Diálogo Transformação..." +msgstr "Função Transform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8837,49 +9003,40 @@ msgid "Decomposes transform to four vectors." msgstr "Decompõe transformação em quatro vetores." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Calculates the determinant of a transform." -msgstr "(Somente em GLES3) Calcula o determinante da transform." +msgstr "Calcula o determinante de uma transformada." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Calculates the inverse of a transform." -msgstr "(Somente em GLES3) Calcula a inversa da transform." +msgstr "Calcula a inversa de uma transformada." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Calculates the transpose of a transform." -msgstr "(Somente em GLES3) Calcula a transposta da transform." +msgstr "Calcula a transposta de uma transformada." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Multiplies transform by transform." -msgstr "Multiplica transform por transform." +msgstr "Multiplica a transformação por transformação." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Multiplies vector by transform." -msgstr "Multiplica vetor por transform." +msgstr "Multiplica vetor por transformação." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform constant." -msgstr "Transformação Abortada." +msgstr "Constante da transformada." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform uniform." -msgstr "Transformação Abortada." +msgstr "Transformada uniforme." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector function." -msgstr "Atribuição à função." +msgstr "Função vetorial." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector operator." -msgstr "Alterar Operador Vet" +msgstr "Operador vetorial." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes vector from three scalars." @@ -8902,17 +9059,16 @@ msgid "Calculates the dot product of two vectors." msgstr "Calcula o produto escalar de dois vetores." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns the vector that points in the same direction as a reference vector. " "The function has three vector parameters : N, the vector to orient, I, the " "incident vector, and Nref, the reference vector. If the dot product of I and " "Nref is smaller than zero the return value is N. Otherwise -N is returned." msgstr "" -"Retorna um vetor que aponta na mesma direção que um vetor de referência. A " +"Retorna o vetor que aponta na mesma direção que um vetor de referência. A " "função tem três vetores como parâmetros: N, o vetor para orientar, I, o " -"vetor incidente, e Nref, o vetor de referência. Se o produto escalar de I e " -"Nref for menor do que zero o valor de retorno é N. Caso contrário -N é " +"vetor incidente, e Nref, o vetor de referência. Se o produto escalar de I e " +"Nref for menor do que zero, o valor de retorno é N. Caso contrário, -N é " "retornado." #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8924,9 +9080,8 @@ msgid "Linear interpolation between two vectors." msgstr "Interpolação linear entre dois vetores." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Linear interpolation between two vectors using scalar." -msgstr "Interpolação linear entre dois vetores." +msgstr "Interpolação linear entre dois vetores usando escalar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the normalize product of vector." @@ -8941,21 +9096,18 @@ msgid "1.0 / vector" msgstr "1,0 / vetor" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns the vector that points in the direction of reflection ( a : incident " "vector, b : normal vector )." msgstr "" -"Retorna um vetor que aponta na direção da reflexão ( a: vetor incidente, b: " +"Retorna o vetor que aponta na direção da reflexão ( a: vetor incidente, b: " "vetor normal )." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Returns the vector that points in the direction of refraction." -msgstr "Retorna um vetor que aponta na direção da refração." +msgstr "Retorna o vetor que aponta na direção da refração." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" "\n" @@ -8963,14 +9115,13 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" -"Função SmoothStep( escalar(edge0), escalar(edge1), escalar(x) ).\n" +"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" "\n" "Retorna 0.0 se 'x' é menor que 'edge0' e 1.0 se 'x' é maior que 'edge1'. " -"Caso contrário o valor retornado é interpolado entre 0.0 e 1.0 utilizando " +"Caso contrário, o valor retornado é interpolado entre 0.0 e 1.0 utilizando " "polinômios de Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" "\n" @@ -8978,31 +9129,29 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" -"Função SmoothStep( escalar(edge0), escalar(edge1), escalar(x) ).\n" +"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" "\n" "Retorna 0.0 se 'x' é menor que 'edge0' e 1.0 se 'x' é maior que 'edge1'. " -"Caso contrário o valor retornado é interpolado entre 0.0 e 1.0 utilizando " +"Caso contrário, o valor retornado é interpolado entre 0.0 e 1.0 utilizando " "polinômios de Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Step function( vector(edge), vector(x) ).\n" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" -"Função Step( escalar(edge), escalar(x) ).\n" +"Step function( vector(edge), vector(x) ).\n" "\n" "Retorna 0.0 se 'x' é menor que 'edge' e 1.0 caso contrário." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Step function( scalar(edge), vector(x) ).\n" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" -"Função Step( escalar(edge), escalar(x) ).\n" +"Step function( scalar(edge), vector(x) ).\n" "\n" "Retorna 0.0 se 'x' é menor que 'edge' e 1.0 caso contrário." @@ -9027,14 +9176,12 @@ msgid "Subtracts vector from vector." msgstr "Subtrai vetor de vetor." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector constant." -msgstr "Alterar Constante Vet" +msgstr "Vetor constante." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector uniform." -msgstr "Atribuição à uniforme." +msgstr "Vector uniforme." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9062,50 +9209,64 @@ msgid "" "it later in the Expressions. You can also declare varyings, uniforms and " "constants." msgstr "" +"Expressão customizada da Godot Shader Language, que é colocada em cima do " +"shader resultante. Você pode colocar várias definições de funções dentro e " +"chamá-lo posteriormente nas Expressões. Você também pode declarar variações, " +"uniformes e constantes." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." -msgstr "" +msgstr "(Apenas modo Fragmento/Luz) Função derivada escalar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Vector derivative function." -msgstr "" +msgstr "(Apenas modo Fragmento/Luz) Função derivada de vetor." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Vector) Derivative in 'x' using local " "differencing." msgstr "" +"(Apenas modo Fragmento/Luz) (Vetor) Derivada em 'x' usando diferenciação " +"local." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Derivative in 'x' using local " "differencing." msgstr "" +"(Apenas modo Fragmento/Luz) (Escalar) Derivada em 'x' usando diferenciação " +"local." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Vector) Derivative in 'y' using local " "differencing." msgstr "" +"(Apenas modo Fragmento/Luz) (Vetor) Derivada em 'y' usando diferenciação " +"local." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Derivative in 'y' using local " "differencing." msgstr "" +"(Apenas modo Fragmento/Luz) (Escalar) Derivada em 'y' usando diferenciação " +"local." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and " "'y'." msgstr "" +"(Apenas modo Fragmento/Luz) (Vetor) Soma da derivada absoluta em 'x' e 'y'." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and " "'y'." msgstr "" +"(Apenas modo Fragmento/Luz) (Escalar) Soma da derivada absoluta em 'x' e 'y'." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "VisualShader" @@ -9124,6 +9285,15 @@ msgid "Runnable" msgstr "Executável" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Adicionar porta de entrada" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Excluir alteração '%s' da lista?" @@ -9180,6 +9350,9 @@ 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 "" +"Se marcada, a predefinição estará disponÃvel para uso na implantação em um " +"clique.\n" +"Somente uma predefinição por plataforma pode ser marcada como executável." #: editor/project_export.cpp msgid "Export Path" @@ -9210,22 +9383,20 @@ msgid "Resources to export:" msgstr "Recursos para exportar:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filtros para exportar arquivos que não sejam recursos (separados por " -"vÃrgula, e.g.: *.json, *.txt)" +"Filtros para exportar arquivos/pastas que não sejam recursos\n" +"(separados por vÃrgula, e.g.: *.json, *.txt)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filtros para excluir arquivos do projeto (separados por vÃrgula, ex.: *." -"json, *.txt)" +"Filtros para excluir arquivos/pastas do projeto\n" +"(separados por vÃrgula, ex.: *.json, *.txt)" #: editor/project_export.cpp msgid "Patches" @@ -9236,6 +9407,11 @@ msgid "Make Patch" msgstr "Criar Alteração" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Arquivos" + +#: editor/project_export.cpp msgid "Features" msgstr "Funcionalidades" @@ -9287,6 +9463,15 @@ msgstr "Modo de exportação?" msgid "Export All" msgstr "Exportar tudo" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Arquivos" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Modelos de exportação para esta plataforma não foram encontrados:" @@ -9455,13 +9640,12 @@ msgid "Unnamed Project" msgstr "Projeto Sem Nome" #: editor/project_manager.cpp -#, fuzzy msgid "Missing Project" -msgstr "Importar Projeto Existente" +msgstr "Projeto ausente" #: editor/project_manager.cpp msgid "Error: Project is missing on the filesystem." -msgstr "" +msgstr "Erro: O Projeto está ausente no sistema de arquivos." #: editor/project_manager.cpp msgid "Can't open project at '%s'." @@ -9472,7 +9656,6 @@ msgid "Are you sure to open more than one project?" msgstr "Tem certeza de que quer abrir mais de um projeto?" #: editor/project_manager.cpp -#, fuzzy msgid "" "The following project settings file does not specify the version of Godot " "through which it was created.\n" @@ -9484,16 +9667,16 @@ msgid "" "Warning: You won't be able to open the project with previous versions of the " "engine anymore." msgstr "" -"O seguinte arquivo de configurações do projeto foi gerado por uma versão " -"mais antiga do Godot e precisa ser convertido para esta versão:\n" +"O seguinte arquivo de configurações do projeto não especifica com qual " +"versão do Godot ele foi criado.\n" "\n" "%s\n" "\n" -"Você deseja realizar a conversão?\n" -"Aviso: você não poderá mais abrir o projeto com versões anteriores do Godot." +"Se escolher abrÃ-lo, será convertido para o formato atual de arquivo de " +"configuração do Godot\n" +"Aviso: Você não poderá mais abrir o projeto com versões anteriores do Godot." #: editor/project_manager.cpp -#, fuzzy msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -9505,13 +9688,13 @@ msgid "" "engine anymore." msgstr "" "O seguinte arquivo de configurações do projeto foi gerado por uma versão " -"mais antiga do mecanismo e precisa ser convertido para esta versão:\n" +"mais antiga da engine, e precisa ser convertido para esta versão:\n" "\n" "%s\n" "\n" -"Você deseja realizar a conversão?\n" -"Aviso: você não poderá mais abrir o projeto com versões anteriores do " -"mecanismo." +"Deseja convertê-lo?\n" +"Aviso: Você não será mais capaz de abrir o projeto com versões anteriores da " +"engine." #: editor/project_manager.cpp msgid "" @@ -9522,15 +9705,14 @@ msgstr "" "mecanismo, cujas configurações não são compatÃveis com esta versão." #: editor/project_manager.cpp -#, fuzzy msgid "" "Can't run project: no main scene defined.\n" "Please edit the project and set the main scene in the Project Settings under " "the \"Application\" category." msgstr "" -"Não foi possÃvel executar o projeto: cena principal não definida.\n" -"Por favor, defina a cena principal nas Configurações do Projeto no menu " -"Projeto." +"Não é possÃvel executar o projeto: nenhuma cena principal definida.\n" +"Por favor, edite o projeto e defina a cena principal nas Configurações do " +"Projeto na categoria \"Aplicativo\"." #: editor/project_manager.cpp msgid "" @@ -9541,58 +9723,62 @@ msgstr "" "Por favor, edite o projeto para iniciar a importação inicial." #: editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run %d projects at once?" -msgstr "Tem certeza de que quer executar mais de um projeto?" +msgstr "Tem certeza de que quer executar %d projetos ao mesmo tempo?" #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove %d projects from the list?\n" "The project folders' contents won't be modified." -msgstr "Remover projeto da lista? (O conteúdo da pasta não será modificado)" +msgstr "" +"Remover %d projetos da lista?\n" +"O conteúdo das pastas do projeto não será modificado." #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove this project from the list?\n" "The project folder's contents won't be modified." -msgstr "Remover projeto da lista? (O conteúdo da pasta não será modificado)" +msgstr "" +"Remover este projeto da lista?\n" +"O conteúdo da pasta do projeto não será modificado." #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove all missing projects from the list?\n" "The project folders' contents won't be modified." -msgstr "Remover projeto da lista? (O conteúdo da pasta não será modificado)" +msgstr "" +"Remover todos os projetos faltantes da lista?\n" +"O conteúdo da pasta dos projetos não será modificado." #: editor/project_manager.cpp -#, fuzzy msgid "" "Language changed.\n" "The interface will update after restarting the editor or project manager." msgstr "" -"Linguagem alterada.\n" -"A interface será atualizada na próxima vez que o editor ou o gerenciador de " -"projetos iniciar." +"Idioma alterado.\n" +"A interface será atualizada após reiniciar o editor ou o gerenciador de " +"projetos." #: editor/project_manager.cpp -#, fuzzy msgid "" "Are you sure to scan %s folders for existing Godot projects?\n" "This could take a while." msgstr "" -"Você está para analisar %s pastas por projetos existentes da Godot. Você " -"confirma?" +"Tem certeza que quer escanear %s pastam em busca de projetos Godot " +"existentes?\n" +"Isso pode levar algum tempo." #: editor/project_manager.cpp msgid "Project Manager" msgstr "Gerenciador de Projetos" #: editor/project_manager.cpp -#, fuzzy msgid "Projects" -msgstr "Projeto" +msgstr "Projetos" + +#: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Ultima Modificação" #: editor/project_manager.cpp msgid "Scan" @@ -9607,9 +9793,8 @@ msgid "New Project" msgstr "Novo Projeto" #: editor/project_manager.cpp -#, fuzzy msgid "Remove Missing" -msgstr "Remover ponto" +msgstr "Remover Ausentes" #: editor/project_manager.cpp msgid "Templates" @@ -9624,13 +9809,12 @@ msgid "Can't run project" msgstr "Não é possÃvel executar o projeto" #: editor/project_manager.cpp -#, fuzzy msgid "" "You currently don't have any projects.\n" "Would you like to explore official example projects in the Asset Library?" msgstr "" -"Você não tem nenhum projeto atualmente.\n" -"Gostaria de explorar os projetos de exemplo oficiais na Biblioteca de Assets?" +"Você não tem nenhum projeto no momento.\n" +"Gostaria de explorar projetos de exemplo oficiais na Asset Library?" #: editor/project_settings_editor.cpp msgid "Key " @@ -9813,9 +9997,8 @@ msgid "Settings saved OK." msgstr "Configurações Salvas." #: editor/project_settings_editor.cpp -#, fuzzy msgid "Moved Input Action Event" -msgstr "Adicionar Evento de Ação de Entrada" +msgstr "Evento de Ação de Entrada Movido" #: editor/project_settings_editor.cpp msgid "Override for Feature" @@ -9870,9 +10053,8 @@ msgid "Override For..." msgstr "Sobrescrever Para..." #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -#, fuzzy msgid "The editor must be restarted for changes to take effect." -msgstr "O editor deve ser reiniciado para que as mudanças surtam efeito" +msgstr "O editor deve ser reiniciado para que as alterações tenham efeito." #: editor/project_settings_editor.cpp msgid "Input Map" @@ -9950,7 +10132,7 @@ msgstr "Idiomas:" #: editor/project_settings_editor.cpp msgid "AutoLoad" -msgstr "AutoLoad" +msgstr "Carregamento Automático" #: editor/project_settings_editor.cpp msgid "Plugins" @@ -10025,9 +10207,8 @@ msgid "Suffix" msgstr "Sufixo" #: editor/rename_dialog.cpp -#, fuzzy msgid "Advanced Options" -msgstr "Opções avançadas" +msgstr "Opções Avançadas" #: editor/rename_dialog.cpp msgid "Substitute" @@ -10233,23 +10414,20 @@ msgid "Make node as Root" msgstr "Tornar Raiz o Nó" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete %d nodes?" -msgstr "Excluir Nós" +msgstr "Excluir %d nós?" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete the root node \"%s\"?" -msgstr "Deletar Nó(s) de Shader Graph(s)" +msgstr "Excluir o nó raiz \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\" and its children?" -msgstr "" +msgstr "Deletar nó \"%s\" e seus filhos?" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete node \"%s\"?" -msgstr "Excluir Nós" +msgstr "Excluir o nó \"%s\"?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." @@ -10272,13 +10450,12 @@ msgstr "" "sejam revertidas para o padrão." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "" "Enabling \"Load As Placeholder\" will disable \"Editable Children\" and " "cause all properties of the node to be reverted to their default." msgstr "" -"Desativar \"editable_instance\" fará com que todas as propriedades do nó " -"sejam revertidas para o padrão." +"Habilitar \"Carregar como Placeholder\" desabilitará \"Filhos Editáveis\" e " +"fará que todas as propriedades do nó sejam revertidas para o padrão." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10305,9 +10482,8 @@ msgid "User Interface" msgstr "Interface de Usuário" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Other Node" -msgstr "Excluir Nó" +msgstr "Outro Nó" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" @@ -10326,9 +10502,8 @@ msgid "Remove Node(s)" msgstr "Remover Nó(s)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Change type of node(s)" -msgstr "Alterar nome da porta de saÃda" +msgstr "Alterar tipo do(s) nó(s)" #: editor/scene_tree_dock.cpp msgid "" @@ -10363,27 +10538,24 @@ msgid "Load As Placeholder" msgstr "Carregar como Substituto" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open Documentation" -msgstr "Abrir a documentação" +msgstr "Abrir Documentação" #: editor/scene_tree_dock.cpp msgid "Add Child Node" msgstr "Adicionar Nó Filho" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Expand/Collapse All" -msgstr "Recolher Tudo" +msgstr "Expandir/Colapsar Tudo" #: editor/scene_tree_dock.cpp msgid "Change Type" msgstr "Mudar Tipo" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Reparent to New Node" -msgstr "Reparentar Nó" +msgstr "Reparentar para Novo Nó" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -10443,9 +10615,8 @@ msgid "Toggle Visible" msgstr "Alternar Visibilidade" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Unlock Node" -msgstr "Selecionar Nó" +msgstr "Desbloquear Nó" #: editor/scene_tree_editor.cpp #, fuzzy @@ -10453,45 +10624,40 @@ msgid "Button Group" msgstr "Botão 7" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "(Connecting From)" -msgstr "Erro de Conexão" +msgstr "(Conectando de)" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" msgstr "Aviso de configuração de nó:" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node has %s connection(s) and %s group(s).\n" "Click to show signals dock." msgstr "" -"O nó tem conexão(ões) e grupo(s)\n" +"O nó tem %s conexão(ões) e %s grupo(s).\n" "Clique para mostrar o painel de sinais." #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node has %s connection(s).\n" "Click to show signals dock." msgstr "" -"O nó tem conexões.\n" +"O nó tem %s conexão(ões).\n" "Clique para mostrar o painel de sinais." #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node is in %s group(s).\n" "Click to show groups dock." msgstr "" -"O nó está em grupo(s).\n" +"O nó está em %s grupo(s).\n" "Clique para mostrar o painel de grupos." #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Open Script:" -msgstr "Abrir script" +msgstr "Abrir Script:" #: editor/scene_tree_editor.cpp msgid "" @@ -10542,39 +10708,32 @@ msgid "Select a Node" msgstr "Selecione um Nó" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Path is empty." -msgstr "O caminho está vazio" +msgstr "O caminho está vazio." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty." -msgstr "O nome do arquivo está vazio" +msgstr "O nome do arquivo está vazio." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Path is not local." -msgstr "O caminho não é local" +msgstr "O caminho não é local." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid base path." -msgstr "Caminho base inválido" +msgstr "Caminho base inválido." #: editor/script_create_dialog.cpp -#, fuzzy msgid "A directory with the same name exists." -msgstr "Um diretório de mesmo nome existe" +msgstr "Existe um diretório com o mesmo nome." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid extension." -msgstr "Extensão inválida" +msgstr "Extensão inválida." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Wrong extension chosen." -msgstr "Extensão errada escolhida" +msgstr "Extensão errada escolhida." #: editor/script_create_dialog.cpp msgid "Error loading template '%s'" @@ -10589,67 +10748,56 @@ msgid "Error loading script from %s" msgstr "Erro ao carregar script de %s" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Overrides" -msgstr "Sobrescrever" +msgstr "Sobrescreve" #: editor/script_create_dialog.cpp msgid "N/A" msgstr "N/D" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script / Choose Location" -msgstr "Abrir Script/Escolher Localização" +msgstr "Abrir Script / Escolher Local" #: editor/script_create_dialog.cpp msgid "Open Script" msgstr "Abrir script" #: editor/script_create_dialog.cpp -#, fuzzy msgid "File exists, it will be reused." -msgstr "O arquivo existe, será reaproveitado" +msgstr "O arquivo existe, será reaproveitado." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid class name." -msgstr "Nome de classe inválido" +msgstr "Nome da classe inválido." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid inherited parent name or path." -msgstr "Nome ou caminho de pai herdado invláido" +msgstr "Nome ou caminho do pai herdado inválido." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Script is valid." -msgstr "Script válido" +msgstr "Script válido." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Allowed: a-z, A-Z, 0-9, _ and ." -msgstr "Permitidos: a-z, A-Z, 0-9 e _" +msgstr "Permitidos: a-z, A-Z, 0-9, _ e ." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in script (into scene file)." -msgstr "Script embutido (no arquivo da cena)" +msgstr "Script embutido (no arquivo da cena)." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Will create a new script file." -msgstr "Criar novo arquivo de script" +msgstr "Criará novo arquivo de script." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Will load an existing script file." -msgstr "Carregar arquivo de script existente" +msgstr "Carregará arquivo de script existente." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Nome da Classe" +msgstr "Nome da Classe:" #: editor/script_create_dialog.cpp #, fuzzy @@ -10746,9 +10894,8 @@ msgid "Profiler" msgstr "Profilador" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Network Profiler" -msgstr "Exportar Perfil" +msgstr "Perfis de rede" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -10951,9 +11098,8 @@ msgid "GDNativeLibrary" msgstr "GDNativeLibrary" #: modules/gdnative/gdnative_library_singleton_editor.cpp -#, fuzzy msgid "Enabled GDNative Singleton" -msgstr "Singleton GDBNative ativado" +msgstr "Singleton GDNative ativado" #: modules/gdnative/gdnative_library_singleton_editor.cpp #, fuzzy @@ -10974,7 +11120,7 @@ msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." -msgstr "" +msgstr "Esperado string de comprimento 1 (a caractere)." #: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" @@ -11138,7 +11284,7 @@ msgstr "Métodos de filtragem" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." -msgstr "" +msgstr "Atribua um recurso MeshLibrary a este GridMap para usar seus meshes." #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -11266,6 +11412,16 @@ msgstr "Definir o Tipo da Variável" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Adicionar porta de entrada" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Adicionar porta de saÃda" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "Não deve coincidir com um nome de tipo interno existente." @@ -11331,16 +11487,6 @@ msgstr "Adicionar Sinal" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Adicionar porta de entrada" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Adicionar porta de saÃda" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Remover porta de entrada" @@ -11396,6 +11542,7 @@ msgstr "Adicionar Nó de Pré-carregamento" #: modules/visual_script/visual_script_editor.cpp msgid "Can't drop nodes because script '%s' is not used in this scene." msgstr "" +"Não é possÃvel descartar nós porque o script '% s' não é usado nesta cena." #: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" @@ -11406,6 +11553,9 @@ msgid "" "Can't drop properties because script '%s' is not used in this scene.\n" "Drop holding 'Shift' to just copy the signature." msgstr "" +"Não é possÃvel descartar as propriedades porque o script '% s' não é usado " +"nesta cena.\n" +"Solte segurando 'Shift' para copiar apenas a assinatura." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11476,14 +11626,15 @@ msgstr "Não é possÃvel copiar o nó de função." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" +"Não é possÃvel criar uma função de nós a partir de nós de múltiplas funções." #: modules/visual_script/visual_script_editor.cpp msgid "Select at least one node with sequence port." -msgstr "" +msgstr "Selecione pelo menos um nó com porta de sequência." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Tente ter apenas uma entrada de sequência na seleção." #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -11521,6 +11672,21 @@ msgstr "Membros:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Mudar Tipo Base" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Adicionar nó..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Adicionar Função" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Função:" @@ -11677,10 +11843,14 @@ msgstr "" #: platform/android/export/export.cpp msgid "Custom build requires a valid Android SDK path in Editor Settings." msgstr "" +"Compilação personalizada requer um caminho do Android SDK válido para as " +"Configurações do Editor." #: platform/android/export/export.cpp msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "" +"Caminho SDK do Android inválido para a compilação personalizada nas " +"Configurações do Editor." #: platform/android/export/export.cpp #, fuzzy @@ -11704,6 +11874,9 @@ msgid "" "Trying to build from a custom built template, but no version info for it " "exists. Please reinstall from the 'Project' menu." msgstr "" +"Tentando compilar a partir de um modelo compilado personalizado, mas nenhuma " +"informação de versão para ele existe. Por favor, reinstale pelo menu " +"'Projeto'." #: platform/android/export/export.cpp msgid "" @@ -11712,6 +11885,10 @@ msgid "" " Godot Version: %s\n" "Please reinstall Android build template from 'Project' menu." msgstr "" +"Diferença de versão da compilação do Android:\n" +" Modelo instalado: %s\n" +" Versão do Godot: %s\n" +"Por favor reinstale o modelo de compilação do Android pelo menu 'Projeto'." #: platform/android/export/export.cpp msgid "Building Android Project (gradle)" @@ -11735,30 +11912,10 @@ msgid "Identifier is missing." msgstr "Identificador está ausente." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Segmentos identificadores devem ter comprimento diferente de zero." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "O caractere '%s' não é permitido no identificador." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" -"Um digito não pode ser o primeiro caractere de um segmento identificador." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"O caractere '%s' não pode ser o primeiro caractere de um segmento " -"identificador." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "O identificador deve ter pelo menos um separador '.'." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" "App Store Team ID não especificado - não é possÃvel configurar o projeto." @@ -12406,6 +12563,9 @@ 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 "" +"A Dica não será exibida quando o controle de Filtro do Mouse estiver " +"definido como \"Ignorar\". Para resolver, defina o Filtro do Mouse como " +"\"Parar\" ou \"Continuar\"." #: scene/gui/dialogs.cpp msgid "Alert!" @@ -12496,6 +12656,22 @@ 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 "Identifier segments must be of non-zero length." +#~ msgstr "Segmentos identificadores devem ter comprimento diferente de zero." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Um digito não pode ser o primeiro caractere de um segmento identificador." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "O caractere '%s' não pode ser o primeiro caractere de um segmento " +#~ "identificador." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "O identificador deve ter pelo menos um separador '.'." + #~ msgid "Pause the scene" #~ msgstr "Pausar a cena" @@ -12985,9 +13161,6 @@ msgstr "Constantes não podem serem modificadas." #~ msgid "Rotate 270 degrees" #~ msgstr "Rotacionar 270 degraus" -#~ msgid "Warning" -#~ msgstr "Aviso" - #~ msgid "Variable" #~ msgstr "Variável" @@ -13481,9 +13654,6 @@ msgstr "Constantes não podem serem modificadas." #~ msgid "Re-Import Changed Resources" #~ msgstr "Re-Importar Recursos Alterados" -#~ msgid "Loading Export Templates" -#~ msgstr "Carregando Modelos de Exportação" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -14084,10 +14254,6 @@ msgstr "Constantes não podem serem modificadas." #~ msgstr "Criar Novo Recurso" #, fuzzy -#~ msgid "Full name" -#~ msgstr "Nome Válido" - -#, fuzzy #~ msgid "Organization" #~ msgstr "Transição" @@ -14170,9 +14336,6 @@ msgstr "Constantes não podem serem modificadas." #~ msgid "Lossy Quality:" #~ msgstr "Qualidade com Perdas:" -#~ msgid "Atlas:" -#~ msgstr "Atlas:" - #~ msgid "Shrink By:" #~ msgstr "Encolher por:" diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po index 03976ebf0c..e235096559 100644 --- a/editor/translations/pt_PT.po +++ b/editor/translations/pt_PT.po @@ -14,11 +14,12 @@ # SARDON <fabio3_Santos@hotmail.com>, 2017. # Vinicius Gonçalves <viniciusgoncalves21@gmail.com>, 2017. # ssantos <ssantos@web.de>, 2018, 2019. +# Gonçalo Dinis Guerreiro João <goncalojoao205@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-29 14:49+0000\n" +"PO-Revision-Date: 2019-12-21 08:38+0000\n" "Last-Translator: João Lopes <linux-man@hotmail.com>\n" "Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_PT/>\n" @@ -27,7 +28,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 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -537,8 +538,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Editar" @@ -724,17 +726,21 @@ msgstr "Apenas seleção" msgid "Standard" msgstr "Padrão" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Alternar painel de Scripts" + #: 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 In" -msgstr "Zoom In" +msgstr "Aumentar Zoom" #: 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 "Zoom Out" +msgstr "Diminuir Zoom" #: editor/code_editor.cpp msgid "Reset Zoom" @@ -802,6 +808,11 @@ msgid "Extra Call Arguments:" msgstr "Argumentos de chamada extra:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Selecione Método" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Avançado" @@ -979,7 +990,7 @@ msgid "Resource" msgstr "Recurso" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Caminho" @@ -1275,7 +1286,7 @@ msgstr "Duplicado" #: editor/editor_audio_buses.cpp msgid "Reset Volume" -msgstr "Restabelecer Volume" +msgstr "Repor Volume" #: editor/editor_audio_buses.cpp msgid "Delete Effect" @@ -1303,7 +1314,7 @@ msgstr "Duplicar barramento de áudio" #: editor/editor_audio_buses.cpp msgid "Reset Bus Volume" -msgstr "Restabelecer volume do barramento" +msgstr "Repor Volume do Barramento" #: editor/editor_audio_buses.cpp msgid "Move Audio Bus" @@ -1452,7 +1463,8 @@ msgid "Node Name:" msgstr "Nome do Nó:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nome" @@ -1702,6 +1714,10 @@ msgid "Erase Profile" msgstr "Apagar Perfil" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Perfil de CaracterÃsticas Godot" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Importar Perfil/Perfis" @@ -2665,9 +2681,10 @@ msgstr "Reverter Cena" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "Ferramentas diversas atuantes no Projeto ou Cena." +msgstr "Ferramentas diversas de Projeto ou Cena." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projeto" @@ -3008,6 +3025,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importar Modelos a partir de um Ficheiro ZIP" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Pacote de Modelo" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Exportar Projeto" @@ -3064,6 +3085,11 @@ msgstr "Abrir o Editor seguinte" msgid "Open the previous Editor" msgstr "Abrir o Editor anterior" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Aviso" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Sub-recurso não encontrado." @@ -3510,6 +3536,10 @@ msgid "Select Template File" msgstr "Selecionar Ficheiro de Modelo" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Modelos de Exportação Godot" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Exportar Gestor de Modelos" @@ -4645,6 +4675,11 @@ msgstr "Definir a animação final. Útil para sub-transições." msgid "Transition: " msgstr "Transição: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Modo deslocamento" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4899,6 +4934,30 @@ msgid "Download for this asset is already in progress!" msgstr "A transferência deste Ativo já está em andamento!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Atualizações Recentes" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Atualizações Menos Recentes" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Nome (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Nome (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Licença (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Licença (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Primeiro" @@ -5099,6 +5158,74 @@ msgstr "" "margens." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Topo Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Topo Direita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Fundo Direita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Fundo Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Centro Esquerda" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Centro Topo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Centro Direita" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Centro Fundo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Centro" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Esquerda Wide" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Topo Wide" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Direita Wide" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Fundo Wide" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "VCentro Wide" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "HCentro Wide" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "Rect Completo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Manter Proporção" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Só âncoras" @@ -5184,7 +5311,7 @@ msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp msgid "Zoom Reset" -msgstr "Repor zoom" +msgstr "Reposição do Zoom" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5588,7 +5715,7 @@ msgstr "Modificar tangente da curva" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Curve Preset" -msgstr "Carregar curva predefinida" +msgstr "Carregar Curva Predefinida" #: editor/plugins/curve_editor_plugin.cpp msgid "Add Point" @@ -5764,6 +5891,11 @@ msgid "Remove item %d?" msgstr "Remover item %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Bib. de Meshes..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Adicionar item" @@ -6395,6 +6527,23 @@ msgid "Save File As..." msgstr "Guardar Ficheiro Como..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importar tema" @@ -6521,10 +6670,6 @@ msgstr "Fechar documentos" msgid "Run" msgstr "Executar" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Alternar painel de Scripts" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Passar dentro" @@ -7648,6 +7793,7 @@ msgid "Data Type:" msgstr "Tipo de dados:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ãcone" @@ -7667,6 +7813,10 @@ msgstr "Cor" msgid "Constant" msgstr "Constante" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "Ficheiro Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Apagar seleção" @@ -7777,6 +7927,20 @@ msgid "Merge from Scene" msgstr "Fundir a partir da Cena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Desativar Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Novo %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Próxima Coordenada" @@ -7793,6 +7957,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Selecione a forma, subtile ou Tile anterior." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Modo Região" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Modo Colisão" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Modo Oclusão" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Modo Navegação" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Modo Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Modo Prioridade" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Ãndice:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modo Região" @@ -8999,6 +9198,14 @@ msgid "Runnable" msgstr "Executável" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Adicionar exportação inicial..." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Aplicar correções anteriores..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Apagar correção '%s' da lista?" @@ -9108,7 +9315,11 @@ msgstr "Correções" #: editor/project_export.cpp msgid "Make Patch" -msgstr "Fazer correção" +msgstr "Fazer Correção" + +#: editor/project_export.cpp +msgid "Pack File" +msgstr "Ficheiro Pacote" #: editor/project_export.cpp msgid "Features" @@ -9162,6 +9373,14 @@ msgstr "Modo Exportação?" msgid "Export All" msgstr "Exportar Tudo" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "Ficheiro ZIP" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Pacote de Jogo Godot" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Não existem Modelos de exportação para esta plataforma:" @@ -9467,6 +9686,10 @@ msgid "Projects" msgstr "Projetos" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Última modificação" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Analisar" @@ -9824,7 +10047,7 @@ msgstr "Plugins" #: editor/property_editor.cpp msgid "Preset..." -msgstr "Predefinido..." +msgstr "Predefinição..." #: editor/property_editor.cpp msgid "Zero" @@ -9992,7 +10215,7 @@ msgstr "Para Maiúsculas" #: editor/rename_dialog.cpp msgid "Reset" -msgstr "Restaurar" +msgstr "Repor" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent Node" @@ -11077,6 +11300,14 @@ msgid "Set Variable Type" msgstr "Definir tipo de variável" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Adicionar Porta de Entrada" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Adicionar Porta de SaÃda" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "Sobrepõe-se a função incorporada existente." @@ -11137,14 +11368,6 @@ msgid "Add Signal" msgstr "Adicionar Sinal" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "Adicionar Porta de Entrada" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "Adicionar Porta de SaÃda" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "Remover Porta de Entrada" @@ -11174,7 +11397,7 @@ msgstr "" msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" "Pressione Ctrl para largar um Getter. Pressione Shift para largar uma " -"assinatura genérica." +"Assinatura genérica." #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a simple reference to the node." @@ -11321,6 +11544,18 @@ msgid "Members:" msgstr "Membros:" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "Mudar Tipo Base:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Adicionar Nós.." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Adicionar Função..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "function_name" @@ -11537,30 +11772,10 @@ msgid "Identifier is missing." msgstr "Falta o identificador." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Identificador de segmentos devem ser de comprimento diferente de zero." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "O caráter \"%s\" não é permitido no Identificador." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" -"Um dÃgito não pode ser o primeiro caráter num segmento de Identificador." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"O caráter \"%s\" não pode ser o primeiro caráter num segmento de " -"Identificador." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "O identificador deve ter pelo menos um separador \".\"." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" "ID da equipa da App Store não especificado - não é possÃvel configurar o " @@ -11662,7 +11877,7 @@ msgstr "" #: platform/uwp/export/export.cpp msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -msgstr "Largura inválida da imagem do logotipo 310x150 (deve ser 310x150)." +msgstr "Dimensão inválida da imagem do logótipo 310x150 (deve ser 310x150)." #: platform/uwp/export/export.cpp msgid "Invalid splash screen image dimensions (should be 620x300)." @@ -12277,6 +12492,23 @@ 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 "Identifier segments must be of non-zero length." +#~ msgstr "" +#~ "Identificador de segmentos devem ser de comprimento diferente de zero." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Um dÃgito não pode ser o primeiro caráter num segmento de Identificador." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "O caráter \"%s\" não pode ser o primeiro caráter num segmento de " +#~ "Identificador." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "O identificador deve ter pelo menos um separador \".\"." + #~ msgid "Pause the scene" #~ msgstr "Pausa a cena" @@ -12939,9 +13171,6 @@ msgstr "Constantes não podem ser modificadas." #~ msgid "Rotate 270 degrees" #~ msgstr "Rodar 270 graus" -#~ msgid "Warning" -#~ msgstr "Aviso" - #~ msgid "Variable" #~ msgstr "Variável" diff --git a/editor/translations/ro.po b/editor/translations/ro.po index 266f95691e..f2dc0dd9a2 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -545,8 +545,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Modificare" @@ -741,6 +742,10 @@ msgstr "Numai SelecÈ›ia" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -826,6 +831,11 @@ msgstr "Extra Argumente de Chemare:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Proprietățile obiectului." + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "OpÈ›iuni Snapping" @@ -1012,7 +1022,7 @@ msgid "Resource" msgstr "Resursă" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Cale" @@ -1502,7 +1512,8 @@ msgid "Node Name:" msgstr "Nume Nod:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Nume" @@ -1767,6 +1778,11 @@ msgstr "RMB: Șterge Punctul." #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "Administrează Șabloanele de Export" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "%d mai multe fiÈ™iere" @@ -2772,7 +2788,8 @@ msgstr "RestabileÈ™te Scena" msgid "Miscellaneous project or scene-wide tools." msgstr "Proiect Divers sau unelte pentru scenă." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Proiect" @@ -3121,6 +3138,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importă Șabloane Dintr-o Arhivă ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Exportă Managerul de Șabloane" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Exportă Proiectul" @@ -3177,6 +3199,10 @@ msgstr "Deschide Editorul următor" msgid "Open the previous Editor" msgstr "Deschide Editorul anterior" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3627,6 +3653,11 @@ msgid "Select Template File" msgstr "Selectează fiÈ™ierul È™ablon" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Administrează Șabloanele de Export" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Exportă Managerul de Șabloane" @@ -4845,6 +4876,11 @@ msgstr "" msgid "Transition: " msgstr "TranziÈ›ie" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Mod ÃŽn Jur" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -5107,6 +5143,32 @@ msgid "Download for this asset is already in progress!" msgstr "Descărcarea acestui asset rulează deja!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licență" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licență" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "primul" @@ -5327,6 +5389,85 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Mod RotaÈ›ie" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "RotaÈ›ie poligon" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "RotaÈ›ie poligon" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Mod RotaÈ›ie" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Centrează SelecÈ›ia" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Centrează SelecÈ›ia" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "RotaÈ›ie poligon" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Centrează SelecÈ›ia" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Stânga liniară" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Dreapta liniară" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "ProporÈ›ie Scalare:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Doar ancore" @@ -6025,6 +6166,11 @@ msgid "Remove item %d?" msgstr "Elimini obiectul %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Librărie_de_Structuri..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Adaugă Obiect" @@ -6689,6 +6835,23 @@ msgid "Save File As..." msgstr "Salvează Ca..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6821,10 +6984,6 @@ msgstr "" msgid "Run" msgstr "Execută" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7999,6 +8158,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -8018,6 +8178,11 @@ msgstr "" msgid "Constant" msgstr "Permanent" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "DeschideÈ›i un FiÈ™ier" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -8135,6 +8300,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Vizualizează FiÈ™ierele" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -8153,6 +8331,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Modul de ExecuÈ›ie:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Nod de AnimaÈ›ie" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Editează Poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Creează un Mesh de Navigare" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Mod RotaÈ›ie" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Exportă Proiectul" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Mod ÃŽn Jur" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Modul de ExecuÈ›ie:" @@ -9350,6 +9563,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Adaugă Intrare(Input)" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9451,6 +9673,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " FiÈ™iere" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9506,6 +9733,15 @@ msgstr "Exportă Proiectul" msgid "Export All" msgstr "Exportare" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " FiÈ™iere" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9773,6 +10009,10 @@ msgid "Projects" msgstr "Proiect" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11417,6 +11657,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Adaugă Intrare(Input)" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Adaugă Intrare(Input)" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "" "Nume nevalid. Nu trebuie să se lovească cu un nume de tip deja existent în " @@ -11484,16 +11734,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Adaugă Intrare(Input)" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Adaugă Intrare(Input)" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Elimină punct" @@ -11671,6 +11911,21 @@ msgid "Members:" msgstr "Membri:" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change Base Type:" +msgstr "SchimbaÈ›i Tipul %s" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Se adaugă %s..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "FaceÈ›i FuncÈ›ia" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11872,27 +12127,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12718,10 +12956,6 @@ msgstr "" #~ msgstr "RMB: Șterge Punctul." #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Vizualizează FiÈ™ierele" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "Zoom-aÈ›i ÃŽn" diff --git a/editor/translations/ru.po b/editor/translations/ru.po index 0f8b7da452..6c03c3d0f0 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -59,12 +59,14 @@ # Danil Alexeev <danil@alexeev.xyz>, 2019. # Ravager <al.porkhunov@gmail.com>, 2019. # ÐлекÑандр <akonn7@mail.ru>, 2019. +# Rei <clxgamer12@gmail.com>, 2019. +# Vitaly <arkology11@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-29 14:48+0000\n" -"Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n" +"PO-Revision-Date: 2019-12-22 04:19+0000\n" +"Last-Translator: Vitaly <arkology11@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" "Language: ru\n" @@ -73,7 +75,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 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -216,24 +218,20 @@ msgid "Anim Multi Change Keyframe Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ñмены ключевых кадров анимации" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "Изменить переход" +msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ ÐœÐ½Ð¾Ð³Ð¾ÐºÑ€Ð°Ñ‚Ð½Ð¾Ðµ изменение Переход" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "Изменить положение" +msgstr "Ðнимационное многоÑменное преобразование" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Value" -msgstr "Измененить значение ключевого кадра" +msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾ÐºÑ€Ð°Ñ‚Ð½Ð¾Ðµ изменение ключевых кадров Значение" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Call" -msgstr "Изменить вызов анимации" +msgstr "Ðнимационный многократный вызов изменениÑ" #: editor/animation_track_editor.cpp msgid "Change Animation Length" @@ -586,8 +584,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Редактировать" @@ -773,6 +772,10 @@ msgstr "Только выделÑть" msgid "Standard" msgstr "Стандартный" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Переключить панель Ñкриптов" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -851,6 +854,11 @@ msgid "Extra Call Arguments:" msgstr "Дополнительные параметры вызова:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Выбрать метод" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Дополнительно" @@ -1028,7 +1036,7 @@ msgid "Resource" msgstr "РеÑурÑ" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Путь" @@ -1499,7 +1507,8 @@ msgid "Node Name:" msgstr "Ð˜Ð¼Ñ Ð£Ð·Ð»Ð°:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Ðазвание" @@ -1750,6 +1759,10 @@ msgid "Erase Profile" msgstr "Стереть профиль" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Профиль возможноÑтей Godot" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Импортировать проект" @@ -2022,7 +2035,7 @@ msgstr "" #: editor/editor_help_search.cpp editor/editor_node.cpp #: editor/plugins/script_editor_plugin.cpp msgid "Search Help" -msgstr "Помощь" +msgstr "Справка" #: editor/editor_help_search.cpp msgid "Display All" @@ -2663,7 +2676,7 @@ msgstr "ÐÐ¾Ð²Ð°Ñ Ñцена" #: editor/editor_node.cpp msgid "New Inherited Scene..." -msgstr "ÐÐ¾Ð²Ð°Ñ ÑƒÐ½Ð°ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¡Ñ†ÐµÐ½Ð°..." +msgstr "ÐÐ¾Ð²Ð°Ñ ÑƒÐ½Ð°ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñцена..." #: editor/editor_node.cpp msgid "Open Scene..." @@ -2711,7 +2724,8 @@ msgstr "ВоÑÑтановить Ñцену" msgid "Miscellaneous project or scene-wide tools." msgstr "Прочие инÑтрументы." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Проект" @@ -3054,6 +3068,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Импортировать шаблоны из ZIP файла" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Шаблонный пакет" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "ÐкÑпортировать проект" @@ -3110,6 +3128,11 @@ msgstr "Открыть Ñледующий редактор" msgid "Open the previous Editor" msgstr "Открыть предыдущий редактор" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Предупреждение" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Вложенные реÑурÑÑ‹ не найдены." @@ -3554,6 +3577,10 @@ msgid "Select Template File" msgstr "Выбрать файл шаблона" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Шаблоны ÑкÑпорта Godot" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Менеджер шаблонов ÑкÑпорта" @@ -3632,9 +3659,8 @@ msgid "New Inherited Scene" msgstr "ÐÐ¾Ð²Ð°Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð°Ñ Ñцена" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Set As Main Scene" -msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñцена" +msgstr "Сделать главной Ñценой" #: editor/filesystem_dock.cpp msgid "Open Scenes" @@ -3841,7 +3867,7 @@ msgstr "Узлы не в группе" #: editor/groups_editor.cpp editor/scene_tree_dock.cpp #: editor/scene_tree_editor.cpp msgid "Filter nodes" -msgstr "Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÑƒÐ·Ð»Ð¾Ð²" +msgstr "Фильтр узлов" #: editor/groups_editor.cpp msgid "Nodes in Group" @@ -4050,7 +4076,7 @@ msgstr "СвойÑтва объекта." #: editor/inspector_dock.cpp msgid "Filter properties" -msgstr "СвойÑтва фильтра" +msgstr "Фильтр ÑвойÑтв" #: editor/inspector_dock.cpp msgid "Changes may be lost!" @@ -4362,14 +4388,12 @@ msgstr "" "удаетÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ отÑлеживаемые имена." #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Anim Clips" -msgstr "Дорожки Ðнимации:" +msgstr "Ðнимационные клипы" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Audio Clips" -msgstr "Ðудиодорожки:" +msgstr "Ðудиоклипы" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Functions" @@ -4391,9 +4415,8 @@ msgid "Edit Filtered Tracks:" msgstr "Редактировать фильтры:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Enable Filtering" -msgstr "Включить фильтр" +msgstr "Включить фильтрацию" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -4694,6 +4717,11 @@ msgstr "УÑтановите конец анимации. Полезно Ð´Ð»Ñ msgid "Transition: " msgstr "Переход: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Режим оÑмотра" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4941,13 +4969,37 @@ msgstr "Повторить" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download Error" -msgstr "Ошибка Загрузки" +msgstr "Ошибка загрузки" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download for this asset is already in progress!" msgstr "Загрузка Ñтого шаблона уже идёт!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Ðедавно обновлённые" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "ПоÑледнее обновление" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Ðазвание (Ð-Я)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Ðазвание (Я-Ð)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ (Ð-Я)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ (Я-Ð)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "ПерваÑ" @@ -4981,7 +5033,7 @@ 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 @@ -5058,12 +5110,12 @@ msgstr "Шаг Ñетки:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Primary Line Every:" -msgstr "" +msgstr "ÐŸÐµÑ€Ð²Ð¸Ñ‡Ð½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ ÐšÐ°Ð¶Ð´Ð°Ñ:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "steps" -msgstr "2 шага" +msgstr "шаги" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" @@ -5074,9 +5126,8 @@ msgid "Rotation Step:" msgstr "Шаг поворота:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Step:" -msgstr "МаÑштаб:" +msgstr "Шаг шкалы:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" @@ -5141,13 +5192,79 @@ msgid "Presets for the anchors and margins values of a Control node." msgstr "ПредуÑтановки Ð´Ð»Ñ Ñкорей и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ñтупов контрольного узла." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." -msgstr "" -"ЕÑли активно, при перемещении узлов Control будут изменÑтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñкорей " -"вмеÑто отÑтупов." +msgstr "При активном движении узлы Control менÑÑŽÑ‚ Ñвои ÑÐºÐ¾Ñ€Ñ Ð²Ð¼ÐµÑто полей." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Слева вверху" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Верхнее право" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Ðижнее право" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Ðижнее левое" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Центр Слева" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Топ-центр" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Центральное право" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Центральное дно" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Центр" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Ðалево Широко" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Широчайший Ñпектр" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "ÐŸÑ€Ð°Ð²Ð°Ñ Ð¨Ð¸Ñ€Ð¾Ñ‚Ð°" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Широкий нижний край" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "V Центр Широкий" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "H Центр Широкий" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Full Rect" +msgstr "Полный прÑмоугольник" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "СохранÑть пропорции" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" @@ -5167,6 +5284,8 @@ msgid "" "Game Camera Override\n" "Overrides game camera with editor viewport camera." msgstr "" +"Переопределение игровой камеры\n" +"ПереопределÑет игровую камеру Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ камеры редактора вью-порта." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5174,6 +5293,8 @@ msgid "" "Game Camera Override\n" "No game instance running." msgstr "" +"Переопределение игровой камеры\n" +"Ðет запущенного ÑкземплÑра игры." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5317,7 +5438,6 @@ msgid "Use Rotation Snap" msgstr "ИÑпользовать привÑзку вращениÑ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Scale Snap" msgstr "ИÑпользовать умную привÑзку" @@ -5405,7 +5525,7 @@ msgstr "Обзор" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Always Show Grid" -msgstr "Ð’Ñегда показать Ñетку" +msgstr "Ð’Ñегда показывать Ñетку" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5461,7 +5581,6 @@ msgid "Insert keys (based on mask)." msgstr "Ð’Ñтавить ключи (на оÑнове маÑки)." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "" "Auto insert keys when objects are translated, rotated or scaled (based on " "mask).\n" @@ -5820,6 +5939,11 @@ msgid "Remove item %d?" msgstr "Удалить Ñлемент %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Библиотека полиÑеток..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Добавить Ñлемент" @@ -6453,6 +6577,23 @@ msgid "Save File As..." msgstr "Сохранить как..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Импортировать тему" @@ -6579,10 +6720,6 @@ msgstr "Закрыть документацию" msgid "Run" msgstr "ЗапуÑтить" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Переключить панель Ñкриптов" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Шаг в" @@ -6795,7 +6932,7 @@ msgstr "СпиÑок автозавершениÑ" #: editor/plugins/script_text_editor.cpp msgid "Evaluate Selection" -msgstr "ВычиÑлить выделеннное" +msgstr "ВычиÑлить выделенное" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" @@ -7718,6 +7855,7 @@ msgid "Data Type:" msgstr "Тип информации:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Иконка" @@ -7735,7 +7873,11 @@ msgstr "Цвет" #: editor/plugins/theme_editor_plugin.cpp msgid "Constant" -msgstr "ПоÑтоÑнный" +msgstr "КонÑтанта" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "Файл темы" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7847,6 +7989,20 @@ msgid "Merge from Scene" msgstr "СлиÑние из Ñцены" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Отключить автотайлы" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "ÐтлаÑÑ‹:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÐšÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ‚Ð°" @@ -7863,6 +8019,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Выберите предыдущую форму, Ñлемент тайла или тайл." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Режим региона" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Режим ÑтолкновениÑ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Режим перекрытиÑ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Режим навигации" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Режим битовой маÑки" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Режим приоритета" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "ИндекÑ:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Режим региона" @@ -8198,7 +8389,7 @@ msgstr "Файлы не выбраны!" #: editor/plugins/version_control_editor_plugin.cpp msgid "Detect changes in file diff" -msgstr "" +msgstr "Обнаружение изменений в разнице в файлах" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(GLES3 only)" @@ -8994,6 +9185,8 @@ msgid "" "Returns falloff based on the dot product of surface normal and view " "direction of camera (pass associated inputs to it)." msgstr "" +"Возвращает падение на оÑнове точечного Ð¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð¹ поверхноÑти и " +"Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±Ð·Ð¾Ñ€Ð° камеры (пропуÑтите ÑоответÑтвующие входы к ней)." #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy @@ -9010,11 +9203,11 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." -msgstr "" +msgstr "(только в режиме фрагмента/Ñвета) СкалÑÑ€Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Vector derivative function." -msgstr "" +msgstr "(только в режиме фрагмента/Ñвета) Ð’ÐµÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9081,6 +9274,15 @@ msgid "Runnable" msgstr "Ðктивный" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Добавить начальный ÑкÑпорт..." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Добавить предыдущие патчи..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Удалить латку '%s' из ÑпиÑка?" @@ -9135,6 +9337,9 @@ 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 "" +"ЕÑли Ñтот флажок уÑтановлен, Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÑƒÑтановка будет доÑтупна Ð´Ð»Ñ " +"иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² развертывании одним щелчком мыши.\n" +"Только одна предуÑтановка на платформу может быть помечена как работающаÑ." #: editor/project_export.cpp msgid "Export Path" @@ -9189,12 +9394,16 @@ msgid "Make Patch" msgstr "Создать латку" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Файл пакета" + +#: editor/project_export.cpp msgid "Features" msgstr "ОÑобенноÑти" #: editor/project_export.cpp msgid "Custom (comma-separated):" -msgstr "ПользовательÑкий (через запÑтую):" +msgstr "ПользовательÑкие (через запÑтую):" #: editor/project_export.cpp msgid "Feature List:" @@ -9241,6 +9450,14 @@ msgstr "Режим ÑкÑпорта?" msgid "Export All" msgstr "ÐкÑпортировать вÑÑ‘" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "ZIP-файл" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Пакет игры Godot" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Шаблоны ÑкÑпорта Ð´Ð»Ñ Ñтой платформы отÑутÑтвуют:" @@ -9544,6 +9761,10 @@ msgid "Projects" msgstr "Проекты" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "ПоÑледнее изменение" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Сканировать" @@ -10131,9 +10352,8 @@ msgid "Instance Scene(s)" msgstr "Дополнить Ñценой(ами)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Replace with Branch Scene" -msgstr "Сохранить ветку, как Ñцену" +msgstr "Сохранить ветку как Ñцену" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" @@ -11165,6 +11385,14 @@ msgid "Set Variable Type" msgstr "УÑтановить тип переменной" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Добавить входной порт" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Добавить выходной порт" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "Переопределить ÑущеÑтвующую вÑтроенную функцию." @@ -11225,14 +11453,6 @@ msgid "Add Signal" msgstr "Добавить Ñигнал" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "Добавить входной порт" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "Добавить выходной порт" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "Удалить входной порт" @@ -11287,6 +11507,7 @@ msgstr "Добавить предзагрузочный узел" #: modules/visual_script/visual_script_editor.cpp msgid "Can't drop nodes because script '%s' is not used in this scene." msgstr "" +"ÐÐµÐ»ÑŒÐ·Ñ Ð±Ñ€Ð¾Ñать узлы, потому что в Ñтой Ñцене не иÑпользуетÑÑ Ñкрипт '%s'." #: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" @@ -11297,6 +11518,9 @@ 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, чтобы проÑто Ñкопировать подпиÑÑŒ." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11376,7 +11600,7 @@ msgstr "Выберите по крайней мере один узел Ñ Ð¿Ð¾Ñ #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Попробуйте выбрать только одну поÑледовательноÑть." #: modules/visual_script/visual_script_editor.cpp msgid "Create Function" @@ -11412,7 +11636,18 @@ msgid "Members:" msgstr "СвойÑтва:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy +msgid "Change Base Type:" +msgstr "Изменить базовый тип:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Добавить узлы..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Добавить функцию..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "имÑ_функции" @@ -11629,27 +11864,10 @@ msgid "Identifier is missing." msgstr "ОтÑутÑтвует определитель." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Идентифицированные Ñегменты не должны быть пуÑтыми." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "Символ '%s' в идентификаторе не допуÑкаетÑÑ." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "Цифра не может быть первым Ñимволом идентификатора Ñегмента." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "Символ '%s' не может быть первым Ñимволом идентификатора Ñегмента." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "Идентификатор должен иметь Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один '.' разделитель." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "App Store Team ID не указан - невозможно наÑтроить проект." @@ -12084,7 +12302,6 @@ msgstr "" "ВмеÑто Ñтого иÑпользуйте BakedLightmap." #: scene/3d/light.cpp -#, fuzzy msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." msgstr "SpotLight Ñ ÑƒÐ³Ð»Ð¾Ð¼ более 90 градуÑов не может отбраÑывать тени." @@ -12172,13 +12389,12 @@ msgstr "" "shapes)." #: 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 "" -"Чтобы AnimatedSprite3D отображал кадры, пожалуйÑта уÑтановите или Ñоздайте " -"реÑÑƒÑ€Ñ SpriteFrames в параметре 'Frames'." +"Чтобы AnimatedSprite3D отображал кадры, реÑÑƒÑ€Ñ SpriteFrames должен быть " +"Ñоздан или задан в ÑвойÑтве \"Frames\"." #: scene/3d/vehicle_body.cpp msgid "" @@ -12244,9 +12460,8 @@ msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node." msgstr "Путь, заданный Ð´Ð»Ñ AnimationPlayer, не ведет к узлу AnimationPlayer." #: scene/animation/animation_tree.cpp -#, fuzzy 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." @@ -12262,7 +12477,7 @@ msgstr "HSV" #: scene/gui/color_picker.cpp msgid "Raw" -msgstr "Raw" +msgstr "Сырой" #: scene/gui/color_picker.cpp msgid "Switch between hexadecimal and code values." @@ -12317,7 +12532,6 @@ msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." msgstr "ЕÑли «Exp Edit» включён, «Min Value» должно быть больше 0." #: scene/gui/scroll_container.cpp -#, fuzzy msgid "" "ScrollContainer is intended to work with a single child control.\n" "Use a container as child (VBox, HBox, etc.), or a Control and set the custom " @@ -12382,6 +12596,19 @@ msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть назначены только Ð msgid "Constants cannot be modified." msgstr "КонÑтанты не могут быть изменены." +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "Идентифицированные Ñегменты не должны быть пуÑтыми." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "Цифра не может быть первым Ñимволом идентификатора Ñегмента." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "Символ '%s' не может быть первым Ñимволом идентификатора Ñегмента." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "Идентификатор должен иметь Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один '.' разделитель." + #~ msgid "Pause the scene" #~ msgstr "ПриоÑтановить Ñцену" @@ -12872,9 +13099,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Rotate 270 degrees" #~ msgstr "Поворот на 270 градуÑов" -#~ msgid "Warning" -#~ msgstr "Предупреждение" - #~ msgid "Variable" #~ msgstr "ПеременнаÑ" @@ -13362,9 +13586,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Re-Import Changed Resources" #~ msgstr "Переимпортировать изменённые реÑурÑÑ‹" -#~ msgid "Loading Export Templates" -#~ msgstr "Загрузка шаблонов ÑкÑпорта" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13963,9 +14184,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Create Android keystore" #~ msgstr "Создать keystore Ð´Ð»Ñ Android" -#~ msgid "Full name" -#~ msgstr "Полное имÑ" - #~ msgid "Organizational unit" #~ msgstr "Подразделение" @@ -14069,9 +14287,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Lossy Quality:" #~ msgstr "ÐŸÐ¾Ñ‚ÐµÑ€Ñ ÐºÐ°Ñ‡ÐµÑтва:" -#~ msgid "Atlas:" -#~ msgstr "ÐтлаÑÑ‹:" - #~ msgid "Shrink By:" #~ msgstr "Степень ÑжатиÑ:" diff --git a/editor/translations/si.po b/editor/translations/si.po index 85973b455c..7cac5e6eb1 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -526,8 +526,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -714,6 +715,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -790,6 +795,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp #, fuzzy msgid "Advanced" msgstr "සමà¶à·”ලිà¶à¶ºà·’" @@ -962,7 +971,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1427,7 +1436,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1667,6 +1677,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2575,7 +2589,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2887,6 +2902,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2943,6 +2962,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3373,6 +3396,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4494,6 +4521,11 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4748,6 +4780,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4941,6 +4997,76 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "රේඛීය" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "රේඛීය" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5598,6 +5724,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6223,6 +6353,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6349,10 +6496,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7472,6 +7615,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7491,6 +7635,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7600,6 +7748,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7617,6 +7777,37 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය" @@ -8755,6 +8946,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8854,6 +9053,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8905,6 +9108,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9162,6 +9373,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10736,6 +10951,15 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10800,15 +11024,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "මෙම ලුහුබදින්න෠ඉවà¶à·Š කරන්න." @@ -10982,6 +11197,19 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "à·à·Šâ€à¶»à·’à¶:" + +#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "function_name" msgstr "à·à·Šâ€à¶»à·’à¶:" @@ -11180,27 +11408,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/sk.po b/editor/translations/sk.po index 62811488f9..0cc9288f3c 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -531,8 +531,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -724,6 +725,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -804,6 +809,11 @@ msgstr "" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Filter:" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "Vyvážený" @@ -985,7 +995,7 @@ msgid "Resource" msgstr "Prostriedok" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Cesta" @@ -1461,7 +1471,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1710,6 +1721,10 @@ msgid "Erase Profile" msgstr "VÅ¡etky vybrané" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2645,7 +2660,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2962,6 +2978,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "VÅ¡etky vybrané" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -3021,6 +3042,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3460,6 +3485,11 @@ msgid "Select Template File" msgstr "VytvoriÅ¥ adresár" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "VÅ¡etky vybrané" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4624,6 +4654,11 @@ msgstr "" msgid "Transition: " msgstr "Prechody" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Cesta k Node:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4883,6 +4918,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licencia" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licencia" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5083,6 +5144,76 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Lineárne" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Lineárne" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5755,6 +5886,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6397,6 +6532,23 @@ msgid "Save File As..." msgstr "UložiÅ¥ súbor" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6528,10 +6680,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7686,6 +7834,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7705,6 +7854,11 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "OtvoriÅ¥ súbor" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -7818,6 +7972,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Súbor:" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "Popis:" @@ -7836,6 +8003,39 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Režim Interpolácie" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Režim Interpolácie" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Signály:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Signály:" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Súbor:" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Režim Interpolácie" @@ -9017,6 +9217,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Signály:" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9116,6 +9325,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Súbor:" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9168,6 +9382,15 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr "Súbor:" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9430,6 +9653,10 @@ msgid "Projects" msgstr "Zakladatelia Projektu" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11050,6 +11277,16 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Signály:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Signály:" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -11117,16 +11354,6 @@ msgstr "Signály:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Signály:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Signály:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "VÅ¡etky vybrané" @@ -11306,6 +11533,21 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "ZmeniÅ¥ %s Typ" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Signály:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "VÅ¡etky vybrané" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funkcie:" @@ -11506,27 +11748,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12190,9 +12415,6 @@ msgstr "" #~ msgid "View log" #~ msgstr "Súbor:" -#~ msgid "Path to Node:" -#~ msgstr "Cesta k Node:" - #~ msgid "Delete selected files?" #~ msgstr "OdstrániÅ¥ vybraté súbory?" @@ -12223,10 +12445,6 @@ msgstr "" #~ msgid "Remove Split" #~ msgstr "VÅ¡etky vybrané" -#, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Súbor:" - #~ msgid "Class List:" #~ msgstr "Zoznam tried:" diff --git a/editor/translations/sl.po b/editor/translations/sl.po index 238d4da365..bacc2d15c5 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -558,8 +558,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Uredi" @@ -754,6 +755,10 @@ msgstr "Samo Izbira" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -838,6 +843,11 @@ msgstr "Dodatni Klicni Argumenti:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Lastnosti objekta." + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "Možnosti pripenjanja" @@ -1023,7 +1033,7 @@ msgid "Resource" msgstr "Viri" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Pot" @@ -1509,7 +1519,8 @@ msgid "Node Name:" msgstr "Ime Gradnika:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Ime" @@ -1773,6 +1784,11 @@ msgstr "IzbriÅ¡i toÄke" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "Upravljaj Izvozne Predloge" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "%d veÄ datotek" @@ -2768,7 +2784,8 @@ msgstr "Povrni Prizor" msgid "Miscellaneous project or scene-wide tools." msgstr "RazliÄna projektna ali prizorska orodja." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekt" @@ -3116,6 +3133,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Uvozi Predloge iz ZIP Datoteke" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Izvozni Upravitelj Predlog" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Izvozi Projekt" @@ -3172,6 +3194,10 @@ msgstr "Odpri naslednji Urejevalnik" msgid "Open the previous Editor" msgstr "Odpri prejÅ¡nji Urejevalnik" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3620,6 +3646,11 @@ msgid "Select Template File" msgstr "Izberi datoteko predloge" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Upravljaj Izvozne Predloge" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Izvozni Upravitelj Predlog" @@ -4839,6 +4870,11 @@ msgstr "" msgid "Transition: " msgstr "Prehod" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "NaÄin PloÅ¡Äe" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -5101,6 +5137,32 @@ msgid "Download for this asset is already in progress!" msgstr "Prenos za ta dodatek je že v teku!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licenca" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licenca" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "prvi" @@ -5320,6 +5382,83 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "NaÄin Vrtenja" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "NaÄin Vrtenja" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "NaÄin Vrtenja" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "NaÄin Vrtenja" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "NaÄin Vrtenja" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "NaÄin Vrtenja" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Linearno" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Linearno" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Razmerje Obsega:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Samo SidriÅ¡Äa" @@ -6011,6 +6150,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Knjižnica Modelov..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6665,6 +6809,23 @@ msgid "Save File As..." msgstr "Shrani Kot..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6797,10 +6958,6 @@ msgstr "" msgid "Run" msgstr "Zaženi" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7972,6 +8129,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7991,6 +8149,11 @@ msgstr "" msgid "Constant" msgstr "Konstanta" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Odpri v Datoteki" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -8109,6 +8272,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Ogled datotek" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -8127,6 +8303,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "NaÄin Vrtenja" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Animacijski Gradnik" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Uredi Poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Animacijski Gradnik" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "NaÄin Vrtenja" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Izvozi Projekt" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "NaÄin PloÅ¡Äe" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "NaÄin Vrtenja" @@ -9325,6 +9536,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Dodaj Vnos" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9426,6 +9646,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Datoteke" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9481,6 +9706,15 @@ msgstr "Izvozi Projekt" msgid "Export All" msgstr "Izvozi" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Datoteke" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9747,6 +9981,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Preglej" @@ -11396,6 +11634,16 @@ msgstr "Nastavite Tip Spremenljivke" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Dodaj Vnos" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Dodaj Vnos" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "" "Neveljavno ime. Ne sme se prekrivati z obstojeÄim vgrajenim imenom tipa." @@ -11462,16 +11710,6 @@ msgstr "Dodaj Signal" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Dodaj Vnos" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Dodaj Vnos" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Odstrani toÄko" @@ -11649,6 +11887,21 @@ msgstr "ÄŒlani:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Spremeni Osnovni Tip" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Dodaj vozliÅ¡Äe" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Dodaj Funkcijo" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funkcije:" @@ -11853,28 +12106,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "Ime ni pravilen identifikator:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12722,10 +12958,6 @@ msgstr "Konstante ni možno spreminjati." #~ msgstr "Približaj" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Ogled datotek" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "Približaj" diff --git a/editor/translations/sq.po b/editor/translations/sq.po index 49b45241ed..1c8194e602 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -512,8 +512,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Ndrysho" @@ -701,6 +702,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -781,6 +786,11 @@ msgstr "" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Nyjet filtruese" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "I Balancuar" @@ -962,7 +972,7 @@ msgid "Resource" msgstr "Resursi" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Rrugë" @@ -1446,7 +1456,8 @@ msgid "Node Name:" msgstr "Emri i Nyjes:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Emri" @@ -1714,6 +1725,11 @@ msgstr "Fshi Pikat." #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "Menaxho Shabllonet e Eksportit" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "%d skedarë më shumë" @@ -2695,7 +2711,8 @@ msgstr "Rikthe Skenën" msgid "Miscellaneous project or scene-wide tools." msgstr "Vegla të ndryshme për projektin ose skenën." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekti" @@ -3038,6 +3055,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importo Shabllonet Nga Skedari ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Menaxheri i Shablloneve të Eksportimit" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Eksporto Projektin" @@ -3094,6 +3116,10 @@ msgstr "Hap Editorin tjetër" msgid "Open the previous Editor" msgstr "Hap Editorin e mëparshëm" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3547,6 +3573,11 @@ msgid "Select Template File" msgstr "Zgjidh skedarin e shabllonit" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Menaxho Shabllonet e Eksportit" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Menaxheri i Shablloneve të Eksportimit" @@ -4689,6 +4720,11 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Luaj Skenën" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4949,6 +4985,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Liçensa" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Liçensa" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5147,6 +5209,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5809,6 +5939,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "LibrariaMesh..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6437,6 +6572,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6566,10 +6718,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7706,6 +7854,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7725,6 +7874,11 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr " Skedarët" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7835,6 +7989,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "%s i Ri" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7851,6 +8018,35 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Metoda Pa Shpërqëndrime" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8998,6 +9194,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Shto te të preferuarat" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9097,6 +9302,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Skedarët" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9148,6 +9358,15 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Skedarët" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9411,6 +9630,10 @@ msgid "Projects" msgstr "Projekti" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11016,6 +11239,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Shto te të preferuarat" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Shto te të preferuarat" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "Emër i palejuar. Nuk duhet të përplaset me emrin e një tipi 'buit-in'." @@ -11081,16 +11314,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Shto te të preferuarat" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Shto te të preferuarat" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Hiq Autoload-in" @@ -11265,6 +11488,20 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Ndrysho Tipin e %s" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Funksionet:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funksionet:" @@ -11463,27 +11700,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index e868067d39..e904f2aef5 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -554,8 +554,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Уреди" @@ -750,6 +751,10 @@ msgstr "Само одабрано" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Прикажи панел Ñкриптица" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -835,6 +840,11 @@ msgstr "Додатни аргументи позива:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "ПоÑтавке објекта." + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "ПоÑтавке залепљавања" @@ -1023,7 +1033,7 @@ msgid "Resource" msgstr "РеÑурÑ" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Пут" @@ -1510,7 +1520,8 @@ msgid "Node Name:" msgstr "Име чвора:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Име" @@ -1777,6 +1788,11 @@ msgstr "Обриши TileMap" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "Управљај извозним шаблонима" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "још %d датотека/е" @@ -2775,7 +2791,8 @@ msgstr "Поврати Ñцену" msgid "Miscellaneous project or scene-wide tools." msgstr "Разни алати за пројекат или Ñцену." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Пројекат" @@ -3125,6 +3142,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Увези шаблоне из ZIP датотеке" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Менаџер извозних шаблона" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Извези пројекат" @@ -3181,6 +3203,10 @@ msgstr "Отвори Ñледећи уредник" msgid "Open the previous Editor" msgstr "Отвори претходни уредник" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3636,6 +3662,11 @@ msgid "Select Template File" msgstr "Одабери шаблонÑку датотеку" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Управљај извозним шаблонима" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Менаџер извозних шаблона" @@ -4865,6 +4896,11 @@ msgstr "" msgid "Transition: " msgstr "Померај" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Режим инÑпекције" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -5128,6 +5164,32 @@ msgid "Download for this asset is already in progress!" msgstr "Преузимање овог реÑурÑа је у току!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "ЛиценÑа" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "ЛиценÑа" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "први" @@ -5340,6 +5402,87 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Лево" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "деÑно" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Ротирај полигон" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Поглед одоздо" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Увучи лево" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "Центрирај одабрано" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "Увучи деÑно" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Доле" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Поглед Ñ Ð»ÐµÐ²Ð°" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Поглед одозго" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Поглед Ñ Ð´ÐµÑна" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Поглед одоздо" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Размера Ñкале:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Само Ñидра" @@ -6042,6 +6185,11 @@ msgid "Remove item %d?" msgstr "Обриши Ñтвар %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Додај Ñтвар" @@ -6709,6 +6857,23 @@ msgid "Save File As..." msgstr "Сачувај као..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Увези тему" @@ -6844,10 +7009,6 @@ msgstr "Затвори документацију" msgid "Run" msgstr "Покрени" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Прикажи панел Ñкриптица" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Корак у" @@ -8057,6 +8218,7 @@ msgid "Data Type:" msgstr "Тип податка:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Икона" @@ -8076,6 +8238,11 @@ msgstr "Боја" msgid "Constant" msgstr "КонÑтантан" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Сачувај тему" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Обриши одабрано" @@ -8196,6 +8363,19 @@ msgid "Merge from Scene" msgstr "Споји од Ñцене" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "ÐутоматÑки рез" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "Следећа Ñкриптица" @@ -8215,6 +8395,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Режим ротације" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Ðнимациони чвор" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Измени полигон" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Ðаправи навигациону мрежу" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Режим ротације" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Режим извоза:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "Режим инÑпекције" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Режим ротације" @@ -9432,6 +9647,15 @@ msgid "Runnable" msgstr "Покретљива" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Додај улаз" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Обриши закрпу „%s“ Ñа лиÑте?" @@ -9542,6 +9766,11 @@ msgid "Make Patch" msgstr "Ðаправи закрп" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Датотеке" + +#: editor/project_export.cpp msgid "Features" msgstr "КарактериÑтике" @@ -9597,6 +9826,15 @@ msgstr "Режим извоза:" msgid "Export All" msgstr "Извоз" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Датотеке" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Извозни шаблони за ову платформу ниÑу пронађени:" @@ -9866,6 +10104,10 @@ msgid "Projects" msgstr "Пројекат" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11523,6 +11765,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Додај улаз" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Додај улаз" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "Ðеважеће име. Име је резервиÑано за поÑтојећи уграђени тип." @@ -11588,16 +11840,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Додај улаз" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Додај улаз" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Обриши тачку" @@ -11775,6 +12017,21 @@ msgid "Members:" msgstr "Чланови:" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change Base Type:" +msgstr "Измени уобичајен тип" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Додавање %s..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Иди на функцију..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11976,27 +12233,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index e4298b2aa5..f8ed7bdd96 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -530,8 +530,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -723,6 +724,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -799,6 +804,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -971,7 +980,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1436,7 +1445,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1677,6 +1687,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2590,7 +2604,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2903,6 +2918,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2959,6 +2978,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3390,6 +3413,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4518,6 +4545,10 @@ msgstr "" msgid "Transition: " msgstr "Tranzicije" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4773,6 +4804,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4968,6 +5023,76 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Linearna" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Linearna" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5629,6 +5754,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6259,6 +6388,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6385,10 +6531,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7523,6 +7665,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7542,6 +7685,10 @@ msgstr "" msgid "Constant" msgstr "Kontanta" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7653,6 +7800,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7669,6 +7828,37 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Napravi" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Napravi" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Napravi" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8827,6 +9017,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8926,6 +9124,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8977,6 +9179,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9234,6 +9444,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10819,6 +11033,16 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Optimizuj Animaciju" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "ObriÅ¡i Selekciju" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10884,16 +11108,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Optimizuj Animaciju" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "ObriÅ¡i Selekciju" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "ObriÅ¡i Selekciju" @@ -11067,6 +11281,19 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Funkcije:" + +#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "function_name" msgstr "Funkcije:" @@ -11265,27 +11492,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index c1cc6a8a62..34123616d2 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -541,8 +541,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Redigera" @@ -737,6 +738,10 @@ msgstr "Endast Urval" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -822,6 +827,11 @@ msgstr "Extra Call Argument:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Filtrera noder" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "Balanserad" @@ -1010,7 +1020,7 @@ msgid "Resource" msgstr "Resurs" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Sökväg" @@ -1501,7 +1511,8 @@ msgid "Node Name:" msgstr "Node Namn:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Namn" @@ -1765,6 +1776,10 @@ msgid "Erase Profile" msgstr "Radera punkter" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp #, fuzzy msgid "Import Profile(s)" msgstr "%d fler filer" @@ -2768,7 +2783,8 @@ msgstr "Ã…terställ Scen" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Projekt" @@ -3093,6 +3109,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importera Mall frÃ¥n ZIP fil" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Mallar" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Exportera Projekt" @@ -3149,6 +3170,11 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Varning" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3599,6 +3625,11 @@ msgid "Select Template File" msgstr "Välj mall-fil" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Mallar" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4818,6 +4849,11 @@ msgstr "" msgid "Transition: " msgstr "ÖvergÃ¥ng" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Raw-Läge" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -5079,6 +5115,32 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Licens" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Licens" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5281,6 +5343,84 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Vänster" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "Höger" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "Vy underifrÃ¥n" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Vy underifrÃ¥n" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Botten" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Vy frÃ¥n vänster" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Vy ovanifrÃ¥n" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Vy frÃ¥n höger" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Vy underifrÃ¥n" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Skalnings förhÃ¥llande:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5960,6 +6100,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6609,6 +6754,23 @@ msgid "Save File As..." msgstr "Spara Som..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importera Tema" @@ -6743,10 +6905,6 @@ msgstr "" msgid "Run" msgstr "Kör" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7920,6 +8078,7 @@ msgid "Data Type:" msgstr "Datatyp:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikon" @@ -7939,6 +8098,11 @@ msgstr "Färg" msgid "Constant" msgstr "Konstant" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -8054,6 +8218,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Visa Filer" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "Nästa Skript" @@ -8073,6 +8250,40 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "Raw-Läge" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Animations-Node" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Redigera Polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Animations-Node" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Raw-Läge" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Exportera Projekt" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "Raw-Läge" @@ -9263,6 +9474,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Favoriter:" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9365,6 +9585,11 @@ msgid "Make Patch" msgstr "Gör Patch" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Packar" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9420,6 +9645,15 @@ msgstr "Exportera Projekt" msgid "Export All" msgstr "Exportera" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr "Fil" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9690,6 +9924,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Skanna" @@ -11341,6 +11579,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "Favoriter:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Favoriter:" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "Ogiltigt namn. FÃ¥r inte vara samma som ett befintligt inbyggt typnamn." @@ -11406,16 +11654,6 @@ msgstr "Lägg till Signal" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Favoriter:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Favoriter:" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Ta bort Autoload" @@ -11594,6 +11832,21 @@ msgstr "Medlemmar:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Ändra Typ" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Lägg Till Node" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Lägg till Funktion" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Funktioner:" @@ -11796,27 +12049,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12592,10 +12828,6 @@ msgstr "" #~ msgstr "Uppdatera Alltid" #, fuzzy -#~ msgid "Raw Mode" -#~ msgstr "Raw-Läge" - -#, fuzzy #~ msgid "Path to Node:" #~ msgstr "Sökväg till Node:" @@ -12692,10 +12924,6 @@ msgstr "" #~ "Skapa och tilldela en?" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Visa Filer" - -#, fuzzy #~ msgid "Save Theme As" #~ msgstr "Spara Tema Som" @@ -12763,9 +12991,6 @@ msgstr "" #~ msgid "Rotate 270 degrees" #~ msgstr "Rotera 270 grader" -#~ msgid "Warning" -#~ msgstr "Varning" - #, fuzzy #~ msgid "Variable" #~ msgstr "Variabel" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index 5035e886c5..6bbe6f8744 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -525,8 +525,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -715,6 +716,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -791,6 +796,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -963,7 +972,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1428,7 +1437,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1669,6 +1679,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2579,7 +2593,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2891,6 +2906,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2947,6 +2966,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3378,6 +3401,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4501,6 +4528,10 @@ msgstr "" msgid "Transition: " msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4755,6 +4786,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4947,6 +5002,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5602,6 +5725,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6229,6 +6356,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6355,10 +6499,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7480,6 +7620,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7499,6 +7640,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7609,6 +7754,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7625,6 +7782,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8759,6 +8944,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8858,6 +9051,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8909,6 +9106,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9166,6 +9371,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10745,6 +10954,15 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10807,15 +11025,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯" @@ -10988,6 +11197,19 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11184,27 +11406,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/te.po b/editor/translations/te.po index 4ad5ae8777..b21a0874dc 100644 --- a/editor/translations/te.po +++ b/editor/translations/te.po @@ -507,8 +507,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -694,6 +695,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -770,6 +775,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -941,7 +950,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1406,7 +1415,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1646,6 +1656,10 @@ msgid "Erase Profile" msgstr "" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2554,7 +2568,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2865,6 +2880,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2921,6 +2940,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3351,6 +3374,10 @@ msgid "Select Template File" msgstr "" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4461,6 +4488,10 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4715,6 +4746,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -4906,6 +4961,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5555,6 +5678,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6180,6 +6307,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6306,10 +6450,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7424,6 +7564,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7443,6 +7584,10 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7551,6 +7696,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7567,6 +7724,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -8692,6 +8877,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -8791,6 +8984,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8842,6 +9039,14 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9099,6 +9304,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10669,6 +10878,14 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10729,14 +10946,6 @@ msgid "Add Signal" msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "" @@ -10907,6 +11116,18 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11103,27 +11324,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/th.po b/editor/translations/th.po index af1bb53b9e..c2fd5514ef 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -560,8 +560,9 @@ msgstr "เฟรมต่à¸à¸§à¸´à¸™à¸²à¸—ี" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "à¹à¸à¹‰à¹„ข" @@ -756,6 +757,10 @@ msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸à¸" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "เปิด/ปิดà¹à¸œà¸‡à¸ªà¸„ริปต์" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -839,6 +844,11 @@ msgstr "ตัวà¹à¸›à¸£à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•ิม:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "เลืà¸à¸à¹€à¸¡à¸—็à¸à¸”" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "ตัวเลืà¸à¸à¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”" @@ -1025,7 +1035,7 @@ msgid "Resource" msgstr "รีซà¸à¸£à¹Œà¸ª" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡" @@ -1508,7 +1518,8 @@ msgid "Node Name:" msgstr "ชื่à¸à¹‚หนด:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "ชื่à¸" @@ -1778,6 +1789,11 @@ msgstr "ลบพื้นที่" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "จัดà¸à¸²à¸£à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "นำเข้าโปรเจà¸à¸•์à¹à¸¥à¹‰à¸§" @@ -2754,7 +2770,8 @@ msgstr "คืนà¸à¸¥à¸±à¸šà¸‰à¸²à¸" msgid "Miscellaneous project or scene-wide tools." msgstr "โปรเจà¸à¸•์à¹à¸¥à¸°à¹€à¸„รื่à¸à¸‡à¸¡à¸·à¸à¸à¸·à¹ˆà¸™ ๆ" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "โปรเจà¸à¸•์" @@ -3091,6 +3108,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "นำเข้าà¹à¸¡à¹ˆà¹à¸šà¸šà¸ˆà¸²à¸à¹„ฟล์ ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "จัดà¸à¸²à¸£à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "ส่งà¸à¸à¸à¹‚ปรเจà¸à¸•์" @@ -3147,6 +3169,11 @@ msgstr "เปิดตัวà¹à¸à¹‰à¹„ขถัดไป" msgid "Open the previous Editor" msgstr "เปิดตัวà¹à¸à¹‰à¹„ขà¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "คำเตืà¸à¸™" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3597,6 +3624,11 @@ msgid "Select Template File" msgstr "เลืà¸à¸à¹„ฟล์à¹à¸¡à¹ˆà¹à¸šà¸š" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลดà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "จัดà¸à¸²à¸£à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸" @@ -4820,6 +4852,11 @@ msgstr "" msgid "Transition: " msgstr "ทรานสิชัน" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "โหมดมุมมà¸à¸‡" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -5082,6 +5119,32 @@ msgid "Download for this asset is already in progress!" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸”าวน์โหลดไฟล์นี้à¸à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "สัà¸à¸à¸²à¸à¸™à¸¸à¸à¸²à¸•" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "สัà¸à¸à¸²à¸à¸™à¸¸à¸à¸²à¸•" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "à¹à¸£à¸à¸ªà¸¸à¸”" @@ -5297,6 +5360,88 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "ซ้าย" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "ขวา" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "ย้ายไปขวา" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "มุมล่าง" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "ย่à¸à¸«à¸™à¹‰à¸²à¸‹à¹‰à¸²à¸¢" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "ให้สิ่งที่เลืà¸à¸à¸à¸¢à¸¹à¹ˆà¸à¸¥à¸²à¸‡à¸ˆà¸" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "ย่à¸à¸«à¸™à¹‰à¸²à¸‚วา" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "ล่าง" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "มุมซ้าย" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "มุมบน" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "มุมขวา" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "มุมล่าง" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Full Rect" +msgstr "ชื่à¸à¹€à¸•็ม" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "à¸à¸±à¸•ราส่วนเวลา:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "ปรับหมุดเท่านั้น" @@ -5997,6 +6142,11 @@ msgid "Remove item %d?" msgstr "ลบไà¸à¹€à¸—ม %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "เพิ่มไà¸à¹€à¸—ม" @@ -6660,6 +6810,23 @@ msgid "Save File As..." msgstr "บันทึà¸à¹€à¸›à¹‡à¸™..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "นำเข้าธีม" @@ -6793,10 +6960,6 @@ msgstr "ปิดคู่มืà¸" msgid "Run" msgstr "รัน" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "เปิด/ปิดà¹à¸œà¸‡à¸ªà¸„ริปต์" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "คำสั่งต่à¸à¹„ป" @@ -8002,6 +8165,7 @@ msgid "Data Type:" msgstr "ชนิดข้à¸à¸¡à¸¹à¸¥:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "รูปย่à¸" @@ -8021,6 +8185,11 @@ msgstr "สี" msgid "Constant" msgstr "คงที่" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "ธีม" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "ลบที่เลืà¸à¸" @@ -8140,6 +8309,20 @@ msgid "Merge from Scene" msgstr "รวมจาà¸à¸‰à¸²à¸" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Autotiles" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "%s ใหม่" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "ไปชั้นบน" @@ -8159,6 +8342,41 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "โหมดà¸à¸²à¸£à¸—ำงาน:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "โหนดà¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "สร้าง Mesh นำทาง" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "โหมดหมุน" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "วิธีà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸à¸à¸:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "ดัชนี:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "โหมดà¸à¸²à¸£à¸—ำงาน:" @@ -9383,6 +9601,15 @@ msgid "Runnable" msgstr "รันได้" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "เพิ่มà¸à¸´à¸™à¸žà¸¸à¸•" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "ลบà¹à¸žà¸•ช์ '%s' จาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸?" @@ -9488,6 +9715,11 @@ msgid "Make Patch" msgstr "สร้างà¹à¸žà¸•ช์" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " ไฟล์" + +#: editor/project_export.cpp msgid "Features" msgstr "ฟีเจà¸à¸£à¹Œ" @@ -9542,6 +9774,15 @@ msgstr "วิธีà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸à¸à¸:" msgid "Export All" msgstr "ส่งà¸à¸à¸" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " ไฟล์" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸¥à¸•ฟà¸à¸£à¹Œà¸¡à¸™à¸µà¹‰:" @@ -9820,6 +10061,10 @@ msgid "Projects" msgstr "โปรเจà¸à¸•์" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "สà¹à¸à¸™" @@ -11504,6 +11749,16 @@ msgstr "à¹à¸à¹‰à¹„ขประเภทตัวà¹à¸›à¸£" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "เพิ่มà¸à¸´à¸™à¸žà¸¸à¸•" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "เพิ่มà¸à¸´à¸™à¸žà¸¸à¸•" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "ชื่à¸à¸œà¸´à¸”พลาด ต้à¸à¸‡à¹„ม่ใช้ชื่à¸à¹€à¸”ียวà¸à¸±à¸šà¸Šà¸™à¸´à¸”ตัวà¹à¸›à¸£" @@ -11569,16 +11824,6 @@ msgstr "เพิ่มสัà¸à¸à¸²à¸“" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "เพิ่มà¸à¸´à¸™à¸žà¸¸à¸•" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "เพิ่มà¸à¸´à¸™à¸žà¸¸à¸•" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "ลบจุด" @@ -11758,6 +12003,21 @@ msgstr "ตัวà¹à¸›à¸£:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "เปลี่ยนประเภท" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "เพิ่มโหนด" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "เพิ่มฟังà¸à¹Œà¸Šà¸±à¸™" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "ฟังà¸à¹Œà¸Šà¸±à¸™:" @@ -11960,28 +12220,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "ไม่สามารถใช้ชื่à¸à¸™à¸µà¹‰à¹„ด้:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -13132,9 +13375,6 @@ msgstr "" #~ msgid "Rotate 270 degrees" #~ msgstr "หมุน 270 à¸à¸‡à¸¨à¸²" -#~ msgid "Warning" -#~ msgstr "คำเตืà¸à¸™" - #~ msgid "Variable" #~ msgstr "ตัวà¹à¸›à¸£" @@ -13606,9 +13846,6 @@ msgstr "" #~ msgid "Re-Import Changed Resources" #~ msgstr "นำเข้ารีซà¸à¸£à¹Œà¸ªà¸—ี่à¹à¸à¹‰à¹„ขà¸à¸µà¸à¸„รั้ง" -#~ msgid "Loading Export Templates" -#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลดà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -14170,9 +14407,6 @@ msgstr "" #~ msgid "Create Android keystore" #~ msgstr "สร้าง Android keystore" -#~ msgid "Full name" -#~ msgstr "ชื่à¸à¹€à¸•็ม" - #~ msgid "Organization" #~ msgstr "à¸à¸‡à¸„์à¸à¸£" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 6ef831b3be..bcbf18d594 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -564,8 +564,9 @@ msgstr "FPS" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Düzenle" @@ -751,6 +752,10 @@ msgstr "Yalnızca Seçim" msgid "Standard" msgstr "Standart" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Betikler Panelini Aç/Kapa" + #: 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 @@ -829,6 +834,11 @@ msgid "Extra Call Arguments:" msgstr "Ekstra ÇaÄŸrı Argümanları:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Metot Seç" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "GeliÅŸmiÅŸ" @@ -1005,7 +1015,7 @@ msgid "Resource" msgstr "Kaynak" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "Yol" @@ -1477,7 +1487,8 @@ msgid "Node Name:" msgstr "Düğüm adı:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "İsim" @@ -1726,6 +1737,11 @@ msgid "Erase Profile" msgstr "Profili Sil" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "Dışa Aktarım Åžablonlarını Yönet" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Profil(leri) İçe Aktar" @@ -2686,7 +2702,8 @@ msgstr "Sahneyi Eski Durumuna Çevir" msgid "Miscellaneous project or scene-wide tools." msgstr "ÇeÅŸitli proje ya da sahne-çapında araçlar." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Proje" @@ -3022,6 +3039,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Åžablonları Zip Dosyasından İçeri Aktar" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Dışa Aktarım Åžablonu Yöneticisi" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Projeyi Dışa Aktar" @@ -3078,6 +3100,11 @@ msgstr "Sonraki Düzenleyiciyi aç" msgid "Open the previous Editor" msgstr "Önceki Düzenleyiciyi Aç" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Uyarı" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Alt kaynağı bulunamadı." @@ -3525,6 +3552,11 @@ msgid "Select Template File" msgstr "Åžablon Dosyası Seç" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Dışa Aktarım Kalıpları Yükleniyor" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Dışa Aktarım Åžablonu Yöneticisi" @@ -4667,6 +4699,11 @@ msgstr "" msgid "Transition: " msgstr "GeçiÅŸ: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Kaydırma Biçimi" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4921,6 +4958,32 @@ msgid "Download for this asset is already in progress!" msgstr "Bu nesne için zaten sürdürülen bir indirme var!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Lisans" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Lisans" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "İlk" @@ -5125,6 +5188,88 @@ msgstr "" "noktasını deÄŸiÅŸtirir." #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "Sol" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "SaÄŸ" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "SaÄŸa Döndür" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "Alttan Görünüm" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Sola Girintile" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "İçre Seçimi" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "SaÄŸa Girintile" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "Alt" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Soldan Görünüm" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "Üstten Görünüm" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "SaÄŸdan Görünüm" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "Alttan Görünüm" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Full Rect" +msgstr "Tam adı" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Ölçek Oranı:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Sadece çapalar" @@ -5788,6 +5933,11 @@ msgid "Remove item %d?" msgstr "%d öğe kaldırılsın mı?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary ..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Öğe Ekle" @@ -6419,6 +6569,23 @@ msgid "Save File As..." msgstr "Farklı Kaydet..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Kalıbı İçe Aktar" @@ -6545,10 +6712,6 @@ msgstr "Belgeleri Kapat" msgid "Run" msgstr "Çalıştır" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Betikler Panelini Aç/Kapa" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "İçeri Adımla" @@ -7674,6 +7837,7 @@ msgid "Data Type:" msgstr "Veri Türü:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Simge" @@ -7693,6 +7857,11 @@ msgstr "Renk" msgid "Constant" msgstr "Sabit" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Seçimi Sil" @@ -7805,6 +7974,20 @@ msgid "Merge from Scene" msgstr "Sahneden BirleÅŸtir" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Oto-döşemeleri PasifleÅŸtir" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Atlas :" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Sonraki Koordinat" @@ -7821,6 +8004,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Önceki ÅŸekil, altdöşeme ya da Döşemeyi Seç." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Bölge Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Temas Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Örtü Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Gezinim Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "BitMaskeleme Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Öncelik Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "İndeks:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Bölge Åžekli" @@ -9013,6 +9231,15 @@ msgid "Runnable" msgstr "KoÅŸturulabilir" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "GiriÅŸ noktası ekle" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "'%s' yaması listeden silinsin mi?" @@ -9125,6 +9352,11 @@ msgid "Make Patch" msgstr "Yama Yap" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Dosyalar" + +#: editor/project_export.cpp msgid "Features" msgstr "Özellikler" @@ -9179,6 +9411,15 @@ msgstr "Dışa Aktarma Biçimi:" msgid "Export All" msgstr "Dışa Aktar" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Dosyalar" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Bu platform için dışa aktarma ÅŸablonu eksik:" @@ -9460,6 +9701,11 @@ msgid "Projects" msgstr "Proje" #: editor/project_manager.cpp +#, fuzzy +msgid "Last Modified" +msgstr "DeÄŸiÅŸti" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Tara" @@ -11155,6 +11401,16 @@ msgstr "DeÄŸiÅŸken Tipini Ayarla" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "GiriÅŸ Ekle" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "GiriÅŸ Ekle" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "Geçersiz ad. Var olan gömülü türdeki ad ile çakışmamalı." @@ -11220,16 +11476,6 @@ msgstr "Sinyal Ekle" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "GiriÅŸ Ekle" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "GiriÅŸ Ekle" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Noktayı kaldır" @@ -11413,6 +11659,21 @@ msgstr "Üyeler:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Temel Tipi DeÄŸiÅŸtir" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Düğüm Ekle..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Fonksiyon Ekle" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Fonksiyon:" @@ -11618,28 +11879,11 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp #, fuzzy msgid "The character '%s' is not allowed in Identifier." msgstr "Ad doÄŸru bir belirleyici deÄŸil:" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12853,9 +13097,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." #~ msgid "Rotate 270 degrees" #~ msgstr "270 Düzeyde Döndür" -#~ msgid "Warning" -#~ msgstr "Uyarı" - #~ msgid "Variable" #~ msgstr "DeÄŸiÅŸken" @@ -13329,9 +13570,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." #~ msgid "Re-Import Changed Resources" #~ msgstr "DeÄŸiÅŸtirilmiÅŸ Kaynakları Yeniden İçe Aktar" -#~ msgid "Loading Export Templates" -#~ msgstr "Dışa Aktarım Kalıpları Yükleniyor" - #, fuzzy #~ msgid "" #~ "\n" @@ -13916,9 +14154,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." #~ msgid "Create Android keystore" #~ msgstr "Android Dokunaç Yığımı OluÅŸtur" -#~ msgid "Full name" -#~ msgstr "Tam adı" - #~ msgid "Organizational unit" #~ msgstr "KuruluÅŸsal birim" @@ -14022,9 +14257,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." #~ msgid "Lossy Quality:" #~ msgstr "Kayıplı Nitelik:" -#~ msgid "Atlas:" -#~ msgstr "Atlas :" - #~ msgid "Shrink By:" #~ msgstr "Küçült:" diff --git a/editor/translations/uk.po b/editor/translations/uk.po index 881e8f1911..3d8c0d9f7e 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-11-25 04:04+0000\n" +"PO-Revision-Date: 2019-12-21 08:37+0000\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" @@ -26,7 +26,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 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -539,8 +539,9 @@ msgstr "Кадри за Ñекунду" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Редагувати" @@ -726,6 +727,10 @@ msgstr "Тільки виділити" msgid "Standard" msgstr "Стандартний" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "Перемкнути панель Ñкриптів" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -804,6 +809,11 @@ msgid "Extra Call Arguments:" msgstr "Додаткові аргументи виклику:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Вибір методу" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Додатково" @@ -981,7 +991,7 @@ msgid "Resource" msgstr "РеÑурÑ" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "ШлÑÑ…" @@ -1454,7 +1464,8 @@ msgid "Node Name:" msgstr "Ім'Ñ Ð’ÑƒÐ·Ð»Ð°:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Ðазва" @@ -1705,6 +1716,10 @@ msgid "Erase Profile" msgstr "Витерти профіль" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Профіль можливоÑтей Godot" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Імпортувати профілі" @@ -2670,7 +2685,8 @@ msgstr "Повернути Ñцену" msgid "Miscellaneous project or scene-wide tools." msgstr "Різні проєктні або Ñценографічні інÑтрументи." -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Проєкт" @@ -3012,6 +3028,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Імпортувати шаблони з ZIP-файлу" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Пакунок шаблонів" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "ЕкÑпортувати проєкт" @@ -3068,6 +3088,11 @@ msgstr "Відкрити наÑтупний редактор" msgid "Open the previous Editor" msgstr "Відкрити попередній редактор" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "ПопередженнÑ" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Підлеглих реÑурÑів не знайдено." @@ -3513,6 +3538,10 @@ msgid "Select Template File" msgstr "Виберіть файл шаблону" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Шаблони екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Godot" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Менеджер екÑпорту шаблонів" @@ -4654,6 +4683,11 @@ msgstr "Ð’Ñтановити кінець анімації. КориÑно Ð´Ð»Ñ msgid "Transition: " msgstr "Перехід: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Режим панорамуваннÑ" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4908,6 +4942,30 @@ msgid "Download for this asset is already in progress!" msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ активу вже виконуєтьÑÑ!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "Ðещодавно оновлені" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Ðайдавніше оновлені" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "Ðазва (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "Ðазва (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "Ð›Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Ð›Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Перший" @@ -5110,6 +5168,74 @@ msgstr "" "їхні полÑ." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Згори ліворуч" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Згори праворуч" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Внизу праворуч" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Внизу ліворуч" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "За центром ліворуч" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "За центром згори" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "За центром праворуч" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "За центром внизу" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "За центром" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Ліворуч за шириною" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Згори за шириною" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Праворуч за шириною" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Внизу за шириною" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "Верт. за центром за шириною" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "Гор. за центром за шириною" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "УвеÑÑŒ прÑмокутник" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Зберігати ÑÐ¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð²" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Тільки прив'Ñзки" @@ -5777,6 +5903,11 @@ msgid "Remove item %d?" msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Бібліотека Ñітки..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Додати елемент" @@ -6410,6 +6541,23 @@ msgid "Save File As..." msgstr "Зберегти файл Ñк…" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Імпортувати тему" @@ -6536,10 +6684,6 @@ msgstr "Закрити документацію" msgid "Run" msgstr "ЗапуÑтити" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Перемкнути панель Ñкриптів" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "Крок в" @@ -7668,6 +7812,7 @@ msgid "Data Type:" msgstr "Тип даних:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Піктограма" @@ -7687,6 +7832,10 @@ msgstr "Колір" msgid "Constant" msgstr "Сталий" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "Файл теми" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Витерти позначене" @@ -7797,6 +7946,20 @@ msgid "Merge from Scene" msgstr "Об'єднати зі Ñцени" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Вимкнути автоплитки" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Ðовий %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "ÐаÑтупна координата" @@ -7813,6 +7976,41 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Вибір попередньої форми, підплитки або плитки." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "Режим облаÑті" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Режим перешкоди" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Режим перешкоди" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Режим навігації" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "Режим бітової маÑки" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Режим пріоритетноÑті" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "ІндекÑ:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Режим облаÑті" @@ -9031,6 +9229,14 @@ msgid "Runnable" msgstr "Ðктивний" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Додати початкове екÑпортуваннÑ…" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Додати попередні латки…" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Вилучити латку «%s» зі ÑпиÑку?" @@ -9142,6 +9348,10 @@ msgid "Make Patch" msgstr "Створити латку" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Файл пакунка" + +#: editor/project_export.cpp msgid "Features" msgstr "МожливоÑті" @@ -9193,6 +9403,14 @@ msgstr "Режим екÑпортуваннÑ?" msgid "Export All" msgstr "ЕкÑпортувати уÑе" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "Файл ZIP" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Пакунок гри Godot" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Ðемає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— платформи:" @@ -9497,6 +9715,10 @@ msgid "Projects" msgstr "Проєкти" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "ВоÑтаннє змінено" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Сканувати" @@ -11112,6 +11334,14 @@ msgid "Set Variable Type" msgstr "Ð’Ñтановити тип змінної" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Додати вхідний порт" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Додати вихідний порт" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ñвної вбудованої функції." @@ -11172,14 +11402,6 @@ msgid "Add Signal" msgstr "Додати Ñигнал" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "Додати вхідний порт" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "Додати вихідний порт" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "Вилучити вхідний порт" @@ -11361,6 +11583,18 @@ msgid "Members:" msgstr "Члени:" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "Змінити базовий тип:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Додати вузли…" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Додати функцію…" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "назва_функції" @@ -11581,30 +11815,10 @@ msgid "Identifier is missing." msgstr "Ðе вказано ідентифікатор." #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "Сегменти ідентифікатора повинні мати ненульову довжину." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "У назві ідентифікатора не можна викориÑтовувати Ñимволи «%s»." #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" -"Ðе можна викориÑтовувати цифри Ñк перші Ñимволи Ñегмента ідентифікатора." - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" -"Ðе можна викориÑтовувати Ñимвол «%s» Ñк перший Ñимвол Ñегмента " -"ідентифікатора." - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "У ідентифікаторі має бути принаймні один роздільник «.»." - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" "Ðе вказано ідентифікатор команди App Store — проєкт неможливо налаштувати." @@ -12330,6 +12544,22 @@ msgstr "Змінні величини можна пов'Ñзувати лише msgid "Constants cannot be modified." msgstr "Сталі не можна змінювати." +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "Сегменти ідентифікатора повинні мати ненульову довжину." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Ðе можна викориÑтовувати цифри Ñк перші Ñимволи Ñегмента ідентифікатора." + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "" +#~ "Ðе можна викориÑтовувати Ñимвол «%s» Ñк перший Ñимвол Ñегмента " +#~ "ідентифікатора." + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "У ідентифікаторі має бути принаймні один роздільник «.»." + #~ msgid "Pause the scene" #~ msgstr "Призупинити Ñцену" @@ -12986,9 +13216,6 @@ msgstr "Сталі не можна змінювати." #~ msgid "Rotate 270 degrees" #~ msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 270 градуÑів" -#~ msgid "Warning" -#~ msgstr "ПопередженнÑ" - #~ msgid "Variable" #~ msgstr "Змінна" diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index 74a0013d39..9564faafb8 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -515,8 +515,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "" @@ -704,6 +705,10 @@ msgstr "" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -783,6 +788,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -959,7 +968,7 @@ msgid "Resource" msgstr "" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "" @@ -1429,7 +1438,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "" @@ -1678,6 +1688,10 @@ msgid "Erase Profile" msgstr ".تمام کا انتخاب" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "" @@ -2603,7 +2617,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "" @@ -2917,6 +2932,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr ".تمام کا انتخاب" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -2974,6 +2994,10 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3410,6 +3434,11 @@ msgid "Select Template File" msgstr ".تمام کا انتخاب" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr ".تمام کا انتخاب" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4555,6 +4584,11 @@ msgstr "" msgid "Transition: " msgstr "" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "ایکشن منتقل کریں" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4809,6 +4843,30 @@ msgid "Download for this asset is already in progress!" msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "" @@ -5012,6 +5070,74 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -5678,6 +5804,10 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6317,6 +6447,23 @@ msgid "Save File As..." msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6446,10 +6593,6 @@ msgstr "" msgid "Run" msgstr "" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7590,6 +7733,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7609,6 +7753,11 @@ msgstr "" msgid "Constant" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "سب سکریپشن بنائیں" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -7721,6 +7870,18 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "سب سکریپشن بنائیں" @@ -7739,6 +7900,38 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "ایکشن منتقل کریں" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "ایکشن منتقل کریں" @@ -8904,6 +9097,14 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9003,6 +9204,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9055,6 +9260,15 @@ msgstr "" msgid "Export All" msgstr "" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr "Ø§Ø«Ø§Ø«Û Ú©ÛŒ زپ ÙØ§Ø¦Ù„" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9317,6 +9531,10 @@ msgid "Projects" msgstr ".تمام کا انتخاب" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -10924,6 +11142,16 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr ".تمام کا انتخاب" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr ".تمام کا انتخاب" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -10990,16 +11218,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr ".تمام کا انتخاب" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr ".تمام کا انتخاب" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr ".تمام کا انتخاب" @@ -11176,6 +11394,21 @@ msgid "Members:" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change Base Type:" +msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr ".تمام کا انتخاب" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr ".تمام کا انتخاب" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "" @@ -11374,27 +11607,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/vi.po b/editor/translations/vi.po index d92251b862..c3ddbf23eb 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -532,8 +532,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "Chỉnh sá»a" @@ -723,6 +724,10 @@ msgstr "Chỉ lá»±a chá»n" msgid "Standard" msgstr "Chuẩn" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -801,6 +806,11 @@ msgid "Extra Call Arguments:" msgstr "Mở rá»™ng Äối số được gá»i:" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Lá»c các nút" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Nâng cao" @@ -978,7 +988,7 @@ msgid "Resource" msgstr "Tà i nguyên" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "ÄÆ°á»ng dẫn" @@ -1452,7 +1462,8 @@ msgid "Node Name:" msgstr "Tên Node:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "Tên" @@ -1696,6 +1707,11 @@ msgid "Erase Profile" msgstr "Xoá hồ sÆ¡" #: editor/editor_feature_profile.cpp +#, fuzzy +msgid "Godot Feature Profile" +msgstr "Quản lý trình tÃnh năng" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Nháºp và o hồ sÆ¡" @@ -2646,7 +2662,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "Dá»± án" @@ -2971,6 +2988,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Nháºp mẫu và o từ tệp nén ZIP" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "Khung project" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Xuất dá»± án ra" @@ -3027,6 +3049,11 @@ msgstr "" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "Cảnh báo" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "" @@ -3465,6 +3492,11 @@ msgid "Select Template File" msgstr "Chá»n file template" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "Quản lý mẫu Xuất ra" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4609,6 +4641,11 @@ msgstr "Äặt kết thúc hoạt ảnh. Hữu dụng cho sub-transitions." msgid "Transition: " msgstr "Chuyển tiếp: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "Nháºp từ Node:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4870,6 +4907,32 @@ msgid "Download for this asset is already in progress!" msgstr "Tải xuống nguyên liệu nà y đã được tiến hà nh!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "Cấp phép" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "Cấp phép" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Äầu tiên" @@ -5074,6 +5137,77 @@ msgstr "" "chúng." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "Tịnh tuyến" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "Tịnh tuyến" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "Tỉ lệ Scale:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Chỉ các neo" @@ -5739,6 +5873,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "Xuất Mesh Library" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6382,6 +6521,23 @@ msgid "Save File As..." msgstr "Lưu Scene vá»›i tên..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6513,10 +6669,6 @@ msgstr "Äóng Docs" msgid "Run" msgstr "Chạy" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7672,6 +7824,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7691,6 +7844,11 @@ msgstr "" msgid "Constant" msgstr "Cố định" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "Mở" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -7805,6 +7963,20 @@ msgid "Merge from Scene" msgstr "Gá»™p từ Scene" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "Hoạt ảnh má»›i" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "Má»›i %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "" @@ -7822,6 +7994,38 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "Tạo" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "Tạo" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "Animation Node" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "Nháºp từ Node:" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "" @@ -9003,6 +9207,15 @@ msgid "Runnable" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "Thêm Input" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9103,6 +9316,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Tệp tin" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9158,6 +9376,15 @@ msgstr "Nháºp từ Node:" msgid "Export All" msgstr "Xuất Tile Set" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " Tệp tin" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9419,6 +9646,10 @@ msgid "Projects" msgstr "Dá»± án" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Quét" @@ -11041,6 +11272,16 @@ msgid "Set Variable Type" msgstr "" #: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Input Port" +msgstr "Thêm Input" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "Thêm Input" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "" @@ -11106,16 +11347,6 @@ msgstr "Thêm TÃn hiệu" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "Thêm Input" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Thêm Input" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Xoá Function" @@ -11292,6 +11523,21 @@ msgstr "Những Thà nh viên:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "Äổi %s Loại" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "Thêm Nút ..." + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "Thêm Hà m" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "Hà m:" @@ -11491,27 +11737,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index 0436963e5a..17d9cbb0c4 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -63,7 +63,7 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2019-11-29 14:49+0000\n" +"PO-Revision-Date: 2019-12-22 12:24+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" @@ -72,7 +72,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 3.10-dev\n" +"X-Generator: Weblate 3.10\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -83,7 +83,7 @@ msgstr "convert()çš„å‚æ•°ç±»åž‹æ— 效,请使用TYPE_*常é‡ã€‚" #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "è§£ç çš„å—节ä¸è¶³ï¼Œæˆ–æ— æ•ˆçš„æ ¼å¼ã€‚" +msgstr "è§£ç çš„å—节ä¸è¶³ï¼Œæˆ–æ ¼å¼æ— 效。" #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -103,15 +103,15 @@ msgstr "å°† %s 类型作为 %s åŸºç¡€ç±»åž‹çš„ç´¢å¼•æ— æ•ˆ" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "å°† '%s' 作为 %s 基础类型的具åç´¢å¼•æ— æ•ˆ" +msgstr "将“%sâ€ä½œä¸º %s 基础类型的具åç´¢å¼•æ— æ•ˆ" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr "æž„é€ '%s' çš„å‚æ•°æ— 效" +msgstr "æž„é€ â€œ%sâ€çš„傿•°æ— 效" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "调用 '%s' 时:" +msgstr "调用“%sâ€æ—¶ï¼š" #: core/ustring.cpp msgid "B" @@ -155,7 +155,7 @@ msgstr "镜åƒ" #: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp msgid "Time:" -msgstr "æ—¶é—´:" +msgstr "时间:" #: editor/animation_bezier_editor.cpp msgid "Value:" @@ -248,19 +248,19 @@ msgstr "3Då˜æ¢è½¨é“" #: editor/animation_track_editor.cpp msgid "Call Method Track" -msgstr "调用方法轨é“" +msgstr "方法调用轨é“" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" -msgstr "è´å¡žå°”曲线轨迹" +msgstr "è´å¡žå°”曲线轨é“" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" -msgstr "音频回放轨é“" +msgstr "éŸ³é¢‘æ’æ”¾è½¨é“" #: editor/animation_track_editor.cpp msgid "Animation Playback Track" -msgstr "动画回放轨é“" +msgstr "åŠ¨ç”»æ’æ”¾è½¨é“" #: editor/animation_track_editor.cpp msgid "Animation length (frames)" @@ -281,7 +281,7 @@ msgstr "动画循环" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" -msgstr "函数:" +msgstr "函数:" #: editor/animation_track_editor.cpp msgid "Audio Clips:" @@ -341,7 +341,7 @@ msgstr "截图" #: editor/animation_track_editor.cpp msgid "Nearest" -msgstr "最近的" +msgstr "临近" #: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp #: editor/property_editor.cpp @@ -391,11 +391,11 @@ msgstr "移除轨é“" #: editor/animation_track_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "为'%s'创建新轨é“å¹¶æ’入关键帧?" +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 @@ -463,7 +463,7 @@ msgstr "åŠ¨ç”»æ’æ”¾å™¨ä¸èƒ½åŠ¨ç”»åŒ–è‡ªå·±ï¼Œåªèƒ½åŠ¨ç”»åŒ–å…¶ä»–æ’æ”¾å™¨ã€‚ #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" -msgstr "æ— æ³•åœ¨æ²¡æœ‰rootçš„æƒ…å†µä¸‹æ·»åŠ æ–°è½¨é“" +msgstr "æ— æ³•åœ¨æ²¡æœ‰root的情况下新建轨é“" #: editor/animation_track_editor.cpp msgid "Add Bezier Track" @@ -566,14 +566,15 @@ msgstr "ç§’" #: editor/animation_track_editor.cpp msgid "FPS" -msgstr ":abbr:`FPS(Frames Per Second,æ¯ç§’ä¼ è¾“å¸§æ•°)`" +msgstr "FPS" #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "编辑" @@ -603,7 +604,7 @@ msgstr "å¤åˆ¶å¹¶è½¬ç½®" #: editor/animation_track_editor.cpp msgid "Delete Selection" -msgstr "åˆ é™¤å·²é€‰ä¸é¡¹" +msgstr "åˆ é™¤é€‰ä¸é¡¹" #: editor/animation_track_editor.cpp msgid "Go to Next Step" @@ -732,7 +733,7 @@ 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" @@ -759,6 +760,10 @@ msgstr "仅选ä¸" msgid "Standard" msgstr "æ ‡å‡†" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "切æ¢è„šæœ¬é¢æ¿" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -828,11 +833,16 @@ msgstr "移除" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "æ·»åŠ é™„åŠ è°ƒç”¨å‚æ•°:" +msgstr "æ·»åŠ é¢å¤–è°ƒç”¨å‚æ•°ï¼š" #: editor/connections_dialog.cpp msgid "Extra Call Arguments:" -msgstr "é¢å¤–è°ƒç”¨å‚æ•°:" +msgstr "é¢å¤–è°ƒç”¨å‚æ•°ï¼š" + +#: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "选择方法" #: editor/connections_dialog.cpp msgid "Advanced" @@ -880,7 +890,7 @@ msgstr "连接" #: editor/connections_dialog.cpp msgid "Signal:" -msgstr "ä¿¡å·:" +msgstr "ä¿¡å·ï¼š" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" @@ -929,7 +939,7 @@ msgstr "å–æ¶ˆæ‰€æœ‰å¹¿æ’ä¿¡å·è¿žæŽ¥" #: editor/connections_dialog.cpp msgid "Edit..." -msgstr "编辑…" +msgstr "编辑..." #: editor/connections_dialog.cpp msgid "Go To Method" @@ -945,16 +955,16 @@ 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 msgid "Favorites:" -msgstr "æ”¶è—:" +msgstr "æ”¶è—:" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp msgid "Recent:" -msgstr "最近文件:" +msgstr "最近使用:" #: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp #: editor/property_selector.cpp editor/quick_open.cpp @@ -1008,7 +1018,7 @@ msgid "Resource" msgstr "资æº" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "路径" @@ -1026,7 +1036,7 @@ msgstr "ä¾èµ–编辑器" #: editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "查找替æ¢èµ„æº:" +msgstr "查找替æ¢èµ„æºï¼š" #: editor/dependency_editor.cpp editor/editor_file_dialog.cpp #: editor/editor_help_search.cpp editor/editor_node.cpp @@ -1119,7 +1129,7 @@ msgstr "改å˜å—典的值" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" -msgstr "感谢Godot社区!" +msgstr "Godot社区致谢ï¼" #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -1147,15 +1157,15 @@ msgstr "作者" #: editor/editor_about.cpp msgid "Platinum Sponsors" -msgstr "白金赞助商" +msgstr "白金赞助" #: editor/editor_about.cpp msgid "Gold Sponsors" -msgstr "金牌赞助商" +msgstr "黄金赞助" #: editor/editor_about.cpp msgid "Mini Sponsors" -msgstr "è¿·ä½ èµžåŠ©å•†" +msgstr "è¿·ä½ èµžåŠ©" #: editor/editor_about.cpp msgid "Gold Donors" @@ -1171,7 +1181,7 @@ msgstr "é’铜æèµ 者" #: editor/editor_about.cpp msgid "Donors" -msgstr "æåŠ©" +msgstr "æåŠ©è€…" #: editor/editor_about.cpp msgid "License" @@ -1179,7 +1189,7 @@ msgstr "许å¯è¯" #: editor/editor_about.cpp msgid "Third-party Licenses" -msgstr "第三方许å¯" +msgstr "第三方许å¯è¯" #: editor/editor_about.cpp msgid "" @@ -1209,7 +1219,7 @@ msgstr "打开压缩文件时出错,éžzipæ ¼å¼ã€‚" #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" -msgstr "æ— åŽ‹ç¼©èµ„æº" +msgstr "æ£åœ¨è§£åŽ‹ç´ æ" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package installed successfully!" @@ -1238,23 +1248,23 @@ msgstr "æ·»åŠ æ•ˆæžœ" #: editor/editor_audio_buses.cpp msgid "Rename Audio Bus" -msgstr "é‡å‘½å音频总线(Audio Bus)" +msgstr "é‡å‘½å音频总线" #: editor/editor_audio_buses.cpp msgid "Change Audio Bus Volume" -msgstr "修改音频Bus音é‡" +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" @@ -1290,7 +1300,7 @@ msgstr "æ—通" #: editor/editor_audio_buses.cpp msgid "Bus options" -msgstr "音频总线选项" +msgstr "总线选项" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp @@ -1311,11 +1321,11 @@ msgstr "音频" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" -msgstr "æ·»åŠ éŸ³é¢‘æ€»çº¿ï¼ˆAudio Bus)" +msgstr "æ·»åŠ éŸ³é¢‘æ€»çº¿" #: editor/editor_audio_buses.cpp msgid "Master bus can't be deleted!" -msgstr "ä¸èƒ½åˆ 除主音频总线!" +msgstr "ä¸èƒ½åˆ 除主音频总线ï¼" #: editor/editor_audio_buses.cpp msgid "Delete Audio Bus" @@ -1335,7 +1345,7 @@ msgstr "移动音频总线" #: editor/editor_audio_buses.cpp msgid "Save Audio Bus Layout As..." -msgstr "将音频Bus布局ä¿å˜ä¸º..." +msgstr "音频总线布局å¦å˜ä¸º..." #: editor/editor_audio_buses.cpp msgid "Location for New Layout..." @@ -1343,7 +1353,7 @@ msgstr "新布局的ä½ç½®..." #: editor/editor_audio_buses.cpp msgid "Open Audio Bus Layout" -msgstr "打开音频Bus布局" +msgstr "打开音频总线布局" #: editor/editor_audio_buses.cpp msgid "There is no '%s' file." @@ -1355,11 +1365,11 @@ msgstr "布局" #: editor/editor_audio_buses.cpp msgid "Invalid file, not an audio bus layout." -msgstr "æ— æ•ˆæ–‡ä»¶,ä¸å˜åœ¨éŸ³é¢‘总线布局。" +msgstr "æ— æ•ˆæ–‡ä»¶ï¼Œä¸æ˜¯éŸ³é¢‘总线布局。" #: editor/editor_audio_buses.cpp msgid "Add Bus" -msgstr "æ·»åŠ Bus" +msgstr "æ·»åŠ æ€»çº¿" #: editor/editor_audio_buses.cpp msgid "Add a new Audio Bus to this layout." @@ -1381,7 +1391,7 @@ msgstr "å¦å˜ä¸º" #: editor/editor_audio_buses.cpp msgid "Save this Bus Layout to a file." -msgstr "将音频Bus布局ä¿å˜ä¸º..." +msgstr "将该音频总线布局ä¿å˜åˆ°æ–‡ä»¶ã€‚" #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" @@ -1397,11 +1407,11 @@ msgstr "创建一个新的总线布局。" #: editor/editor_autoload_settings.cpp msgid "Invalid name." -msgstr "åç§°éžæ³•:。" +msgstr "åç§°æ— æ•ˆã€‚" #: editor/editor_autoload_settings.cpp msgid "Valid characters:" -msgstr "å—ç¬¦åˆæ³•:" +msgstr "有效å—符:" #: editor/editor_autoload_settings.cpp msgid "Must not collide with an existing engine class name." @@ -1475,13 +1485,14 @@ msgid "Node Name:" msgstr "节点åç§°:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "åç§°" #: editor/editor_autoload_settings.cpp msgid "Singleton" -msgstr "å•独(Singleton)" +msgstr "å•例" #: editor/editor_data.cpp msgid "Updating Scene" @@ -1515,7 +1526,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 @@ -1527,7 +1538,7 @@ msgstr "åç§°:" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp msgid "Could not create folder." -msgstr "æ— æ³•åˆ›å»ºç›®å½•ã€‚" +msgstr "æ— æ³•åˆ›å»ºæ–‡ä»¶å¤¹ã€‚" #: editor/editor_dir_dialog.cpp msgid "Choose" @@ -1597,7 +1608,7 @@ msgstr "脚本编辑器" #: editor/editor_feature_profile.cpp msgid "Asset Library" -msgstr "资产库" +msgstr "ç´ æåº“" #: editor/editor_feature_profile.cpp msgid "Scene Tree Editing" @@ -1717,6 +1728,10 @@ msgid "Erase Profile" msgstr "åˆ é™¤é…置文件" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Godot功能é…置文件" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "导入é…置文件" @@ -1730,7 +1745,7 @@ msgstr "管ç†ç¼–辑器功能é…置文件" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select Current Folder" -msgstr "选择当å‰ç›®å½•" +msgstr "é€‰æ‹©å½“å‰æ–‡ä»¶å¤¹" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1742,7 +1757,7 @@ msgstr "é€‰æ‹©æ¤æ–‡ä»¶å¤¹" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" -msgstr "æ‹·è´è·¯å¾„" +msgstr "å¤åˆ¶è·¯å¾„" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Open in File Manager" @@ -1815,7 +1830,7 @@ msgstr "åˆ‡æ¢æ˜¾ç¤ºéšè—文件" #: editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "åˆ‡æ¢æ”¶è—" +msgstr "开关收è—" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" @@ -1867,7 +1882,7 @@ msgstr "ä»¥åˆ—è¡¨çš„å½¢å¼æŸ¥çœ‹æ‰€æœ‰é¡¹ã€‚" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" -msgstr "目录|文件:" +msgstr "目录与文件:" #: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp #: editor/plugins/style_box_editor_plugin.cpp @@ -1881,7 +1896,7 @@ msgstr "文件:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Must use a valid extension." -msgstr "å¿…é¡»ä½¿ç”¨åˆæ³•的拓展å。" +msgstr "必须使用有效的扩展å。" #: editor/editor_file_system.cpp msgid "ScanSources" @@ -1895,7 +1910,7 @@ 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" @@ -1908,15 +1923,15 @@ msgstr "ç±»:" #: editor/editor_help.cpp editor/scene_tree_editor.cpp #: editor/script_create_dialog.cpp msgid "Inherits:" -msgstr "基类:" +msgstr "继承:" #: editor/editor_help.cpp msgid "Inherited by:" -msgstr "派生类:" +msgstr "派生:" #: editor/editor_help.cpp msgid "Brief Description" -msgstr "简述" +msgstr "简介" #: editor/editor_help.cpp msgid "Properties" @@ -1956,8 +1971,8 @@ msgid "" "$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/" "url][/color]." msgstr "" -"当剿²¡æœ‰æ¤ç±»åž‹çš„æ•™ç¨‹ã€‚请通过[color=$color][url=$url] 补充文档或æäº¤è¯·æ±‚ [/" -"url][/color]的方å¼å¸®åŠ©æˆ‘ä»¬å®Œå–„æ–‡æ¡£ã€‚" +"当剿²¡æœ‰æ¤ç±»åž‹çš„æ•™ç¨‹ï¼Œä½ å¯ä»¥[color=$color][url=$url]贡献一个[/url][/color]或" +"[color=$color][url=$url2]请求一个[/url][/color]。" #: editor/editor_help.cpp msgid "Property Descriptions" @@ -1968,8 +1983,8 @@ msgid "" "There is currently no description for this property. Please help us by " "[color=$color][url=$url]contributing one[/url][/color]!" msgstr "" -"当剿²¡æœ‰æ¤å±žæ€§çš„说明。请帮助我们通过 [color=$color][url=$url] 贡献一个 [/url]" -"[/color]!" +"当剿²¡æœ‰æ¤å±žæ€§çš„说明。请帮我们[color=$color][url=$url]贡献一个[/url][/" +"color]ï¼" #: editor/editor_help.cpp msgid "Method Descriptions" @@ -1980,8 +1995,8 @@ msgid "" "There is currently no description for this method. Please help us by [color=" "$color][url=$url]contributing one[/url][/color]!" msgstr "" -"当剿²¡æœ‰æ¤æ–¹æ³•çš„æè¿°ã€‚请帮助我们通过 [color=$color] [url=$url] 贡献一个 [/" -"url][/color]!" +"当剿²¡æœ‰æ¤æ–¹æ³•的说明。请帮我们[color=$color][url=$url]贡献一个[/url][/" +"color]ï¼" #: editor/editor_help_search.cpp editor/editor_node.cpp #: editor/plugins/script_editor_plugin.cpp @@ -2102,7 +2117,7 @@ msgstr "ä¼ å‡ºRSET" #: editor/editor_node.cpp editor/project_manager.cpp msgid "New Window" -msgstr "新窗å£" +msgstr "新建窗å£" #: editor/editor_node.cpp msgid "Project export failed with error code %d." @@ -2115,7 +2130,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!" @@ -2145,23 +2160,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" @@ -2173,7 +2188,7 @@ msgstr "æ£åœ¨åˆ†æž" #: editor/editor_node.cpp msgid "Creating Thumbnail" -msgstr "创建缩略图" +msgstr "æ£åœ¨åˆ›å»ºç¼©ç•¥å›¾" #: editor/editor_node.cpp msgid "This operation can't be done without a tree root." @@ -2199,19 +2214,19 @@ msgstr "æ— æ³•è¦†ç›–ä»å¤„于打开状æ€çš„场景!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "æ— æ³•åŠ è½½è¦åˆå¹¶çš„MeshLibraryï¼" +msgstr "æ— æ³•åŠ è½½è¦åˆå¹¶çš„ç½‘æ ¼åº“ï¼" #: editor/editor_node.cpp msgid "Error saving MeshLibrary!" -msgstr "ä¿å˜MeshLibrary出错ï¼" +msgstr "ä¿å˜ç½‘æ ¼åº“å‡ºé”™ï¼" #: editor/editor_node.cpp msgid "Can't load TileSet for merging!" -msgstr "æ— æ³•åŠ è½½è¦åˆå¹¶çš„ç –å—集ï¼" +msgstr "æ— æ³•åŠ è½½è¦åˆå¹¶çš„图å—集ï¼" #: editor/editor_node.cpp msgid "Error saving TileSet!" -msgstr "ä¿å˜ç –å—集失败ï¼" +msgstr "ä¿å˜å›¾å—集时出错ï¼" #: editor/editor_node.cpp msgid "Error trying to save layout!" @@ -2311,11 +2326,11 @@ 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)." -msgstr "å·²ä¿å˜ï¼…s修改åŽçš„资æºã€‚" +msgstr "å·²ä¿å˜ %s 个修改åŽçš„资æºã€‚" #: editor/editor_node.cpp msgid "A root node is required to save the scene." @@ -2335,7 +2350,7 @@ msgstr "是" #: editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "æ¤åœºæ™¯å°šæœªä¿å˜ï¼Œè¦åœ¨è¿è¡Œä¹‹å‰ä¿å˜å®ƒå—?" +msgstr "æ¤åœºæ™¯å°šæœªä¿å˜ã€‚是å¦åœ¨è¿è¡Œå‰ä¿å˜ï¼Ÿ" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." @@ -2343,7 +2358,7 @@ msgstr "æ¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚" #: editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "å¯¼å‡ºç½‘æ ¼åº“(Mesh Library)" +msgstr "å¯¼å‡ºç½‘æ ¼åº“" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." @@ -2351,15 +2366,15 @@ msgstr "éœ€è¦æœ‰æ ¹èŠ‚ç‚¹æ‰èƒ½å®Œæˆæ¤æ“作。" #: editor/editor_node.cpp msgid "Export Tile Set" -msgstr "导出ç£è´´é›†" +msgstr "导出图å—集" #: editor/editor_node.cpp msgid "This operation can't be done without a selected node." -msgstr "æ¤æ“作必须先选择一个nodeæ‰èƒ½æ‰§è¡Œã€‚" +msgstr "æ¤æ“作必须先选择一个节点æ‰èƒ½æ‰§è¡Œã€‚" #: editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" -msgstr "当å‰åœºæ™¯å°šæœªä¿å˜ï¼Œä»è¦æ‰“开?" +msgstr "当å‰åœºæ™¯å°šæœªä¿å˜ã€‚是å¦ä»è¦æ‰“开?" #: editor/editor_node.cpp msgid "Can't reload a scene that was never saved." @@ -2371,7 +2386,7 @@ msgstr "æ¢å¤" #: editor/editor_node.cpp msgid "This action cannot be undone. Revert anyway?" -msgstr "æ¤æ“ä½œæ— æ³•æ’¤é”€ï¼Œç¡®å®šè¦ç»§ç»å—?" +msgstr "æ¤æ“ä½œæ— æ³•æ’¤é”€ï¼Œæ˜¯å¦ç»§ç»ï¼Ÿ" #: editor/editor_node.cpp msgid "Quick Run Scene..." @@ -2425,7 +2440,7 @@ 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'." @@ -2451,15 +2466,16 @@ 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 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:" @@ -2484,8 +2500,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 "" @@ -2493,8 +2509,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" @@ -2544,15 +2560,15 @@ msgstr "切æ¢åœºæ™¯æ ‡ç¾é¡µ" #: editor/editor_node.cpp msgid "%d more files or folders" -msgstr "%d 个文件或目录未展示" +msgstr "其它 %d 个文件或文件夹" #: editor/editor_node.cpp msgid "%d more folders" -msgstr "%d 个目录未展示" +msgstr "其它 %d 个文件夹" #: editor/editor_node.cpp msgid "%d more files" -msgstr "%d 个文件未展示" +msgstr "其它 %d 个文件" #: editor/editor_node.cpp msgid "Dock Position" @@ -2584,11 +2600,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..." @@ -2604,7 +2620,7 @@ msgstr "新建场景" #: editor/editor_node.cpp msgid "New Inherited Scene..." -msgstr "新建继承的场景…" +msgstr "新建继承场景..." #: editor/editor_node.cpp msgid "Open Scene..." @@ -2628,11 +2644,11 @@ msgstr "转æ¢ä¸º..." #: editor/editor_node.cpp msgid "MeshLibrary..." -msgstr "MeshLibrary(ç½‘æ ¼åº“)..." +msgstr "ç½‘æ ¼åº“..." #: editor/editor_node.cpp msgid "TileSet..." -msgstr "ç –å—集..." +msgstr "图å—集..." #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp @@ -2650,9 +2666,10 @@ msgstr "æ¢å¤åœºæ™¯" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "其他工程或全场景工具。" +msgstr "其他项目或全场景工具。" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "项目" @@ -2690,7 +2707,7 @@ msgstr "工具" #: editor/editor_node.cpp msgid "Orphan Resource Explorer..." -msgstr "å•ä¸€èµ„æºæµè§ˆå™¨..." +msgstr "å¤ç«‹èµ„æºæµè§ˆå™¨..." #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2714,7 +2731,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "å°åž‹éƒ¨ç½²ä¸Žç½‘络文件系统" +msgstr "使用网络文件系统进行å°åž‹éƒ¨ç½²" #: editor/editor_node.cpp msgid "" @@ -2727,12 +2744,11 @@ msgid "" msgstr "" "当å¯ç”¨æ¤é¡¹åŽï¼Œå°†åœ¨å¯¼å‡ºæˆ–å‘å¸ƒé¡¹ç›®æ—¶ç”Ÿæˆæœ€å°åŒ–å¯è‡ªè¡Œæ–‡ä»¶ã€‚\n" "文件系统将通过网络连接到编辑器æ¥å®žçŽ°ã€‚\n" -"在Androidå¹³å°ï¼Œé€šè¿‡USBå‘布能获得更快的效率。\n" -"æ¤é€‰é¡¹ç”¨äºŽåŠ å¿«æ¸¸æˆçš„æµ‹è¯•。" +"在Androidå¹³å°ï¼Œé€šè¿‡USBå‘布能获得更快的效率。æ¤é€‰é¡¹å¯ä»¥åŠ å¿«å¤§ä½“ç§¯æ¸¸æˆçš„æµ‹è¯•。" #: editor/editor_node.cpp msgid "Visible Collision Shapes" -msgstr "å¯è§ç¢°æ’žåŒºåŸŸ" +msgstr "显示碰撞区域" #: editor/editor_node.cpp msgid "" @@ -2742,7 +2758,7 @@ msgstr "如果å¯ç”¨æ¤é¡¹ï¼ŒèŠ‚ç‚¹çš„ç¢°æ’žåŒºåŸŸå’Œraycast将在游æˆè¿è¡Œæ— #: editor/editor_node.cpp msgid "Visible Navigation" -msgstr "å¯è§å¯¼èˆª" +msgstr "显示导航" #: editor/editor_node.cpp msgid "" @@ -2796,7 +2812,7 @@ msgstr "截å–å±å¹•" #: editor/editor_node.cpp msgid "Screenshots are stored in the Editor Data/Settings Folder." -msgstr "截图已ä¿å˜åˆ°ç¼–辑器设置/æ•°æ®ç›®å½•。" +msgstr "截图将ä¿å˜åœ¨ç¼–辑器数æ®/设置文件夹ä¸ã€‚" #: editor/editor_node.cpp msgid "Toggle Fullscreen" @@ -2808,7 +2824,7 @@ msgstr "系统命令行模å¼" #: editor/editor_node.cpp msgid "Open Editor Data/Settings Folder" -msgstr "打开“编辑器设置/æ•°æ®\"文件夹" +msgstr "打开“编辑器数æ®/è®¾ç½®â€æ–‡ä»¶å¤¹" #: editor/editor_node.cpp msgid "Open Editor Data Folder" @@ -2862,11 +2878,11 @@ msgstr "关于" #: editor/editor_node.cpp msgid "Play the project." -msgstr "è¿è¡Œæ¤é¡¹ç›®ï¼ˆF5)。" +msgstr "è¿è¡Œæ¤é¡¹ç›®ã€‚" #: editor/editor_node.cpp msgid "Play" -msgstr "æ’æ”¾" +msgstr "è¿è¡Œ" #: editor/editor_node.cpp msgid "Pause the scene execution for debugging." @@ -2874,15 +2890,15 @@ msgstr "æš‚åœè¿è¡Œåœºæ™¯ï¼Œä»¥ä¾¿è¿›è¡Œè°ƒè¯•。" #: editor/editor_node.cpp msgid "Pause Scene" -msgstr "æš‚åœè¿è¡Œåœºæ™¯" +msgstr "æš‚åœåœºæ™¯" #: editor/editor_node.cpp msgid "Stop the scene." -msgstr "åœæ¢è¿è¡Œåœºæ™¯ã€‚" +msgstr "åœæ¢åœºæ™¯ã€‚" #: editor/editor_node.cpp msgid "Play the edited scene." -msgstr "打开并è¿è¡Œåœºæ™¯ã€‚" +msgstr "è¿è¡Œæ£åœ¨ç¼–辑的场景。" #: editor/editor_node.cpp msgid "Play Scene" @@ -2919,7 +2935,7 @@ msgstr "当有更改时更新" #: editor/editor_node.cpp msgid "Hide Update Spinner" -msgstr "éšè—更新微调" +msgstr "éšè—更新旋转图" #: editor/editor_node.cpp msgid "FileSystem" @@ -2927,7 +2943,7 @@ msgstr "文件系统" #: editor/editor_node.cpp msgid "Inspector" -msgstr "å±žæ€§é¢æ¿" +msgstr "属性" #: editor/editor_node.cpp msgid "Expand Bottom Panel" @@ -2935,7 +2951,7 @@ msgstr "å±•å¼€åº•éƒ¨é¢æ¿" #: editor/editor_node.cpp msgid "Output" -msgstr "日志" +msgstr "输出" #: editor/editor_node.cpp msgid "Don't Save" @@ -2959,10 +2975,11 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" -"é€šè¿‡å°†æºæ¨¡æ¿å®‰è£…到“ res:// android / buildâ€ï¼Œå°†ä¸ºè‡ªå®šä¹‰Android构建设置项" -"目。 ç„¶åŽï¼Œæ‚¨å¯ä»¥åº”用修改并在导出时构建自己的自定义APKï¼ˆæ·»åŠ æ¨¡å—,更改" -"AndroidManifest.xmlç‰ï¼‰ã€‚ 请注æ„ï¼Œä¸ºäº†è¿›è¡Œè‡ªå®šä¹‰æž„å»ºè€Œä¸æ˜¯ä½¿ç”¨é¢„先构建的APK," -"应在Android导出预设ä¸å¯ç”¨â€œä½¿ç”¨è‡ªå®šä¹‰æž„建â€é€‰é¡¹ã€‚" +"é€šè¿‡å°†æºæ¨¡æ¿å®‰è£…到“res://android/buildâ€ï¼Œå°†ä¸ºè‡ªå®šä¹‰Android构建设置项目。\n" +"ç„¶åŽï¼Œæ‚¨å¯ä»¥åº”用修改并在导出时构建自己的自定义APKï¼ˆæ·»åŠ æ¨¡å—,更改" +"AndroidManifest.xmlç‰ï¼‰ã€‚\n" +"请注æ„ï¼Œä¸ºäº†è¿›è¡Œè‡ªå®šä¹‰æž„å»ºè€Œä¸æ˜¯ä½¿ç”¨é¢„先构建的APK,应在Android导出预设ä¸å¯" +"用“使用自定义构建â€é€‰é¡¹ã€‚" #: editor/editor_node.cpp msgid "" @@ -2971,13 +2988,17 @@ msgid "" "Remove the \"res://android/build\" directory manually before attempting this " "operation again." msgstr "" -"Android构建模æ¿å·²å®‰è£…在æ¤é¡¹ç›®ä¸ï¼Œå¹¶ä¸”ä¸ä¼šè¢«è¦†ç›–。 冿¬¡å°è¯•æ‰§è¡Œæ¤æ“作之å‰ï¼Œè¯·" -"æ‰‹åŠ¨åˆ é™¤â€œ res:// android / buildâ€ç›®å½•。" +"Android构建模æ¿å·²å®‰è£…在æ¤é¡¹ç›®ä¸ï¼Œå¹¶ä¸”ä¸ä¼šè¢«è¦†ç›–。\n" +"冿¬¡å°è¯•æ‰§è¡Œæ¤æ“作之å‰ï¼Œè¯·æ‰‹åŠ¨åˆ é™¤â€œres://android/buildâ€ç›®å½•。" #: editor/editor_node.cpp msgid "Import Templates From ZIP File" msgstr "从ZIP文件ä¸å¯¼å…¥æ¨¡æ¿" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "模æ¿åŒ…" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "导出项目" @@ -3000,7 +3021,7 @@ msgstr "打开并è¿è¡Œè„šæœ¬" #: editor/editor_node.cpp msgid "New Inherited" -msgstr "从现有场景ä¸åˆ›å»º" +msgstr "新建继承" #: editor/editor_node.cpp msgid "Load Errors" @@ -3024,7 +3045,7 @@ msgstr "打开脚本编辑器" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" -msgstr "打开资æºå•†åº—" +msgstr "æ‰“å¼€ç´ æåº“" #: editor/editor_node.cpp msgid "Open the next Editor" @@ -3034,6 +3055,11 @@ msgstr "打开下一个编辑器" msgid "Open the previous Editor" msgstr "打开上一个编辑器" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "è¦å‘Š" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "找ä¸åˆ°å资æºã€‚" @@ -3093,11 +3119,11 @@ msgstr "å¹³å‡å¸§æ—¶é—´ï¼ˆç§’)" #: editor/editor_profiler.cpp msgid "Frame %" -msgstr "渲染速度" +msgstr "帧 %" #: editor/editor_profiler.cpp msgid "Physics Frame %" -msgstr "物ç†å¸§é€Ÿçއ %" +msgstr "物ç†å¸§ %" #: editor/editor_profiler.cpp msgid "Inclusive" @@ -3109,7 +3135,7 @@ msgstr "自身" #: editor/editor_profiler.cpp msgid "Frame #:" -msgstr "帧åºå·:" +msgstr "帧 #:" #: editor/editor_profiler.cpp msgid "Time" @@ -3117,7 +3143,7 @@ msgstr "æ—¶é—´" #: editor/editor_profiler.cpp msgid "Calls" -msgstr "调用次数" +msgstr "调用" #: editor/editor_properties.cpp msgid "Edit Text:" @@ -3133,7 +3159,7 @@ msgstr "层" #: editor/editor_properties.cpp msgid "Bit %d, value %d" -msgstr "æ¯”ç‰¹ä½ %d ,值 %d" +msgstr "æ¯”ç‰¹ä½ %d,值 %d" #: editor/editor_properties.cpp msgid "[Empty]" @@ -3141,11 +3167,11 @@ msgstr "[空]" #: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp msgid "Assign..." -msgstr "分é……" +msgstr "分é…..." #: editor/editor_properties.cpp msgid "Invalid RID" -msgstr "è·¯å¾„éžæ³•" +msgstr "æ— æ•ˆçš„RID" #: editor/editor_properties.cpp msgid "" @@ -3168,12 +3194,12 @@ msgid "" "Please switch on the 'local to scene' property on it (and all resources " "containing it up to a node)." msgstr "" -"æ— æ³•åœ¨æ¤èµ„æºä¸Šåˆ›å»ºè§†å›¾çº¹ç†, å› ä¸ºå®ƒæœªè®¾ç½®ä¸ºæœ¬åœ°åˆ°åœºæ™¯ã€‚\n" -"请打开上é¢çš„ `本地到场景` 属性 (以åŠåŒ…å«å®ƒçš„æ‰€æœ‰èµ„æºåˆ°èŠ‚ç‚¹)。" +"æ— æ³•åœ¨æ¤èµ„æºä¸Šåˆ›å»ºè§†å›¾çº¹ç†ï¼Œå› 为它未设置为本地到场景。\n" +"请打开上é¢çš„“本地到场景â€å±žæ€§ï¼ˆä»¥åŠåŒ…å«å®ƒçš„æ‰€æœ‰èµ„æºåˆ°èŠ‚ç‚¹ï¼‰ã€‚" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" -msgstr "选择1个视å£" +msgstr "选择一个视å£" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New Script" @@ -3228,7 +3254,7 @@ msgstr "移除项目" #: editor/editor_properties_array_dict.cpp msgid "New Key:" -msgstr "新建帧:" +msgstr "新建关键帧:" #: editor/editor_properties_array_dict.cpp msgid "New Value:" @@ -3243,8 +3269,8 @@ msgid "" "No runnable export preset found for this platform.\n" "Please add a runnable preset in the export menu." msgstr "" -"没有这个平å°çš„导出é…置。\n" -"请在导出èœå•䏿·»åŠ é…置。" +"没有对应该平å°çš„坿‰§è¡Œå¯¼å‡ºé¢„设。\n" +"请在导出èœå•䏿·»åР坿‰§è¡Œé¢„设。" #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -3296,7 +3322,7 @@ msgstr "å¸è½½" #: editor/export_template_manager.cpp msgid "(Installed)" -msgstr "(安装)" +msgstr "(已安装)" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3309,11 +3335,11 @@ msgstr "开呿ž„建下官方导出模æ¿ä¸å¯ç”¨ã€‚" #: editor/export_template_manager.cpp msgid "(Missing)" -msgstr "(丢失)" +msgstr "(缺失)" #: editor/export_template_manager.cpp msgid "(Current)" -msgstr "(当å‰)" +msgstr "(当å‰ï¼‰" #: editor/export_template_manager.cpp msgid "Retrieving mirrors, please wait..." @@ -3329,7 +3355,7 @@ msgstr "æ— æ³•æ‰“å¼€ZIP导出模æ¿ã€‚" #: editor/export_template_manager.cpp msgid "Invalid version.txt format inside templates: %s." -msgstr "æ¨¡æ¿æ–‡ä»¶ï¼š %s ä¸çš„ version.txt æ ¼å¼ä¸åˆæ³•。" +msgstr "æ¨¡æ¿æ–‡ä»¶ï¼š%s ä¸çš„ version.txt æ ¼å¼æ— 效。" #: editor/export_template_manager.cpp msgid "No version.txt found inside templates." @@ -3470,6 +3496,10 @@ msgid "Select Template File" msgstr "é€‰æ‹©æ¨¡æ¿æ–‡ä»¶" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Godot 导出模æ¿" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "模æ¿å¯¼å‡ºå·¥å…·" @@ -3483,7 +3513,7 @@ msgstr "从列表ä¸é€‰æ‹©é•œåƒï¼šï¼ˆShift+å•击:在æµè§ˆå™¨ä¸æ‰“开)" #: editor/filesystem_dock.cpp msgid "Favorites" -msgstr "æ”¶è—夹" +msgstr "æ”¶è—" #: editor/filesystem_dock.cpp msgid "Status: Import of file failed. Please fix file and reimport manually." @@ -3543,7 +3573,7 @@ msgstr "å¤åˆ¶æ–‡ä»¶å¤¹:" #: editor/filesystem_dock.cpp msgid "New Inherited Scene" -msgstr "新继承的场景" +msgstr "新建继承场景" #: editor/filesystem_dock.cpp msgid "Set As Main Scene" @@ -3559,11 +3589,11 @@ msgstr "创建实例节点" #: editor/filesystem_dock.cpp msgid "Add to Favorites" -msgstr "æ·»åŠ åˆ°æ”¶è—夹" +msgstr "æ·»åŠ åˆ°æ”¶è—" #: editor/filesystem_dock.cpp msgid "Remove from Favorites" -msgstr "从收è—夹ä¸åˆ 除" +msgstr "从收è—ä¸åˆ 除" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3591,11 +3621,11 @@ msgstr "新建场景..." #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "New Script..." -msgstr "新建脚本…" +msgstr "新建脚本..." #: editor/filesystem_dock.cpp msgid "New Resource..." -msgstr "新建资æºâ€¦" +msgstr "新建资æº..." #: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp #: editor/script_editor_debugger.cpp @@ -3648,7 +3678,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" @@ -3711,7 +3741,7 @@ msgstr "全部替æ¢ï¼ˆæ— 法撤销)" #: editor/find_in_files.cpp msgid "Searching..." -msgstr "æœç´¢ä¸â€¦" +msgstr "æœç´¢ä¸..." #: editor/find_in_files.cpp msgid "Search complete" @@ -3743,11 +3773,11 @@ msgstr "åˆ é™¤åˆ†ç»„" #: editor/groups_editor.cpp editor/node_dock.cpp msgid "Groups" -msgstr "编组" +msgstr "分组" #: editor/groups_editor.cpp msgid "Nodes Not in Group" -msgstr "节点ä¸åœ¨åˆ†ç»„ä¸" +msgstr "ä¸åœ¨åˆ†ç»„ä¸çš„节点" #: editor/groups_editor.cpp editor/scene_tree_dock.cpp #: editor/scene_tree_editor.cpp @@ -3764,7 +3794,7 @@ msgstr "空的分组会自动移除。" #: editor/groups_editor.cpp msgid "Group Editor" -msgstr "分组编辑" +msgstr "分组编辑器" #: editor/groups_editor.cpp msgid "Manage Groups" @@ -3837,7 +3867,7 @@ msgstr "æ— æ³•è½½å…¥åŽå¯¼å…¥è„šæœ¬:" #: editor/import/resource_importer_scene.cpp msgid "Invalid/broken script for post-import (check console):" -msgstr "åŽå¤„ç†è„šæœ¬è¢«æŸå或ä¸åˆæ³•(查看控制å°ï¼‰:" +msgstr "导入åŽå¤„ç†è„šæœ¬æ— æ•ˆæˆ–å·²æŸå(请查看控制å°ï¼‰ï¼š" #: editor/import/resource_importer_scene.cpp msgid "Error running post-import script:" @@ -3849,7 +3879,7 @@ msgstr "ä¿å˜ä¸..." #: editor/import_dock.cpp msgid "Set as Default for '%s'" -msgstr "设置为 '%s' 的默认值" +msgstr "设置为“%sâ€çš„默认值" #: editor/import_dock.cpp msgid "Clear Default for '%s'" @@ -3865,7 +3895,7 @@ msgstr "导入为:" #: editor/import_dock.cpp msgid "Preset" -msgstr "预置" +msgstr "预设" #: editor/import_dock.cpp msgid "Reimport" @@ -3882,7 +3912,7 @@ msgstr "改å˜è¿™ä¸ªå¯¼å…¥çš„æ–‡ä»¶ç±»åž‹åŽéœ€è¦é‡å¯ç¼–辑器。" #: editor/import_dock.cpp msgid "" "WARNING: Assets exist that use this resource, they may stop loading properly." -msgstr "è¦å‘Šï¼šèµ„æºä½¿ç”¨å†²çªï¼Œå°†ä¼šåœæ¢åŠ è½½ã€‚" +msgstr "è¦å‘Šï¼šå˜åœ¨ä½¿ç”¨æœ¬èµ„æºçš„ç´ æï¼Œå°†ä¼šåœæ¢åŠ è½½ã€‚" #: editor/inspector_dock.cpp msgid "Failed to load resource." @@ -3915,7 +3945,7 @@ msgstr "编辑资æºå‰ªè´´æ¿" #: editor/inspector_dock.cpp msgid "Copy Resource" -msgstr "æ‹·è´èµ„æº" +msgstr "å¤åˆ¶èµ„æº" #: editor/inspector_dock.cpp msgid "Make Built-In" @@ -3959,7 +3989,7 @@ msgstr "对象属性。" #: editor/inspector_dock.cpp msgid "Filter properties" -msgstr "属性ç›é€‰" +msgstr "ç›é€‰å±žæ€§" #: editor/inspector_dock.cpp msgid "Changes may be lost!" @@ -4244,7 +4274,7 @@ msgstr "åˆ é™¤èŠ‚ç‚¹" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Toggle Filter On/Off" -msgstr "打开/å…³é—过滤器" +msgstr "开关过滤器" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Change Filter" @@ -4263,7 +4293,7 @@ msgstr "æ— æ•ˆçš„æ’æ”¾å™¨è·¯åŠ²è®¾ç½®ï¼Œå› æ¤æ— 法获å–轨é“å称。" msgid "" "Animation player has no valid root node path, so unable to retrieve track " "names." -msgstr "åŠ¨ç”»æ’æ”¾å™¨æ²¡æœ‰åˆæ³•çš„æ ¹èŠ‚ç‚¹è·¯å¾„ï¼Œå› æ¤æ— 法获å–轨é“å称。" +msgstr "åŠ¨ç”»æ’æ”¾å™¨æ²¡æœ‰æœ‰æ•ˆçš„æ ¹èŠ‚ç‚¹è·¯å¾„ï¼Œå› æ¤æ— 法获å–轨é“å称。" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Anim Clips" @@ -4285,7 +4315,7 @@ msgstr "节点已é‡å‘½å" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add Node..." -msgstr "æ·»åŠ èŠ‚ç‚¹.." +msgstr "æ·»åŠ èŠ‚ç‚¹..." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp @@ -4294,7 +4324,7 @@ msgstr "编辑轨é“过滤器:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Enable Filtering" -msgstr "å¯ç”¨è¿‡æ»¤" +msgstr "å¯ç”¨ç›é€‰" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -4353,7 +4383,7 @@ msgstr "å¤åˆ¶åŠ¨ç”»" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation to copy!" -msgstr "æ²¡æœ‰éœ€è¦æ‹·è´çš„动画ï¼" +msgstr "没有需è¦å¤åˆ¶çš„动画ï¼" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation resource on clipboard!" @@ -4381,7 +4411,7 @@ msgstr "ä»Žç»“æŸæ—¶é—´å€’放选ä¸åŠ¨ç”»ï¼ˆShift+A)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" -msgstr "åœæ¢åŠ¨ç”»å›žæ”¾ã€‚(S)" +msgstr "åœæ¢åŠ¨ç”»æ’æ”¾ã€‚(S)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" @@ -4397,7 +4427,7 @@ 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" @@ -4410,7 +4440,7 @@ msgstr "动画" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Edit Transitions..." -msgstr "编辑过渡方å¼â€¦" +msgstr "编辑过渡方å¼..." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Open in Inspector" @@ -4438,7 +4468,7 @@ msgstr "æ–¹å‘" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Past" -msgstr "穿过" +msgstr "过去" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Future" @@ -4542,7 +4572,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" @@ -4590,6 +4620,11 @@ msgstr "设置终点结æŸåŠ¨ç”»ã€‚è¿™å¯¹äºŽå过渡动画éžå¸¸æœ‰ç”¨ã€‚" msgid "Transition: " msgstr "过渡: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "平移模å¼" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4661,7 +4696,7 @@ msgstr "当å‰:" #: 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" @@ -4805,15 +4840,15 @@ msgstr "sha256å“ˆå¸Œå€¼æ ¡éªŒå¤±è´¥" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" -msgstr "资æºä¸‹è½½å‡ºé”™:" +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..." -msgstr "下载ä¸â€¦" +msgstr "下载ä¸..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving..." @@ -4841,23 +4876,47 @@ 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" +msgstr "最近更新" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "最久未更新" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "å称(A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "å称(Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (A-Z)" +msgstr "许å¯è¯ï¼ˆA-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "许å¯è¯ï¼ˆZ-A)" #: editor/plugins/asset_library_editor_plugin.cpp msgid "First" -msgstr "第一项" +msgstr "首页" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Previous" -msgstr "上一个" +msgstr "上一页" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Next" -msgstr "下一项" +msgstr "下一页" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Last" -msgstr "最åŽä¸€é¡¹" +msgstr "末页" #: editor/plugins/asset_library_editor_plugin.cpp msgid "All" @@ -4869,7 +4928,7 @@ msgstr "未找到 \"%s\"。" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." -msgstr "导入…" +msgstr "导入..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Plugins..." @@ -4906,7 +4965,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 "" @@ -4916,7 +4975,7 @@ msgid "" msgstr "" "æ— æ³•ç¡®å®šå…‰ç…§è´´å›¾çš„ä¿å˜è·¯å¾„。\n" "请先ä¿å˜åœºæ™¯ï¼ˆå…‰ç…§è´´å›¾å°†è¢«å˜åœ¨åŒä¸€ç›®å½•ä¸‹ï¼‰æˆ–ä»Žå±žæ€§é¢æ¿ä¸æ‰‹åЍä¿å˜ " -"`BakedLightmap` 属性。" +"BakedLightmap 属性。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5038,6 +5097,74 @@ msgid "" msgstr "激活åŽï¼Œç§»åŠ¨æŽ§åˆ¶èŠ‚ç‚¹ä¼šæ›´æ”¹å˜é”šç‚¹ï¼Œè€Œéžè¾¹è·ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "左上角" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "å³ä¸Šè§’" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "å³ä¸‹è§’" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "左下角" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "左侧居ä¸" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "顶部居ä¸" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "å³ä¾§å±…ä¸" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "底部居ä¸" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "å±…ä¸" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "左侧全幅" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "顶部全幅" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "å³ä¾§å…¨å¹…" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "底部全幅" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "垂直居ä¸å…¨å¹…" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "水平居ä¸å…¨å¹…" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "整个矩形" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "ä¿æŒé•¿å®½æ¯”" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "仅锚点" @@ -5134,7 +5261,7 @@ msgstr "æ‹–åŠ¨æ¥æ—‹è½¬" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+Drag: Move" -msgstr "按ä½Alt拖动: 移动" +msgstr "Alt+拖动:移动" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." @@ -5142,7 +5269,7 @@ msgstr "按下V键修改旋转ä¸å¿ƒï¼Œåœ¨ç§»åŠ¨æ—¶æŒ‰ä¸‹Shift+Væ¥æ‹–动它。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" -msgstr "Alt+é¼ æ ‡å³é”®:æ˜¾ç¤ºé¼ æ ‡ç‚¹å‡»ä½ç½®ä¸‹çš„æ‰€æœ‰èŠ‚ç‚¹åˆ—è¡¨" +msgstr "Alt+é¼ æ ‡å³é”®ï¼šæ˜¾ç¤ºé¼ æ ‡ç‚¹å‡»ä½ç½®ä¸‹çš„æ‰€æœ‰èŠ‚ç‚¹åˆ—è¡¨" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5164,7 +5291,9 @@ msgstr "缩放模å¼" msgid "" "Show a list of all objects at the position clicked\n" "(same as Alt+RMB in select mode)." -msgstr "æ˜¾ç¤ºé¼ æ ‡ç‚¹å‡»ä½ç½®çš„æ‰€æœ‰èŠ‚ç‚¹ï¼ˆåŒAlt+é¼ æ ‡å³é”®ï¼‰ã€‚" +msgstr "" +"æ˜¾ç¤ºé¼ æ ‡ç‚¹å‡»ä½ç½®çš„æ‰€æœ‰èŠ‚ç‚¹\n" +"(åŒAlt+é¼ æ ‡å³é”®ï¼‰ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." @@ -5225,7 +5354,7 @@ msgstr "设置å¸é™„..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Parent" -msgstr "å¸é™„到父级" +msgstr "å¸é™„到父节点" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Node Anchor" @@ -5241,7 +5370,7 @@ msgstr "å¸é™„到节点ä¸å¿ƒä½ç½®" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Other Nodes" -msgstr "å¸é™„到其他node节点" +msgstr "å¸é™„到其它节点" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Guides" @@ -5294,7 +5423,7 @@ msgstr "æ€»æ˜¯æ˜¾ç¤ºç½‘æ ¼" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "显示辅助线" +msgstr "显示辅助信æ¯" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" @@ -5302,7 +5431,7 @@ msgstr "æ˜¾ç¤ºæ ‡å°º" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "显示引导" +msgstr "显示辅助线" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" @@ -5310,11 +5439,11 @@ msgstr "显示原点" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Viewport" -msgstr "显示视图窗å£" +msgstr "显示视å£" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "显示组和é”å®šå›¾æ ‡" +msgstr "显示分组和é”å®šå›¾æ ‡" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -5365,7 +5494,7 @@ msgstr "æ’入关键帧(已有轨é“)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" -msgstr "æ‹·è´å§¿åŠ¿" +msgstr "å¤åˆ¶å§¿åŠ¿" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" @@ -5389,7 +5518,7 @@ msgstr "æ·»åŠ %s" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Adding %s..." -msgstr "æ£åœ¨æ·»åŠ ï¼…s ..." +msgstr "æ£åœ¨æ·»åŠ %s..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Cannot instantiate multiple nodes without root." @@ -5540,7 +5669,7 @@ msgstr "å³çº¿æ€§" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Preset" -msgstr "载入预置" +msgstr "载入预设" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove Curve Point" @@ -5560,7 +5689,7 @@ msgstr "é¼ æ ‡å³é”®æ·»åŠ ç‚¹" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "渲染GI Probe" +msgstr "烘培GI探针" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" @@ -5653,7 +5782,7 @@ msgstr "创建轮廓(outlines)" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "网络" +msgstr "ç½‘æ ¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" @@ -5696,6 +5825,11 @@ msgid "Remove item %d?" msgstr "确定è¦ç§»é™¤é¡¹ç›®%då—?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "ç½‘æ ¼åº“..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "æ·»åŠ é¡¹ç›®" @@ -5841,7 +5975,7 @@ 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." @@ -6058,7 +6192,7 @@ msgstr "创建内部顶点" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Remove Internal Vertex" -msgstr "移除曲线内控制点" +msgstr "移除内部顶点" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" @@ -6274,7 +6408,7 @@ msgstr "AnimationPlayer è·¯å¾„æ— æ•ˆ" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" -msgstr "清ç†å½“剿–‡ä»¶" +msgstr "清除最近打开文件列表" #: editor/plugins/script_editor_plugin.cpp msgid "Close and save changes?" @@ -6310,7 +6444,7 @@ msgstr "导入出错" #: editor/plugins/script_editor_plugin.cpp msgid "New Text File..." -msgstr "新文本文件..." +msgstr "新建文本文件..." #: editor/plugins/script_editor_plugin.cpp msgid "Open File" @@ -6321,6 +6455,23 @@ msgid "Save File As..." msgstr "å¦å˜ä¸º..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "导入主题" @@ -6352,7 +6503,7 @@ msgstr "查找上一项" #: editor/plugins/script_editor_plugin.cpp msgid "Filter scripts" -msgstr "过滤脚本" +msgstr "ç›é€‰è„šæœ¬" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." @@ -6360,7 +6511,7 @@ msgstr "åˆ‡æ¢æŒ‰å—æ¯è¡¨æŽ’åºæ–¹å¼æŽ’列方法。" #: editor/plugins/script_editor_plugin.cpp msgid "Filter methods" -msgstr "过滤方å¼" +msgstr "ç›é€‰æ–¹æ³•" #: editor/plugins/script_editor_plugin.cpp msgid "Sort" @@ -6392,7 +6543,7 @@ msgstr "文件" #: editor/plugins/script_editor_plugin.cpp msgid "Open..." -msgstr "打开…" +msgstr "打开..." #: editor/plugins/script_editor_plugin.cpp msgid "Reopen Closed Script" @@ -6408,7 +6559,7 @@ msgstr "软é‡è½½è„šæœ¬" #: editor/plugins/script_editor_plugin.cpp msgid "Copy Script Path" -msgstr "æ‹·è´è„šæœ¬è·¯å¾„" +msgstr "å¤åˆ¶è„šæœ¬è·¯å¾„" #: editor/plugins/script_editor_plugin.cpp msgid "History Previous" @@ -6425,7 +6576,7 @@ msgstr "主题" #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme..." -msgstr "导入主题…" +msgstr "导入主题..." #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" @@ -6447,10 +6598,6 @@ msgstr "关闿–‡æ¡£" msgid "Run" msgstr "è¿è¡Œ" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "切æ¢è„šæœ¬é¢æ¿" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "啿¥è¿›å…¥" @@ -6461,7 +6608,7 @@ msgstr "啿¥è·³è¿‡" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Break" -msgstr "跳过" +msgstr "æš‚åœ" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp #: editor/script_editor_debugger.cpp @@ -6510,7 +6657,7 @@ msgid "" "What action should be taken?:" msgstr "" "ç£ç›˜ä¸çš„下列文件已更新。\n" -"请选择执行那项æ“作?:" +"请选择执行哪项æ“作?:" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp @@ -6553,7 +6700,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 "Line" @@ -6573,7 +6720,7 @@ msgstr "åªå¯ä»¥æ‹–拽æ¥è‡ªæ–‡ä»¶ç³»ç»Ÿä¸çš„资æºã€‚" #: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" -msgstr "æŸ¥æ‰¾æ ‡è®°" +msgstr "查找符å·" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -6625,7 +6772,7 @@ msgstr "全选" #: editor/plugins/script_text_editor.cpp msgid "Delete Line" -msgstr "åˆ é™¤çº¿" +msgstr "åˆ é™¤è¡Œ" #: editor/plugins/script_text_editor.cpp msgid "Indent Left" @@ -6661,7 +6808,7 @@ msgstr "代ç 补全" #: editor/plugins/script_text_editor.cpp msgid "Evaluate Selection" -msgstr "评估选择" +msgstr "所选内容求值" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" @@ -6685,7 +6832,7 @@ msgstr "åœ¨æ–‡ä»¶ä¸æŸ¥æ‰¾..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" -msgstr "æœç´¢å…‰æ ‡ä½ç½®" +msgstr "上下文帮助" #: editor/plugins/script_text_editor.cpp msgid "Toggle Bookmark" @@ -6746,11 +6893,11 @@ msgstr "该骨架没有骨骼绑定,请创建一些 Bone2D 骨骼å节点。" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Create Rest Pose from Bones" -msgstr "从骨骼创建休闲姿势" +msgstr "从骨骼创建放æ¾å§¿åŠ¿" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Rest Pose to Bones" -msgstr "将休闲姿势设置为骨骼" +msgstr "将放æ¾å§¿åŠ¿è®¾ç½®åˆ°éª¨éª¼" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Skeleton2D" @@ -6854,7 +7001,7 @@ msgstr "表é¢å˜æ›´" #: editor/plugins/spatial_editor_plugin.cpp msgid "Draw Calls" -msgstr "绘制调用(Draw Calls)" +msgstr "绘制调用" #: editor/plugins/spatial_editor_plugin.cpp msgid "Vertices" @@ -6862,11 +7009,11 @@ msgstr "顶点" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View." -msgstr "俯视图(Top View)。" +msgstr "俯视图。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "仰视图(Bottom View)。" +msgstr "仰视图。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom" @@ -6890,7 +7037,7 @@ msgstr "峿–¹" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View." -msgstr "æ£è§†å›¾ã€‚" +msgstr "å‰è§†å›¾ã€‚" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front" @@ -6946,7 +7093,7 @@ msgstr "视图环境" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Gizmos" -msgstr "Gizmos(å¯è§†åŒ–调试工具)" +msgstr "查看控制器" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Information" @@ -6958,7 +7105,7 @@ msgstr "查看帧率" #: editor/plugins/spatial_editor_plugin.cpp msgid "Half Resolution" -msgstr "一åŠåˆ†è¾¨çއ" +msgstr "åŠåˆ†è¾¨çއ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Audio Listener" @@ -7052,15 +7199,15 @@ msgstr "底部视图" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View" -msgstr "Top视图" +msgstr "俯视图" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear View" -msgstr "Rear视图" +msgstr "åŽè§†å›¾" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View" -msgstr "æ£é¢è§†å›¾" +msgstr "å‰è§†å›¾" #: editor/plugins/spatial_editor_plugin.cpp msgid "Left View" @@ -7084,7 +7231,7 @@ msgstr "显示原点" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" -msgstr "选ä¸é€‰ä¸é¡¹" +msgstr "èšç„¦é€‰ä¸é¡¹" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" @@ -7113,15 +7260,15 @@ msgstr "2个视å£" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" -msgstr "2个视å£ï¼ˆAlt)" +msgstr "2个视å£ï¼ˆå¤‡é€‰ï¼‰" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports" -msgstr "3个视å£ï¼ˆAlt)" +msgstr "3个视å£" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" -msgstr "3个视å£ï¼ˆAlt)" +msgstr "3个视å£ï¼ˆå¤‡é€‰ï¼‰" #: editor/plugins/spatial_editor_plugin.cpp msgid "4 Viewports" @@ -7129,7 +7276,7 @@ msgstr "4个视å£" #: editor/plugins/spatial_editor_plugin.cpp msgid "Gizmos" -msgstr "Gizmos(å°å·¥å…·ï¼‰" +msgstr "控制器" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" @@ -7150,7 +7297,7 @@ msgstr "å¸é™„设置" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "转化å¸é™„:" +msgstr "平移å¸é™„:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" @@ -7198,15 +7345,15 @@ msgstr "å˜æ¢ç±»åž‹" #: editor/plugins/spatial_editor_plugin.cpp msgid "Pre" -msgstr "å‰ï¼ˆper)" +msgstr "å‰ç½®" #: editor/plugins/spatial_editor_plugin.cpp msgid "Post" -msgstr "å‘布(Post)" +msgstr "åŽç½®" #: editor/plugins/spatial_editor_plugin.cpp msgid "Nameless gizmo" -msgstr "未命åçš„Gizmo" +msgstr "æ— åæŽ§åˆ¶å™¨" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create Mesh2D" @@ -7230,7 +7377,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." @@ -7266,11 +7413,11 @@ msgstr "创建2Dé®å…‰å¤šè¾¹å½¢æˆå‘˜" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite" -msgstr "Sprite ç²¾çµ" +msgstr "ç²¾çµ" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " -msgstr "简å•化: " +msgstr "简化: " #: editor/plugins/sprite_editor_plugin.cpp msgid "Shrink (Pixels): " @@ -7318,7 +7465,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)" @@ -7338,7 +7485,7 @@ msgstr "新建动画" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" -msgstr "速度(FPS):" +msgstr "速度(FPS):" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" @@ -7354,7 +7501,7 @@ msgstr "ä»Žæ–‡ä»¶æ·»åŠ çº¹ç†" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frames from a Sprite Sheet" -msgstr "从精çµè¡¨æ ¼ä¸æ·»åР叧" +msgstr "从精çµè¡¨ä¸æ·»åР叧" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7439,7 +7586,7 @@ msgstr "间隔:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "TextureRegion" -msgstr "TextureRegion 纹ç†åŒºåŸŸ" +msgstr "纹ç†åŒºåŸŸ" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" @@ -7574,6 +7721,7 @@ msgid "Data Type:" msgstr "æ•°æ®ç±»åž‹:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "å›¾æ ‡" @@ -7593,13 +7741,17 @@ msgstr "颜色" msgid "Constant" msgstr "常é‡" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme File" +msgstr "主题文件" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "擦除选ä¸" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Fix Invalid Tiles" -msgstr "ä¿®å¤æ— 效的ç£è´´" +msgstr "ä¿®å¤æ— 效的图å—" #: editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp @@ -7608,7 +7760,7 @@ msgstr "切割选择" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" -msgstr "ç»˜åˆ¶ç –å—地图" +msgstr "绘制图å—地图" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Line Draw" @@ -7624,11 +7776,11 @@ msgstr "油漆桶填充" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase TileMap" -msgstr "æ“¦é™¤ç –å—地图" +msgstr "擦除图å—地图" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Find Tile" -msgstr "查找ç£è´´" +msgstr "查找图å—" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" @@ -7636,7 +7788,7 @@ msgstr "转置" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Disable Autotile" -msgstr "ç¦ç”¨æ™ºèƒ½ç£è´´(Autotile)" +msgstr "ç¦ç”¨è‡ªåЍ图å—" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Enable Priority" @@ -7644,15 +7796,15 @@ msgstr "å¯ç”¨ä¼˜å…ˆçº§" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Filter tiles" -msgstr "过滤tiles" +msgstr "ç›é€‰å›¾å—" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Give a TileSet resource to this TileMap to use its tiles." -msgstr "为æ¤tilemapæä¾›tileset资æºä»¥ä½¿ç”¨å…¶tile。" +msgstr "为图å—地图设置图å—集资æºåŽï¼Œæ‰èƒ½ä½¿ç”¨å…¶å›¾å—。" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint Tile" -msgstr "绘制ç£è´´" +msgstr "绘制图å—" #: editor/plugins/tile_map_editor_plugin.cpp msgid "" @@ -7664,7 +7816,7 @@ msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" -msgstr "选择ç£è´´" +msgstr "选择图å—" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate Left" @@ -7688,11 +7840,11 @@ msgstr "æ¸…é™¤å˜æ¢" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Add Texture(s) to TileSet." -msgstr "æ·»åŠ çº¹ç†åˆ°ç£è´´é›†ã€‚" +msgstr "æ·»åŠ çº¹ç†åˆ°å›¾å—集。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove selected Texture from TileSet." -msgstr "从ç£è´´é›†ä¸åˆ 除当å‰çº¹ç†ã€‚" +msgstr "从图å—集ä¸åˆ 除所选纹ç†ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -7703,12 +7855,26 @@ msgid "Merge from Scene" msgstr "从场景ä¸åˆå¹¶" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "ç¦ç”¨è‡ªåЍ图å—" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "ç²¾çµé›†:" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "ä¸‹ä¸€ä¸ªåæ ‡" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the next shape, subtile, or Tile." -msgstr "选择下一个形状,åç –å—ï¼Œæˆ–ç –å—。" +msgstr "选择下一个形状ã€å图å—ã€å›¾å—。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Previous Coordinate" @@ -7716,7 +7882,42 @@ msgstr "ä¸Šä¸€ä¸ªåæ ‡" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the previous shape, subtile, or Tile." -msgstr "选择上一个形状,åç –å—ï¼Œæˆ–ç –å—。" +msgstr "选择上一个形状ã€å图å—ã€å›¾å—。" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Region" +msgstr "区域模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "碰撞模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "鮿Œ¡æ¨¡å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "导航模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "ä½æŽ©ç æ¨¡å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "优先模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "åºå·:" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" @@ -7764,7 +7965,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." @@ -7772,17 +7973,15 @@ msgstr "创建新多边形。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." -msgstr "使多边形ä½äºŽçº¹ç†åŒºåŸŸä¸ã€‚" +msgstr "ä¿æŒå¤šè¾¹å½¢ä½äºŽçº¹ç†åŒºåŸŸä¸ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." -msgstr "" -"å¯ç”¨å¸é™„å¹¶æ˜¾ç¤ºç½‘æ ¼\n" -"ï¼ˆè¯·é€šè¿‡å±žæ€§é¢æ¿è®¾ç½®ï¼‰ã€‚" +msgstr "å¯ç”¨å¸é™„å¹¶æ˜¾ç¤ºç½‘æ ¼ï¼ˆå¯é€šè¿‡å±žæ€§é¢æ¿è®¾ç½®ï¼‰ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" -msgstr "显示ç£è´´çš„åå—ï¼ˆæŒ‰ä½ Alt 键)" +msgstr "显示图å—åç§°ï¼ˆæŒ‰ä½ Alt 键)" #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -7791,7 +7990,7 @@ msgstr "åœ¨å·¦ä¾§é¢æ¿ä¸Šæ·»åŠ æˆ–é€‰æ‹©çº¹ç†ä»¥ç¼–辑与其绑定的图å—。 #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "åˆ é™¤é€‰å®šçš„çº¹ç†ï¼Ÿè¿™å°†åˆ 除使用它的所有ç£è´´ã€‚" +msgstr "åˆ é™¤é€‰å®šçš„çº¹ç†ï¼Ÿæ‰€æœ‰ä½¿ç”¨å®ƒçš„图å—ä¹Ÿå°†è¢«ä¸€å¹¶åˆ é™¤ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." @@ -7799,7 +7998,7 @@ msgstr "请先选择è¦ç§»é™¤çš„纹ç†ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." -msgstr "从场景创建?这将覆盖所有当å‰ç£è´´ã€‚" +msgstr "从场景创建?这将覆盖所有当å‰å›¾å—。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" @@ -7819,7 +8018,7 @@ msgid "" "Click on another Tile to edit it." msgstr "" "拖拽手柄以编辑举行。\n" -"点击å¦ä¸€ä¸ªç£è´´è¿›è¡Œç¼–辑。" +"点击å¦ä¸€ä¸ªå›¾å—进行编辑。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Delete selected Rect." @@ -7830,8 +8029,8 @@ msgid "" "Select current edited sub-tile.\n" "Click on another Tile to edit it." msgstr "" -"选择当å‰ç¼–辑状æ€ä¸‹çš„åç£è´´ã€‚\n" -"点击选择å¦ä¸€ä¸ªç£è´´è¿›è¡Œç¼–辑。" +"选择当å‰ç¼–辑状æ€ä¸‹çš„å图å—。\n" +"点击选择å¦ä¸€ä¸ªå›¾å—进行编辑。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Delete polygon." @@ -7844,10 +8043,10 @@ msgid "" "Shift+LMB: Set wildcard bit.\n" "Click on another Tile to edit it." msgstr "" -"é¼ æ ‡å·¦é”®ï¼š å¯ç”¨æ¯”特。\n" -"é¼ æ ‡å³é”®ï¼š 关闿¯”特。\n" -"Shift+é¼ æ ‡å·¦é”®: 设置通é…符ä½.\n" -"点击å¦ä¸€ä¸ªç“¦ç‰‡è¿›è¡Œç¼–辑。" +"é¼ æ ‡å·¦é”®ï¼šå¯ç”¨æ¯”特。\n" +"é¼ æ ‡å³é”®ï¼šå…³é—比特。\n" +"Shift+é¼ æ ‡å·¦é”®ï¼šè®¾ç½®é€šé…符ä½ã€‚\n" +"点击å¦ä¸€ä¸ªå›¾å—进行编辑。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "" @@ -7855,40 +8054,40 @@ msgid "" "bindings.\n" "Click on another Tile to edit it." msgstr "" -"选择一个åç£è´´ä½œä¸ºå›¾æ ‡ï¼Œæ¤å›¾æ ‡è¿˜ä¼šç»‘å®šåˆ°æ— æ•ˆçš„è‡ªåŠ¨ç£è´´ä¸Šã€‚\n" -"点击选择å¦ä¸€ä¸ªç£è´´è¿›è¡Œç¼–辑。" +"选择一个å图å—ä½œä¸ºå›¾æ ‡ï¼Œæ¤å›¾æ ‡è¿˜ä¼šç»‘å®šåˆ°æ— æ•ˆçš„è‡ªåŠ¨å›¾å—上。\n" +"点击选择å¦ä¸€ä¸ªå›¾å—进行编辑。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "" "Select sub-tile to change its priority.\n" "Click on another Tile to edit it." msgstr "" -"选择并修改åç£è´´çš„优先级。\n" -"点击选择å¦ä¸€ä¸ªç£è´´è¿›è¡Œç¼–辑。" +"选择并修改å图å—的优先级。\n" +"点击选择å¦ä¸€ä¸ªå›¾å—进行编辑。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "" "Select sub-tile to change its z index.\n" "Click on another Tile to edit it." msgstr "" -"选择并修改åç£è´´çš„优先级。\n" -"点击选择å¦ä¸€ä¸ªç£è´´è¿›è¡Œç¼–辑。" +"选择并修改å图å—的优先级。\n" +"点击选择å¦ä¸€ä¸ªå›¾å—进行编辑。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Region" -msgstr "设置ç£è´´åŒºåŸŸ" +msgstr "设置图å—区域" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Tile" -msgstr "创建ç£è´´" +msgstr "创建图å—" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "设置纹ç†å›¾æ ‡" +msgstr "设置图å—å›¾æ ‡" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Bitmask" -msgstr "编辑ç£è´´ä½æŽ©ç " +msgstr "编辑图å—使ީç " #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Collision Polygon" @@ -7904,11 +8103,11 @@ msgstr "编辑导航多边形" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Paste Tile Bitmask" -msgstr "粘贴ç£è´´ä½æŽ©ç " +msgstr "粘贴图å—使ީç " #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "æ¸…é™¤ä½æŽ©ç " +msgstr "清除图å—使ީç " #: editor/plugins/tile_set_editor_plugin.cpp msgid "Make Polygon Concave" @@ -7920,7 +8119,7 @@ msgstr "使多边形凸起" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Tile" -msgstr "移除ç£è´´" +msgstr "移除图å—" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Collision Polygon" @@ -7936,11 +8135,11 @@ msgstr "åˆ é™¤å¯¼èˆªå¤šè¾¹å½¢" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Priority" -msgstr "编辑ç£è´´ä¼˜å…ˆçº§" +msgstr "编辑图å—优先级" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" -msgstr "编辑纹ç†çš„Zåæ ‡" +msgstr "ç¼–è¾‘å›¾å— Z åæ ‡" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" @@ -7956,7 +8155,7 @@ msgstr "ä¸èƒ½ä¿®æ”¹è¯¥å±žæ€§ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "TileSet" -msgstr "ç –å—集" +msgstr "图å—集" #: editor/plugins/version_control_editor_plugin.cpp msgid "No VCS addons are available." @@ -8234,7 +8433,7 @@ msgstr "颜色统一。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the %s comparison between two parameters." -msgstr "è¿”å›žä¸¤ä¸ªå‚æ•°ä¹‹é—´ï¼…s比较的布尔结果。" +msgstr "è¿”å›žä¸¤ä¸ªå‚æ•°ä¹‹é—´ %s 比较的布尔结果。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Equal (==)" @@ -8308,7 +8507,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." @@ -8316,35 +8515,35 @@ 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." -msgstr "Scalar 函数。" +msgstr "æ ‡é‡å‡½æ•°ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar operator." -msgstr "æ ‡é‡è¿ç®—符(Scalar Operator)。" +msgstr "æ ‡é‡è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "E constant (2.718282). Represents the base of the natural logarithm." @@ -8808,8 +9007,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 "" @@ -8888,20 +9087,28 @@ msgid "Runnable" msgstr "坿‰§è¡Œçš„" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "æ·»åŠ åŽŸå§‹å¯¼å‡ºé¡¹..." + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "æ·»åŠ å·²æœ‰è¡¥ä¸..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "从列表ä¸åˆ 除补ä¸''%s'?" #: 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 msgid "" @@ -8909,8 +9116,8 @@ 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 msgid "Release" @@ -8926,7 +9133,7 @@ msgstr "指定导出路径ä¸å˜åœ¨ï¼š" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted:" -msgstr "该平å°çš„导出模æ¿ä¸¢å¤±/æŸå:" +msgstr "该平å°çš„导出模æ¿ç¼ºå¤±æˆ–æŸå:" #: editor/project_export.cpp msgid "Presets" @@ -8977,8 +9184,8 @@ msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"ç›é€‰å¯¼å‡ºéžèµ„æºæ–‡ä»¶æˆ–目录\n" -"(使用英文逗å·åˆ†éš”,如: *.json,*.txt docs/* )" +"ç›é€‰å¯¼å‡ºéžèµ„æºæ–‡ä»¶æˆ–文件夹\n" +"(使用英文逗å·åˆ†éš”,如:*.json, *.txt, docs/* )" #: editor/project_export.cpp msgid "" @@ -8986,7 +9193,7 @@ msgid "" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" "ä»Žé¡¹ç›®ä¸æŽ’é™¤æ–‡ä»¶æˆ–ç›®å½•\n" -"(以逗å·åˆ†éš”,例如:*.json,*.txt, docs/*)" +"(以英文逗å·åˆ†éš”,如:*.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -8997,6 +9204,10 @@ msgid "Make Patch" msgstr "制作补ä¸" #: editor/project_export.cpp +msgid "Pack File" +msgstr "包文件" + +#: editor/project_export.cpp msgid "Features" msgstr "功能" @@ -9048,9 +9259,17 @@ msgstr "导出模å¼ï¼Ÿ" msgid "Export All" msgstr "全部导出" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "ZIP 文件" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Godot游æˆåŒ…" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" -msgstr "该平å°çš„导出模æ¿ä¸¢å¤±ï¼š" +msgstr "该平å°çš„导出模æ¿ç¼ºå¤±ï¼š" #: editor/project_export.cpp msgid "Manage Export Templates" @@ -9070,7 +9289,7 @@ msgstr "æ— æ•ˆçš„â€œ.zipâ€é¡¹ç›®æ–‡ä»¶ï¼Œæ²¡æœ‰åŒ…å«ä¸€ä¸ªâ€œproject.godotâ€æ #: editor/project_manager.cpp msgid "Please choose an empty folder." -msgstr "请选择一个空目录。" +msgstr "请选择空文件夹。" #: editor/project_manager.cpp msgid "Please choose a 'project.godot' or '.zip' file." @@ -9117,11 +9336,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 "The following files failed extraction from package:" @@ -9161,7 +9380,7 @@ msgstr "项目åç§°:" #: editor/project_manager.cpp msgid "Project Path:" -msgstr "项目目录:" +msgstr "项目路径:" #: editor/project_manager.cpp msgid "Project Installation Path:" @@ -9182,8 +9401,8 @@ msgid "" "Incompatible with older hardware\n" "Not recommended for web games" msgstr "" -"更高的视觉质é‡\n" -"所有å¯ç”¨åŠŸèƒ½\n" +"è§†è§‰è´¨é‡æ›´é«˜\n" +"所有功能å¯ç”¨\n" "与旧硬件ä¸å…¼å®¹\n" "䏿ލè用于网络游æˆ" @@ -9198,9 +9417,9 @@ msgid "" "Works on most hardware\n" "Recommended for web games" msgstr "" -"较低的视觉质é‡\n" +"视觉质é‡è¾ƒä½Ž\n" "æŸäº›åŠŸèƒ½ä¸å¯ç”¨\n" -"适用于大多数硬件\n" +"å¯ç”¨äºŽå¤§å¤šæ•°ç¡¬ä»¶\n" "推è用于网络游æˆ" #: editor/project_manager.cpp @@ -9213,11 +9432,11 @@ msgstr "未命å项目" #: editor/project_manager.cpp msgid "Missing Project" -msgstr "缺少项目" +msgstr "缺失项目" #: editor/project_manager.cpp msgid "Error: Project is missing on the filesystem." -msgstr "错误:文件系统上丢失项目。" +msgstr "错误:文件系统上缺失项目。" #: editor/project_manager.cpp msgid "Can't open project at '%s'." @@ -9239,12 +9458,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" +"è¦å‘Šï¼šä½ å°†æ— æ³•å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开项目。" #: editor/project_manager.cpp msgid "" @@ -9258,8 +9477,11 @@ msgid "" "engine anymore." msgstr "" "以下项目设置文件由较旧的引擎版本生æˆï¼Œéœ€è¦ä¸ºæ¤ç‰ˆæœ¬è¿›è¡Œè½¬æ¢ï¼š\n" +"\n" "%s\n" -" 是å¦è¦è½¬æ¢å®ƒï¼Ÿ è¦å‘Šï¼š æ‚¨å°†æ— æ³•å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开项目。" +"\n" +"是å¦è¦è½¬æ¢ï¼Ÿ\n" +"è¦å‘Šï¼š æ‚¨å°†æ— æ³•å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开项目。" #: editor/project_manager.cpp msgid "" @@ -9281,18 +9503,20 @@ msgid "" "Can't run project: Assets need to be imported.\n" "Please edit the project to trigger the initial import." msgstr "" -"ä¸èƒ½è¿è¡Œé¡¹ç›®ï¼š 需è¦å¯¼å…¥èµ„æºæ–‡ä»¶ã€‚\n" -"请编辑项目导入åˆå§‹åŒ–资æºã€‚" +"æ— æ³•è¿è¡Œé¡¹ç›®ï¼š 需è¦å¯¼å…¥ç´ æã€‚\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个项目? 项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€‚" +msgstr "" +"是å¦ä»Žåˆ—表ä¸åˆ 除%d个项目? \n" +"项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€‚" #: editor/project_manager.cpp msgid "" @@ -9304,7 +9528,9 @@ msgstr "从列表ä¸åˆ 除该项目? 项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€ msgid "" "Remove all missing projects from the list?\n" "The project folders' contents won't be modified." -msgstr "从列表ä¸åˆ 除所有丢失的项目? 项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€‚" +msgstr "" +"是å¦ä»Žåˆ—表ä¸åˆ 除所有缺失的项目?\n" +"项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€‚" #: editor/project_manager.cpp msgid "" @@ -9316,7 +9542,9 @@ msgstr "è¯è¨€å·²æ›´æ”¹ã€‚ 釿–°å¯åŠ¨ç¼–è¾‘å™¨æˆ–é¡¹ç›®ç®¡ç†å™¨åŽï¼Œç•Œé¢å° msgid "" "Are you sure to scan %s folders for existing Godot projects?\n" "This could take a while." -msgstr "æ‚¨ç¡®å®šè¦æ‰«æï¼…s文件夹ä¸çš„现有Godot项目å—? è¿™å¯èƒ½éœ€è¦ä¸€æ®µæ—¶é—´ã€‚" +msgstr "" +"æ‚¨ç¡®å®šè¦æ‰«æ%s文件夹ä¸çš„现有Godot项目å—? \n" +"è¿™å¯èƒ½éœ€è¦ä¸€æ®µæ—¶é—´ã€‚" #: editor/project_manager.cpp msgid "Project Manager" @@ -9324,7 +9552,11 @@ msgstr "项目管ç†å™¨" #: editor/project_manager.cpp msgid "Projects" -msgstr "工程" +msgstr "项目" + +#: editor/project_manager.cpp +msgid "Last Modified" +msgstr "修改时间" #: editor/project_manager.cpp msgid "Scan" @@ -9332,11 +9564,11 @@ msgstr "扫æ" #: editor/project_manager.cpp msgid "Select a Folder to Scan" -msgstr "é€‰æ‹©è¦æ‰«æçš„目录" +msgstr "é€‰æ‹©è¦æ‰«æçš„æ–‡ä»¶å¤¹" #: editor/project_manager.cpp msgid "New Project" -msgstr "新建" +msgstr "新建项目" #: editor/project_manager.cpp msgid "Remove Missing" @@ -9359,8 +9591,8 @@ 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_settings_editor.cpp msgid "Key " @@ -9395,11 +9627,11 @@ msgstr "é‡å‘½å输入事件" #: editor/project_settings_editor.cpp msgid "Change Action deadzone" -msgstr "æ”¹å˜æ“作隔离区" +msgstr "改å˜åŠ¨ä½œç›²åŒº" #: editor/project_settings_editor.cpp msgid "Add Input Action Event" -msgstr "æ·»åŠ è¾“å…¥äº‹ä»¶" +msgstr "æ·»åŠ è¾“å…¥åŠ¨ä½œäº‹ä»¶" #: editor/project_settings_editor.cpp msgid "All Devices" @@ -9515,7 +9747,7 @@ 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" @@ -9593,7 +9825,7 @@ msgstr "常规" #: editor/project_settings_editor.cpp msgid "Override For..." -msgstr "é‡å†™çš„......" +msgstr "覆盖..." #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "The editor must be restarted for changes to take effect." @@ -9609,11 +9841,11 @@ msgstr "动作:" #: editor/project_settings_editor.cpp msgid "Action" -msgstr "动作(``Action``)" +msgstr "动作" #: editor/project_settings_editor.cpp msgid "Deadzone" -msgstr "隔离区" +msgstr "盲区" #: editor/project_settings_editor.cpp msgid "Device:" @@ -9785,11 +10017,11 @@ msgstr "" #: editor/rename_dialog.cpp msgid "Per Level counter" -msgstr "æ¯ä¸ªçº§åˆ«è®¡æ•°å™¨" +msgstr "å„级å•独计数" #: editor/rename_dialog.cpp msgid "If set the counter restarts for each group of child nodes" -msgstr "如果设置了计数器,则é‡å¯æ¯ç»„å节点" +msgstr "如果å¯ç”¨ï¼Œè®¡æ•°å™¨å°†ä¸ºæ¯ç»„å节点é‡ç½®" #: editor/rename_dialog.cpp msgid "Initial value for the counter" @@ -9813,7 +10045,7 @@ msgid "" "Missing digits are padded with leading zeros." msgstr "" "计数器数å—的最少个数。\n" -"丢失的数å—用0填充在头部。" +"缺失的数å—将用0填充在头部。" #: editor/rename_dialog.cpp msgid "Regular Expressions" @@ -9825,15 +10057,15 @@ msgstr "åŽæœŸå¤„ç†" #: editor/rename_dialog.cpp msgid "Keep" -msgstr "ä¿æŒä¸å˜" +msgstr "ä¿æŒ" #: editor/rename_dialog.cpp msgid "CamelCase to under_scored" -msgstr "驼峰å¼è½¬ä¸ºä¸‹æ¨ªçº¿æ–¹å¼" +msgstr "驼峰å¼è½¬ä¸ºä¸‹åˆ’线å¼" #: editor/rename_dialog.cpp msgid "under_scored to CamelCase" -msgstr "下横线方å¼è½¬ä¸ºé©¼å³°å¼" +msgstr "下划线å¼è½¬ä¸ºé©¼å³°å¼" #: editor/rename_dialog.cpp msgid "Case" @@ -9935,7 +10167,7 @@ msgstr "å¤åˆ¶èŠ‚ç‚¹" #: editor/scene_tree_dock.cpp msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." -msgstr "æ— æ³•é‡æ–°è®¾ç½®ç»§æ‰¿åœºæ™¯ä¸çš„èŠ‚ç‚¹ï¼ŒèŠ‚ç‚¹é¡ºåºæ— 法更改。" +msgstr "æ— æ³•ä¸ºç»§æ‰¿åœºæ™¯ä¸çš„节点é‡è®¾çˆ¶èŠ‚ç‚¹ï¼ŒèŠ‚ç‚¹é¡ºåºæ— 法更改。" #: editor/scene_tree_dock.cpp msgid "Node must belong to the edited scene to become root." @@ -9951,19 +10183,19 @@ msgstr "å°†èŠ‚ç‚¹è®¾ç½®ä¸ºæ ¹èŠ‚ç‚¹" #: 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." @@ -9996,7 +10228,7 @@ msgstr "使用本地" #: editor/scene_tree_dock.cpp msgid "New Scene Root" -msgstr "æ–°åœºæ™¯æ ¹" +msgstr "æ–°å»ºåœºæ™¯æ ¹" #: editor/scene_tree_dock.cpp msgid "Create Root Node:" @@ -10086,11 +10318,11 @@ msgstr "更改类型" #: editor/scene_tree_dock.cpp msgid "Reparent to New Node" -msgstr "釿–°åˆ†é…到新节点" +msgstr "é‡è®¾çˆ¶èŠ‚ç‚¹ä¸ºæ–°èŠ‚ç‚¹" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" -msgstr "åˆ›å»ºåœºæ™¯æ ¹èŠ‚ç‚¹" +msgstr "è®¾ä¸ºåœºæ™¯æ ¹èŠ‚ç‚¹" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" @@ -10102,7 +10334,7 @@ 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)" @@ -10136,7 +10368,7 @@ msgstr "本地" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance? (No Undo!)" -msgstr "ç¡®å®šè¦æ¸…除继承å—ï¼Ÿï¼ˆæ— æ³•æ’¤é”€ï¼ï¼‰" +msgstr "æ˜¯å¦æ¸…é™¤ç»§æ‰¿ï¼Ÿï¼ˆæ— æ³•æ’¤é”€ï¼ï¼‰" #: editor/scene_tree_editor.cpp msgid "Toggle Visible" @@ -10152,7 +10384,7 @@ msgstr "按钮组" #: editor/scene_tree_editor.cpp msgid "(Connecting From)" -msgstr "(连接从)" +msgstr "ï¼ˆè¿žæŽ¥æ¥æºï¼‰" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" @@ -10162,13 +10394,17 @@ msgstr "节点é…ç½®è¦å‘Š:" msgid "" "Node has %s connection(s) and %s group(s).\n" "Click to show signals dock." -msgstr "节点具有%s个连接和%s个组。 å•击以显示信å·åº•座。" +msgstr "" +"节点具有%s个连接和%s个组。\n" +"å•击以显示信å·é¢æ¿ã€‚" #: editor/scene_tree_editor.cpp msgid "" "Node has %s connection(s).\n" "Click to show signals dock." -msgstr "节点具有%s个连接。 å•击以显示信å·åº•座。" +msgstr "" +"节点具有%s个连接。\n" +"å•击以显示信å·é¢æ¿ã€‚" #: editor/scene_tree_editor.cpp msgid "" @@ -10210,7 +10446,7 @@ msgstr "" #: editor/scene_tree_editor.cpp msgid "Invalid node name, the following characters are not allowed:" -msgstr "节点åç§°éžæ³•,ä¸å…许包å«ä»¥ä¸‹å—符:" +msgstr "节点åç§°æ— æ•ˆï¼Œä¸å…许包å«ä»¥ä¸‹å—符:" #: editor/scene_tree_editor.cpp msgid "Rename Node" @@ -10246,7 +10482,7 @@ msgstr "æ— æ•ˆçš„åŸºæœ¬è·¯å¾„ã€‚" #: editor/script_create_dialog.cpp msgid "A directory with the same name exists." -msgstr "å˜åœ¨å…·æœ‰ç›¸åŒå称的目录。" +msgstr "å˜åœ¨åŒå目录。" #: editor/script_create_dialog.cpp msgid "Invalid extension." @@ -10294,7 +10530,7 @@ msgstr "æ— æ•ˆçš„ç±»åˆ«å称。" #: editor/script_create_dialog.cpp msgid "Invalid inherited parent name or path." -msgstr "æ— æ•ˆçš„ç»§æ‰¿çˆ¶å称或路径。" +msgstr "所继承父类的åç§°æˆ–è·¯å¾„æ— æ•ˆã€‚" #: editor/script_create_dialog.cpp msgid "Script is valid." @@ -10398,15 +10634,15 @@ msgstr "编辑下一个实例" #: editor/script_editor_debugger.cpp msgid "Stack Frames" -msgstr "å †æ ˆå¸§ï¼ˆStack Frames)" +msgstr "æ ˆå¸§" #: editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "性能分æž" +msgstr "性能分æžå™¨" #: editor/script_editor_debugger.cpp msgid "Network Profiler" -msgstr "网络检视" +msgstr "网络分æžå™¨" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -10418,7 +10654,7 @@ msgstr "值" #: editor/script_editor_debugger.cpp msgid "Monitors" -msgstr "显示" +msgstr "监视" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -10586,7 +10822,7 @@ msgstr "åˆ é™¤å½“å‰é…置项" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "åŒå‡»æ·»åŠ æ–°çš„å¹³å°æž¶æž„é…置项" +msgstr "åŒå‡»åˆ›å»ºæ–°æ¡ç›®" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" @@ -10694,15 +10930,15 @@ msgstr "层:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Delete Selection" -msgstr "åˆ é™¤é€‰æ‹©çš„GridMap" +msgstr "ç½‘æ ¼åœ°å›¾åˆ é™¤æ‰€é€‰é¡¹" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Fill Selection" -msgstr "å¡«å……é€‰æ‹©ç½‘æ ¼åœ°å›¾" +msgstr "ç½‘æ ¼åœ°å›¾å¡«å……æ‰€é€‰é¡¹" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Paste Selection" -msgstr "GridMap粘贴选择" +msgstr "ç½‘æ ¼åœ°å›¾ç²˜è´´æ‰€é€‰é¡¹" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Paint" @@ -10710,7 +10946,7 @@ msgstr "ç»˜åˆ¶æ …æ ¼å›¾" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Grid Map" -msgstr "ç½‘æ ¼æ˜ å°„" +msgstr "ç½‘æ ¼åœ°å›¾" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Snap View" @@ -10786,11 +11022,11 @@ msgstr "拾å–è·ç¦»:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Filter meshes" -msgstr "è¿‡æ»¤ç½‘æ ¼" +msgstr "ç›é€‰ç½‘æ ¼" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." -msgstr "呿¤GridMapæä¾›MeshLibrary资æºä»¥ä½¿ç”¨å…¶ç½‘æ ¼ã€‚" +msgstr "呿¤GridMapæä¾›ç½‘æ ¼åº“èµ„æºä»¥ä½¿ç”¨å…¶ç½‘æ ¼ã€‚" #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" @@ -10912,12 +11148,20 @@ msgid "Set Variable Type" msgstr "设置å˜é‡ç±»åž‹" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "æ·»åŠ è¾“å…¥ç«¯å£" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "å¢žåŠ è¾“å‡ºç«¯å£" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "覆盖现有的内置函数。" #: modules/visual_script/visual_script_editor.cpp msgid "Create a new function." -msgstr "创建一个新函数。" +msgstr "创建新函数。" #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" @@ -10925,15 +11169,15 @@ msgstr "å˜é‡ï¼š" #: modules/visual_script/visual_script_editor.cpp msgid "Create a new variable." -msgstr "创建一个新å˜é‡ã€‚" +msgstr "创建新å˜é‡ã€‚" #: modules/visual_script/visual_script_editor.cpp msgid "Signals:" -msgstr "ä¿¡å·:" +msgstr "ä¿¡å·ï¼š" #: modules/visual_script/visual_script_editor.cpp msgid "Create a new signal." -msgstr "创建一个新信å·ã€‚" +msgstr "创建新信å·ã€‚" #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" @@ -10972,14 +11216,6 @@ msgid "Add Signal" msgstr "æ·»åŠ ä¿¡å·" #: modules/visual_script/visual_script_editor.cpp -msgid "Add Input Port" -msgstr "æ·»åŠ è¾“å…¥ç«¯å£" - -#: modules/visual_script/visual_script_editor.cpp -msgid "Add Output Port" -msgstr "å¢žåŠ è¾“å‡ºç«¯å£" - -#: modules/visual_script/visual_script_editor.cpp msgid "Remove Input Port" msgstr "移除输入端å£" @@ -11053,7 +11289,7 @@ msgstr "æ·»åŠ å±žæ€§Setter" #: modules/visual_script/visual_script_editor.cpp msgid "Change Base Type" -msgstr "更改基本类型" +msgstr "更改基础类型" #: modules/visual_script/visual_script_editor.cpp msgid "Move Node(s)" @@ -11097,7 +11333,7 @@ msgstr "æ— æ³•å¤åˆ¶å‡½æ•°èŠ‚ç‚¹ã€‚" #: modules/visual_script/visual_script_editor.cpp msgid "Clipboard is empty!" -msgstr "å‰ªè´´æ¿æ˜¯ç©ºçš„ ï¼" +msgstr "å‰ªè´´æ¿æ˜¯ç©ºçš„ï¼" #: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" @@ -11109,7 +11345,7 @@ msgstr "æ— æ³•é€šè¿‡å‡½æ•°èŠ‚ç‚¹åˆ›å»ºå‡½æ•°ã€‚" #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." -msgstr "" +msgstr "æ— æ³•ä»Žå¤šä¸ªå‡½æ•°èŠ‚ç‚¹åˆ›å»ºå‡½æ•°ã€‚" #: modules/visual_script/visual_script_editor.cpp msgid "Select at least one node with sequence port." @@ -11141,17 +11377,29 @@ msgstr "åˆ é™¤ä¿¡å·" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" -msgstr "编辑信å·:" +msgstr "编辑信å·ï¼š" #: modules/visual_script/visual_script_editor.cpp msgid "Make Tool:" -msgstr "制作工具:" +msgstr "æˆä¸ºå·¥å…·è„šæœ¬ï¼š" #: modules/visual_script/visual_script_editor.cpp msgid "Members:" msgstr "æˆå‘˜ï¼š" #: modules/visual_script/visual_script_editor.cpp +msgid "Change Base Type:" +msgstr "更改基础类型:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "æ·»åŠ èŠ‚ç‚¹..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "æ·»åŠ å‡½æ•°..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" msgstr "函数å" @@ -11161,7 +11409,7 @@ msgstr "选择或创建一个函数æ¥ç¼–辑其图形。" #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" -msgstr "åˆ é™¤å·²é€‰ä¸" +msgstr "åˆ é™¤é€‰ä¸é¡¹" #: modules/visual_script/visual_script_editor.cpp msgid "Find Node Type" @@ -11201,7 +11449,7 @@ msgstr "è¿ä»£å™¨å¤±æ•ˆï¼š " #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name." -msgstr "属性åç§°éžæ³•。" +msgstr "属性åç§°ç´¢å¼•æ— æ•ˆã€‚" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" @@ -11251,7 +11499,7 @@ msgstr "得到 %s" #: modules/visual_script/visual_script_property_selector.cpp msgid "Set %s" -msgstr "设值 %s" +msgstr "设置 %s" #: platform/android/export/export.cpp msgid "Package name is missing." @@ -11329,10 +11577,10 @@ msgid "" " Godot Version: %s\n" "Please reinstall Android build template from 'Project' menu." msgstr "" -"Android构建版本ä¸åŒ¹é…:\n" -" 安装的模æ¿ï¼š\n" -" Godot版本:%s\n" -"请从“项目â€èœå•ä¸é‡æ–°å®‰è£…Android构建模æ¿ã€‚" +"Android 构建版本ä¸åŒ¹é…:\n" +" 安装的模æ¿ï¼š%s\n" +" Godot 版本:%s\n" +"请从“项目â€èœå•ä¸é‡æ–°å®‰è£… Android 构建模æ¿ã€‚" #: platform/android/export/export.cpp msgid "Building Android Project (gradle)" @@ -11355,27 +11603,10 @@ msgid "Identifier is missing." msgstr "ç¼ºå°‘æ ‡è¯†ç¬¦ã€‚" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "æ ‡è¯†ç¬¦å—æ®µä¸èƒ½ä¸ºç©º." - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "æ ‡è¯†ç¬¦ä¸ä¸å…许使用å—符 '%s' 。" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "æ ‡è¯†ç¬¦æ®µä¸çš„第一个å—符ä¸èƒ½æ˜¯æ•°å—。" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "æ ‡è¯†ç¬¦æ®µä¸çš„第一个å—符ä¸èƒ½æ˜¯\"%s\"。" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "æ ‡è¯†ç¬¦å¿…é¡»è‡³å°‘æœ‰ä¸€ä¸ªâ€œ.â€åˆ†éš”符。" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "未指定应用商店团队ID-æ— æ³•é…置项目。" @@ -11608,7 +11839,7 @@ msgstr "" #: 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." @@ -11622,7 +11853,7 @@ msgstr "" #: scene/2d/skeleton_2d.cpp msgid "" "This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." -msgstr "该骨骼没有一个åˆé€‚çš„ REST 姿势。请到 Skeleton2D 节点ä¸è®¾ç½®ä¸€ä¸ªã€‚" +msgstr "该骨骼没有åˆé€‚的放æ¾å§¿åŠ¿ã€‚è¯·åˆ° Skeleton2D 节点ä¸è®¾ç½®ä¸€ä¸ªã€‚" #: scene/2d/tile_map.cpp msgid "" @@ -11630,8 +11861,9 @@ msgid "" "to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " "KinematicBody2D, etc. to give them a shape." msgstr "" -"å¯ç”¨äº†â€œä½¿ç”¨çˆ¶çº§â€çš„TileMap需è¦çˆ¶çº§CollisionObject2Dæ‰èƒ½æä¾›å½¢çŠ¶ã€‚è¯·ä½¿ç”¨å®ƒä½œä¸º" -"Area2D,StaticBody2D,RigidBody2D,KinematicBody2Dç‰çš„å项æ¥èµ‹äºˆå®ƒä»¬å½¢çŠ¶ã€‚" +"å¯ç”¨äº†â€œä½¿ç”¨çˆ¶çº§â€çš„图å—地图需è¦çˆ¶çº§ CollisionObject2D æ‰èƒ½æä¾›å½¢çŠ¶ã€‚è¯·ä½¿ç”¨å®ƒä½œ" +"为 Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D ç‰çš„å项æ¥èµ‹äºˆå®ƒä»¬å½¢" +"状。" #: scene/2d/visibility_notifier_2d.cpp msgid "" @@ -11755,8 +11987,8 @@ msgid "" "GIProbes are not supported by the GLES2 video driver.\n" "Use a BakedLightmap instead." msgstr "" -"GLES2视频驱动程åºä¸æ”¯æŒå…¨å±€å…‰ç…§æŽ¢æµ‹å™¨ã€‚\n" -"请改用已烘焙ç¯å…‰è´´å›¾ã€‚" +"GLES2视频驱动程åºä¸æ”¯æŒGIProbe。\n" +"请改用BakedLightmap。" #: scene/3d/light.cpp msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." @@ -11839,7 +12071,8 @@ 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 msgid "" @@ -11993,9 +12226,9 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" -"这个Viewportæœªè®¾ç½®ä¸ºæ¸²æŸ“ç›®æ ‡(render target)ã€‚å¦‚æžœä½ åˆ»æ„æ‰“算让其直接在å±å¹•上显" -"示其内容,使其æˆä¸ºå控件的所以它å¯ä»¥æœ‰ä¸€ä¸ªå°ºå¯¸å¤§å°å€¼ã€‚å¦åˆ™è¯·è®¾ç½®ä¸ºRender " -"target,并将其内部纹ç†åˆ†é…给一些节点以显示。" +"这个 Viewport æœªè¢«è®¾ç½®ä¸ºæ¸²æŸ“ç›®æ ‡ï¼ˆrender targetï¼‰ã€‚å¦‚æžœä½ åˆ»æ„æ‰“算让其直接在å±" +"幕上显示其内容,使其æˆä¸ºå控件的所以它å¯ä»¥æœ‰ä¸€ä¸ªå°ºå¯¸å¤§å°å€¼ã€‚å¦åˆ™è¯·å°†å…¶è®¾ç½®ä¸º " +"RenderTarget,并将其内部纹ç†åˆ†é…给其它节点显示。" #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." @@ -12025,6 +12258,19 @@ msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸æŒ‡å®šã€‚" msgid "Constants cannot be modified." msgstr "ä¸å…许修改常é‡ã€‚" +#~ msgid "Identifier segments must be of non-zero length." +#~ msgstr "æ ‡è¯†ç¬¦å—æ®µä¸èƒ½ä¸ºç©º." + +#~ msgid "A digit cannot be the first character in a Identifier segment." +#~ msgstr "æ ‡è¯†ç¬¦æ®µä¸çš„第一个å—符ä¸èƒ½æ˜¯æ•°å—。" + +#~ msgid "" +#~ "The character '%s' cannot be the first character in a Identifier segment." +#~ msgstr "æ ‡è¯†ç¬¦æ®µä¸çš„第一个å—符ä¸èƒ½æ˜¯\"%s\"。" + +#~ msgid "The Identifier must have at least one '.' separator." +#~ msgstr "æ ‡è¯†ç¬¦å¿…é¡»è‡³å°‘æœ‰ä¸€ä¸ªâ€œ.â€åˆ†éš”符。" + #~ msgid "Pause the scene" #~ msgstr "æš‚åœè¿è¡Œåœºæ™¯" @@ -12506,9 +12752,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Rotate 270 degrees" #~ msgstr "旋转270度" -#~ msgid "Warning" -#~ msgstr "è¦å‘Š" - #~ msgid "Variable" #~ msgstr "å˜é‡" @@ -12999,9 +13242,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Re-Import Changed Resources" #~ msgstr "釿–°å¯¼å…¥æ”¹å˜çš„资æº" -#~ msgid "Loading Export Templates" -#~ msgstr "æ£åœ¨åŠ è½½å¯¼å‡ºæ¨¡æ¿" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13592,9 +13832,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Create Android keystore" #~ msgstr "创建 Android 的密钥库" -#~ msgid "Full name" -#~ msgstr "å…¨å" - #~ msgid "Organizational unit" #~ msgstr "组织å•å…ƒ" @@ -13698,9 +13935,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Lossy Quality:" #~ msgstr "图片质é‡:" -#~ msgid "Atlas:" -#~ msgstr "ç²¾çµé›†:" - #~ msgid "Shrink By:" #~ msgstr "收缩方å¼:" diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index c05494212b..acb42d719d 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -556,8 +556,9 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "編輯" @@ -764,6 +765,10 @@ msgstr "åªé™é¸ä¸" msgid "Standard" msgstr "" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -843,6 +848,11 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "鏿“‡æ¨¡å¼" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -1026,7 +1036,7 @@ msgid "Resource" msgstr "資æº" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "路徑" @@ -1532,7 +1542,8 @@ msgid "Node Name:" msgstr "" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "å稱" @@ -1796,6 +1807,11 @@ msgstr "縮放selection" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "管ç†è¼¸å‡ºç¯„本" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "多 %d 檔案" @@ -2784,7 +2800,8 @@ msgstr "" msgid "Miscellaneous project or scene-wide tools." msgstr "" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "專案" @@ -3117,6 +3134,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "從ZIP檔" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "移除é¸é …" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "" @@ -3177,6 +3199,10 @@ msgstr "è¦é›¢é–‹ç·¨è¼¯å™¨å—Ž?" msgid "Open the previous Editor" msgstr "" +#: editor/editor_node.h +msgid "Warning!" +msgstr "" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3641,6 +3667,11 @@ msgid "Select Template File" msgstr "è¦åˆªé™¤é¸ä¸æª”案?" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "管ç†è¼¸å‡ºç¯„本" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "" @@ -4864,6 +4895,11 @@ msgstr "" msgid "Transition: " msgstr "éŽæ¸¡" +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "匯出" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp #, fuzzy @@ -5129,6 +5165,32 @@ msgid "Download for this asset is already in progress!" msgstr "Asset已在下載ä¸" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "æŽˆæ¬Šæ¢æ¬¾" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "æŽˆæ¬Šæ¢æ¬¾" + +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "First" msgstr "首é " @@ -5336,6 +5398,78 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "線性" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "線性" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Full Rect" +msgstr "有效å稱" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "縮放比例:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6016,6 +6150,11 @@ msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6669,6 +6808,23 @@ msgid "Save File As..." msgstr "å¦å˜ç‚º..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "" @@ -6805,10 +6961,6 @@ msgstr "é—œé–‰å ´æ™¯" msgid "Run" msgstr "é‹è¡Œ" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "" @@ -7995,6 +8147,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -8014,6 +8167,11 @@ msgstr "" msgid "Constant" msgstr "常數" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "開啟檔案" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -8131,6 +8289,19 @@ msgid "Merge from Scene" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "檔案" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Next Coordinate" msgstr "下一個腳本" @@ -8150,6 +8321,39 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "無干擾模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "無干擾模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "æ’ä»¶" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "æ’ä»¶" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "匯出" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "無干擾模å¼" @@ -9342,6 +9546,15 @@ msgstr "啟用" #: editor/project_export.cpp #, fuzzy +msgid "Add initial export..." +msgstr "新增訊號" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp +#, fuzzy msgid "Delete patch '%s' from list?" msgstr "刪除" @@ -9447,6 +9660,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "檔案" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9503,6 +9721,15 @@ msgstr "匯出" msgid "Export All" msgstr "匯出" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr "檔案" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "" @@ -9773,6 +10000,10 @@ msgid "Projects" msgstr "專案" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11442,6 +11673,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "新增訊號" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "新增訊號" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "有效å稱。" @@ -11509,16 +11750,6 @@ msgstr "新增訊號" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "新增訊號" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "新增訊號" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "åªé™é¸ä¸" @@ -11704,6 +11935,21 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "更改動畫循環" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "新增節點" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "行為" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "行為" @@ -11905,27 +12151,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12713,10 +12942,6 @@ msgstr "" #~ msgstr "放大" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "檔案" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "放大" @@ -12936,10 +13161,6 @@ msgstr "" #~ msgstr "新增資料夾" #, fuzzy -#~ msgid "Full name" -#~ msgstr "有效å稱" - -#, fuzzy #~ msgid "Organization" #~ msgstr "本地化" diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index 622e04b34f..bce8b038e4 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -564,8 +564,9 @@ msgstr "æ¯ç§’張數" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp -#: editor/project_manager.cpp editor/project_settings_editor.cpp -#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp +#: editor/project_settings_editor.cpp editor/property_editor.cpp +#: modules/visual_script/visual_script_editor.cpp msgid "Edit" msgstr "編輯" @@ -762,6 +763,10 @@ msgstr "åƒ…é¸æ“‡å€åŸŸ" msgid "Standard" msgstr "標準" +#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "\"切æ›è…³æœ¬\" 颿¿" + #: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp @@ -844,6 +849,11 @@ msgstr "é¡å¤–呼å«åƒæ•¸:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "éŽæ¿¾æª”案..." + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "進階è¨å®š" @@ -1022,7 +1032,7 @@ msgid "Resource" msgstr "資æº" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp -#: editor/project_settings_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp msgid "Path" msgstr "路徑" @@ -1523,7 +1533,8 @@ msgid "Node Name:" msgstr "節點å稱:" #: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp -#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +#: editor/editor_profiler.cpp editor/project_manager.cpp +#: editor/settings_config_dialog.cpp msgid "Name" msgstr "å稱" @@ -1798,6 +1809,11 @@ msgstr "擦除磚塊地圖" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "管ç†è¼¸å‡ºæ¨¡æ¿" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "å·²å°Žå…¥çš„é …ç›®" @@ -2776,7 +2792,8 @@ msgstr "æ¢å¾©å ´æ™¯" msgid "Miscellaneous project or scene-wide tools." msgstr "其他專案或全螢幕工具。" -#: editor/editor_node.cpp editor/script_create_dialog.cpp +#: editor/editor_node.cpp editor/project_manager.cpp +#: editor/script_create_dialog.cpp msgid "Project" msgstr "專案" @@ -3111,6 +3128,11 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "導入模æ¿ï¼ˆé€éŽZIP檔案)" +#: editor/editor_node.cpp +#, fuzzy +msgid "Template Package" +msgstr "導出範本管ç†å™¨" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "輸出專案" @@ -3167,6 +3189,11 @@ msgstr "開啟下一個編輯器" msgid "Open the previous Editor" msgstr "開啟上一個編輯器" +#: editor/editor_node.h +#, fuzzy +msgid "Warning!" +msgstr "è¦å‘Š" + #: editor/editor_path.cpp #, fuzzy msgid "No sub-resources found." @@ -3619,6 +3646,11 @@ msgid "Select Template File" msgstr "鏿“‡ç¯„本檔案" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Godot Export Templates" +msgstr "管ç†è¼¸å‡ºæ¨¡æ¿" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "導出範本管ç†å™¨" @@ -4825,6 +4857,11 @@ msgstr "" msgid "Transition: " msgstr "è½‰å ´: " +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Play Mode:" +msgstr "平移模å¼" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -5087,6 +5124,32 @@ msgid "Download for this asset is already in progress!" msgstr "æ¤è³‡æºæ–‡æª”æ£åœ¨ä¸‹è¼‰ä¸!" #: editor/plugins/asset_library_editor_plugin.cpp +msgid "Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (A-Z)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Name (Z-A)" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (A-Z)" +msgstr "授權" + +#: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy +msgid "License (Z-A)" +msgstr "授權" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "ç¬¬ä¸€é …" @@ -5294,6 +5357,87 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Left" +msgstr "å·¦" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Right" +msgstr "å³" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Right" +msgstr "å‘峿—‹è½‰" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Left" +msgstr "底部視圖" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "å‘左縮進" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Top" +msgstr "å±…ä¸é¸æ“‡" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Right" +msgstr "å‘å³ç¸®é€²" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Bottom" +msgstr "底部" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Left Wide" +msgstr "左視圖" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Top Wide" +msgstr "俯視圖" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Right Wide" +msgstr "å³è¦–圖" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Bottom Wide" +msgstr "底部視圖" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Keep Ratio" +msgstr "縮放比例:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "僅é™éŒ¨é»ž" @@ -5989,6 +6133,11 @@ msgid "Remove item %d?" msgstr "åˆ é™¤é …ç›®%d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "網狀資料庫(MeshLibrary)…" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "æ·»åŠ é …ç›®" @@ -6641,6 +6790,23 @@ msgid "Save File As..." msgstr "å¦å˜å ´æ™¯ç‚º..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "導入主題" @@ -6775,10 +6941,6 @@ msgstr "關閉檔案" msgid "Run" msgstr "é‹è¡Œ" -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "\"切æ›è…³æœ¬\" 颿¿" - #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" msgstr "æ¥å…¥" @@ -7965,6 +8127,7 @@ msgid "Data Type:" msgstr "數據類型:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "圖標" @@ -7984,6 +8147,11 @@ msgstr "é¡è‰²" msgid "Constant" msgstr "固定" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme File" +msgstr "主題" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "擦除é¸ä¸" @@ -8101,6 +8269,20 @@ msgid "Merge from Scene" msgstr "å¾žå ´æ™¯åˆä½µ" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Autotile" +msgstr "éŽæ¿¾æª”案..." + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "New Atlas" +msgstr "新建 %s" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "下一個座標" @@ -8119,6 +8301,41 @@ msgstr "鏿“‡ä¸Šä¸€å€‹å½¢ç‹€ã€åç£è²¼æˆ–ç£è²¼ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Region" +msgstr "旋轉模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Collision" +msgstr "æ’值模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Occlusion" +msgstr "ç·¨è¼¯é®æ“‹å¤šé‚Šå½¢" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Navigation" +msgstr "å‰µå»ºå°Žèˆªç¶²æ ¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Bitmask" +msgstr "旋轉模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Priority" +msgstr "導出模å¼:" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Z Index" +msgstr "平移模å¼" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Region Mode" msgstr "旋轉模å¼" @@ -9308,6 +9525,15 @@ msgid "Runnable" msgstr "å¯é‹è¡Œçš„" #: editor/project_export.cpp +#, fuzzy +msgid "Add initial export..." +msgstr "æ·»åŠ è¼¸å…¥" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "" @@ -9407,6 +9633,11 @@ msgid "Make Patch" msgstr "製作補ä¸" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " 資料夾" + +#: editor/project_export.cpp msgid "Features" msgstr "功能" @@ -9462,6 +9693,15 @@ msgstr "導出模å¼:" msgid "Export All" msgstr "全部導出" +#: editor/project_export.cpp editor/project_manager.cpp +#, fuzzy +msgid "ZIP File" +msgstr " 資料夾" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "缺少æ¤å¹³è‡ºçš„導出範本:" @@ -9742,6 +9982,10 @@ msgid "Projects" msgstr "專案" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -11422,6 +11666,16 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Add Input Port" +msgstr "æ·»åŠ è¼¸å…¥" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Output Port" +msgstr "æ·»åŠ è¼¸å…¥" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Override an existing built-in function." msgstr "無效å稱.ä¸èƒ½èˆ‡ç¾æœ‰çš„內置類型å稱沖çª." @@ -11487,16 +11741,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Add Input Port" -msgstr "æ·»åŠ è¼¸å…¥" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "æ·»åŠ è¼¸å…¥" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "刪除點" @@ -11675,6 +11919,21 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy +msgid "Change Base Type:" +msgstr "變更é¡é 尺寸" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Nodes..." +msgstr "æ·»åŠ ç¯€é»ž..。" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Add Function..." +msgstr "轉到函數…" + +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "function_name" msgstr "函數:" @@ -11876,27 +12135,10 @@ msgid "Identifier is missing." msgstr "" #: platform/iphone/export/export.cpp -msgid "Identifier segments must be of non-zero length." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "The character '%s' is not allowed in Identifier." msgstr "" #: platform/iphone/export/export.cpp -msgid "A digit cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "" -"The character '%s' cannot be the first character in a Identifier segment." -msgstr "" - -#: platform/iphone/export/export.cpp -msgid "The Identifier must have at least one '.' separator." -msgstr "" - -#: platform/iphone/export/export.cpp msgid "App Store Team ID not specified - cannot configure the project." msgstr "" @@ -12749,10 +12991,6 @@ msgstr "" #~ msgstr "放大" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "éŽæ¿¾æª”案..." - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "放大" diff --git a/main/main.cpp b/main/main.cpp index 22a31d597e..c1dc4e37ca 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -65,6 +65,7 @@ #include "scene/resources/packed_scene.h" #include "servers/arvr_server.h" #include "servers/audio_server.h" +#include "servers/camera_server.h" #include "servers/physics_2d_server.h" #include "servers/physics_server.h" #include "servers/register_server_types.h" @@ -74,6 +75,7 @@ #include "editor/doc/doc_data_class_path.gen.h" #include "editor/editor_node.h" #include "editor/editor_settings.h" +#include "editor/progress_dialog.h" #include "editor/project_manager.h" #endif @@ -97,6 +99,7 @@ static MessageQueue *message_queue = NULL; // Initialized in setup2() static AudioServer *audio_server = NULL; +static CameraServer *camera_server = NULL; static ARVRServer *arvr_server = NULL; static PhysicsServer *physics_server = NULL; static Physics2DServer *physics_2d_server = NULL; @@ -257,6 +260,8 @@ void Main::print_help(const char *p_binary) { OS::get_singleton()->print(" --position <X>,<Y> Request window position.\n"); OS::get_singleton()->print(" --low-dpi Force low-DPI mode (macOS and Windows only).\n"); OS::get_singleton()->print(" --no-window Disable window creation (Windows only). Useful together with --script.\n"); + OS::get_singleton()->print(" --enable-vsync-via-compositor When vsync is enabled, vsync via the OS' window compositor (Windows only).\n"); + OS::get_singleton()->print(" --disable-vsync-via-compositor Disable vsync via the OS' window compositor (Windows only).\n"); OS::get_singleton()->print("\n"); #endif @@ -281,8 +286,8 @@ void Main::print_help(const char *p_binary) { OS::get_singleton()->print(" -s, --script <script> Run a script.\n"); OS::get_singleton()->print(" --check-only Only parse for errors and quit (use with --script).\n"); #ifdef TOOLS_ENABLED - OS::get_singleton()->print(" --export <target> Export the project using the given export target. Export only main pack if path ends with .pck or .zip.\n"); - OS::get_singleton()->print(" --export-debug <target> Like --export, but use debug template.\n"); + OS::get_singleton()->print(" --export <target> <path> Export the project using the given export target. Export only main pack if path ends with .pck or .zip. <path> is relative to the project directory.\n"); + OS::get_singleton()->print(" --export-debug <target> <path> Like --export, but use debug template.\n"); OS::get_singleton()->print(" --doctool <path> Dump the engine API reference to the given <path> in XML format, merging if existing files are found.\n"); OS::get_singleton()->print(" --no-docbase Disallow dumping the base types (used with --doctool).\n"); OS::get_singleton()->print(" --build-solutions Build the scripting solutions (e.g. for C# projects).\n"); @@ -397,6 +402,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph Vector<String> breakpoints; bool use_custom_res = true; bool force_res = false; + bool saw_vsync_via_compositor_override = false; #ifdef TOOLS_ENABLED bool found_project = false; #endif @@ -588,6 +594,14 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph } else if (I->get() == "--no-window") { // disable window creation (Windows only) OS::get_singleton()->set_no_window_mode(true); + } else if (I->get() == "--enable-vsync-via-compositor") { + + video_mode.vsync_via_compositor = true; + saw_vsync_via_compositor_override = true; + } else if (I->get() == "--disable-vsync-via-compositor") { + + video_mode.vsync_via_compositor = false; + saw_vsync_via_compositor_override = true; #endif } else if (I->get() == "--profiling") { // enable profiling @@ -1007,6 +1021,16 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph video_mode.use_vsync = GLOBAL_DEF_RST("display/window/vsync/use_vsync", true); OS::get_singleton()->_use_vsync = video_mode.use_vsync; + if (!saw_vsync_via_compositor_override) { + // If one of the command line options to enable/disable vsync via the + // window compositor ("--enable-vsync-via-compositor" or + // "--disable-vsync-via-compositor") was present then it overrides the + // project setting. + video_mode.vsync_via_compositor = GLOBAL_DEF("display/window/vsync/vsync_via_compositor", false); + } + + OS::get_singleton()->_vsync_via_compositor = video_mode.vsync_via_compositor; + OS::get_singleton()->_allow_layered = GLOBAL_DEF("display/window/per_pixel_transparency/allowed", false); video_mode.layered = GLOBAL_DEF("display/window/per_pixel_transparency/enabled", false); @@ -1103,6 +1127,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(GLOBAL_DEF("application/run/low_processor_mode_sleep_usec", 6900)); // Roughly 144 FPS ProjectSettings::get_singleton()->set_custom_property_info("application/run/low_processor_mode_sleep_usec", PropertyInfo(Variant::INT, "application/run/low_processor_mode_sleep_usec", PROPERTY_HINT_RANGE, "0,33200,1,or_greater")); // No negative numbers + GLOBAL_DEF("display/window/ios/hide_home_indicator", true); + Engine::get_singleton()->set_frame_delay(frame_delay); message_queue = memnew(MessageQueue); @@ -1318,6 +1344,8 @@ Error Main::setup2(Thread::ID p_main_tid_override) { register_platform_apis(); register_module_types(); + camera_server = CameraServer::create(); + initialize_physics(); register_server_singletons(); @@ -2090,6 +2118,11 @@ void Main::cleanup() { ERR_FAIL_COND(!_start_success); + if (script_debugger) { + // Flush any remaining messages + script_debugger->idle_poll(); + } + ResourceLoader::remove_custom_loaders(); ResourceSaver::remove_custom_savers(); @@ -2137,6 +2170,10 @@ void Main::cleanup() { memdelete(audio_server); } + if (camera_server) { + memdelete(camera_server); + } + OS::get_singleton()->finalize(); finalize_physics(); diff --git a/main/splash_editor.png b/main/splash_editor.png Binary files differindex 8c605f0eed..29931a71db 100644 --- a/main/splash_editor.png +++ b/main/splash_editor.png diff --git a/methods.py b/methods.py index 86ab7cd9af..84074db0eb 100644 --- a/methods.py +++ b/methods.py @@ -307,7 +307,7 @@ def split_lib(self, libname, src_list = None, env_lib = None): else: fname = env.File(f)[0].path fname = fname.replace("\\", "/") - base = string.join(fname.split("/")[:2], "/") + base = "/".join(fname.split("/")[:2]) if base != cur_base and len(list) > max_src: if num > 0: lib = env_lib.add_library(libname + str(num), list) @@ -320,12 +320,6 @@ def split_lib(self, libname, src_list = None, env_lib = None): lib = env_lib.add_library(libname + str(num), list) lib_list.append(lib) - if len(lib_list) > 0: - if os.name == 'posix' and sys.platform == 'msys': - env.Replace(ARFLAGS=['rcsT']) - lib = env_lib.add_library(libname + "_collated", lib_list) - lib_list = [lib] - lib_base = [] env_lib.add_source_files(lib_base, "*.cpp") lib = env_lib.add_library(libname, lib_base) @@ -333,6 +327,24 @@ def split_lib(self, libname, src_list = None, env_lib = None): env.Prepend(LIBS=lib_list) + # When we split modules into arbitrary chunks, we end up with linking issues + # due to symbol dependencies split over several libs, which may not be linked + # in the required order. We use --start-group and --end-group to tell the + # linker that those archives should be searched repeatedly to resolve all + # undefined references. + # As SCons doesn't give us much control over how inserting libs in LIBS + # impacts the linker call, we need to hack our way into the linking commands + # LINKCOM and SHLINKCOM to set those flags. + + if '-Wl,--start-group' in env['LINKCOM'] and '-Wl,--start-group' in env['SHLINKCOM']: + # Already added by a previous call, skip. + return + + env['LINKCOM'] = str(env['LINKCOM']).replace('$_LIBFLAGS', + '-Wl,--start-group $_LIBFLAGS -Wl,--end-group') + env['SHLINKCOM'] = str(env['LINKCOM']).replace('$_LIBFLAGS', + '-Wl,--start-group $_LIBFLAGS -Wl,--end-group') + def save_active_platforms(apnames, ap): diff --git a/misc/dist/ios_xcode/godot_ios.xcodeproj/project.pbxproj b/misc/dist/ios_xcode/godot_ios.xcodeproj/project.pbxproj index b375293ca6..0b8a508d2f 100644 --- a/misc/dist/ios_xcode/godot_ios.xcodeproj/project.pbxproj +++ b/misc/dist/ios_xcode/godot_ios.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ 1FE926A11FBBF86D00F53A6F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE9268F1FBBF77F00F53A6F /* CoreAudio.framework */; }; E360193721F32F38009258C1 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E360193621F32F37009258C1 /* CoreVideo.framework */; }; DEADBEEF2F582BE20003B888 /* $binary.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DEADBEEF1F582BE20003B888 /* $binary.a */; }; + $modules_buildfile 1FF8DBB11FBA9DE1009DE660 /* dummy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1FF8DBB01FBA9DE1009DE660 /* dummy.cpp */; }; 1FF4C1851F584E3F00A41E41 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FF4C1841F584E3F00A41E41 /* GameKit.framework */; }; 1FF4C1871F584E5600A41E41 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FF4C1861F584E5600A41E41 /* StoreKit.framework */; }; @@ -45,6 +46,7 @@ 1FE926951FBBF7C400F53A6F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 1FE926961FBBF7D400F53A6F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; DEADBEEF1F582BE20003B888 /* $binary.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = godot; path = "$binary.a"; sourceTree = "<group>"; }; + $modules_fileref 1FF4C1841F584E3F00A41E41 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; }; 1FF4C1861F584E5600A41E41 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; 1FF4C1881F584E7600A41E41 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; @@ -89,6 +91,7 @@ D0BCFE3E18AEBDA2004A7AAE /* GLKit.framework in Frameworks */, D0BCFE3818AEBDA2004A7AAE /* Foundation.framework in Frameworks */, DEADBEEF2F582BE20003B888 /* $binary.a */, + $modules_buildphase $additional_pbx_frameworks_build ); runOnlyForDeploymentPostprocessing = 0; @@ -138,6 +141,7 @@ D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */, D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */, DEADBEEF1F582BE20003B888 /* $binary.a */, + $modules_buildgrp $additional_pbx_frameworks_refs ); name = Frameworks; @@ -427,6 +431,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", + "$(PROJECT_DIR)", ); PRODUCT_BUNDLE_IDENTIFIER = $identifier; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -452,6 +457,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", + "$(PROJECT_DIR)", ); PRODUCT_BUNDLE_IDENTIFIER = $identifier; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/misc/dist/ios_xcode/godot_ios/godot_ios-Info.plist b/misc/dist/ios_xcode/godot_ios/godot_ios-Info.plist index e7c4f8f340..add2f6c084 100644 --- a/misc/dist/ios_xcode/godot_ios/godot_ios-Info.plist +++ b/misc/dist/ios_xcode/godot_ios/godot_ios-Info.plist @@ -28,6 +28,10 @@ <string>$version</string> <key>LSRequiresIPhoneOS</key> <true/> + <key>LSSupportsOpeningDocumentsInPlace</key> + $docs_in_place + <key>UIFileSharingEnabled</key> + $docs_sharing <key>UIRequiredDeviceCapabilities</key> <array> $required_device_capabilities diff --git a/misc/dist/osx_template.app/Contents/Info.plist b/misc/dist/osx_template.app/Contents/Info.plist index eee787bdaf..696c825594 100755 --- a/misc/dist/osx_template.app/Contents/Info.plist +++ b/misc/dist/osx_template.app/Contents/Info.plist @@ -24,6 +24,10 @@ <string>$signature</string> <key>CFBundleVersion</key> <string>$version</string> + <key>NSMicrophoneUsageDescription</key> + <string>$microphone_usage_description</string> + <key>NSCameraUsageDescription</key> + <string>$camera_usage_description</string> <key>NSHumanReadableCopyright</key> <string>$copyright</string> <key>LSMinimumSystemVersion</key> diff --git a/misc/dist/osx_tools.app/Contents/Info.plist b/misc/dist/osx_tools.app/Contents/Info.plist index bb22f1807c..4b1e8ebbf3 100755 --- a/misc/dist/osx_tools.app/Contents/Info.plist +++ b/misc/dist/osx_tools.app/Contents/Info.plist @@ -24,6 +24,10 @@ <string>godot</string> <key>CFBundleVersion</key> <string>3.2</string> + <key>NSMicrophoneUsageDescription</key> + <string>Microphone access is required to capture audio.</string> + <key>NSCameraUsageDescription</key> + <string>Camera access is required to capture video.</string> <key>NSRequiresAquaSystemAppearance</key> <false /> <key>NSHumanReadableCopyright</key> diff --git a/misc/hooks/README.md b/misc/hooks/README.md index 6ec90fcc54..b18ba7df38 100644 --- a/misc/hooks/README.md +++ b/misc/hooks/README.md @@ -1,6 +1,6 @@ # Git hooks for Godot Engine -This folder contains git hooks meant to be installed locally by Godot Engine +This folder contains Git hooks meant to be installed locally by Godot Engine contributors to make sure they comply with our requirements. ## List of hooks @@ -9,10 +9,12 @@ contributors to make sure they comply with our requirements. before accepting a commit; blocks the commit and generates a patch if the style is not respected. Should work on Linux and macOS. You may need to edit the file if your - clang-format binary is not in the $PATH, or if you want to enable colored + clang-format binary is not in the `$PATH`, or if you want to enable colored output with pygmentize. +- Pre-commit hook for makerst: Checks the class reference syntax using `makerst.py`. + Should work on Linux and macOS. ## Installation -Copy all the files from this folder into your .git/hooks folder, and make sure +Copy all the files from this folder into your `.git/hooks` folder, and make sure the hooks and helper scripts are executable. diff --git a/misc/hooks/pre-commit b/misc/hooks/pre-commit index fc50ed70e7..36e9935785 100755 --- a/misc/hooks/pre-commit +++ b/misc/hooks/pre-commit @@ -14,7 +14,7 @@ # as this script. Hooks should return 0 if successful and nonzero to cancel the # commit. They are executed in the order in which they are listed. #HOOKS="pre-commit-compile pre-commit-uncrustify" -HOOKS="pre-commit-clang-format" +HOOKS="pre-commit-clang-format pre-commit-makerst" ########################################################### # There should be no need to change anything below this line. diff --git a/misc/hooks/pre-commit-makerst b/misc/hooks/pre-commit-makerst new file mode 100755 index 0000000000..d9b684e73b --- /dev/null +++ b/misc/hooks/pre-commit-makerst @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +# Git pre-commit hook that checks the class reference syntax using makerst.py. + +doc/tools/makerst.py doc/classes modules --dry-run diff --git a/misc/scripts/file-hex-array.py b/misc/scripts/file-hex-array.py deleted file mode 100755 index a6cdfe541f..0000000000 --- a/misc/scripts/file-hex-array.py +++ /dev/null @@ -1,56 +0,0 @@ -import binascii -import os.path -import sys - - -def tof(filepath): - with open(filepath, 'r') as f: - content = f.read() - content = content.replace("0x", "") - content = content.split(',') - for i in range(len(content)): - if len(content[i]) == 1: - content[i] = "0" + content[i] - content = "".join(content) - with open(filepath + ".file", 'wb') as f: - content = f.write(content.decode("hex")) - print(os.path.basename(filepath) + ".file created.") - exit(0) - - -def toa(filepath): - with open(filepath, 'rb') as f: - content = f.read() - content = binascii.hexlify(content) - content = [content[i:i + 2] for i in range(0, len(content), 2)] - content = ",0x".join(content) - content = "0x" + content - content = content.replace("0x00", "0x0") - with open(filepath + ".array", 'w') as f: - content = f.write(content) - print(os.path.basename(filepath) + ".array created.") - exit(0) - - -def usage(): - print("========================================================\n\ -#\n\ -# Usage: python file-hex-array.py [action] [option]\n\ -#\n\ -# Arguments:\n\ -# action ==> toa # convert file to array [option is file path]\n\ -# tof # convert array to file [option is array file path]\n\ -#\n\ -# Example : python file-hex-array.py toa 1.png\n\ -#\n\ -========================================================") - exit(1) - -if len(sys.argv) != 3: - usage() -if sys.argv[1] == "toa" and os.path.isfile(sys.argv[2]): - toa(sys.argv[2]) -elif sys.argv[1] == "tof" and os.path.isfile(sys.argv[2]): - tof(sys.argv[2]) -else: - usage() diff --git a/misc/scripts/fix_style.sh b/misc/scripts/fix_style.sh index 19ca781535..b33cb0a7b4 100755 --- a/misc/scripts/fix_style.sh +++ b/misc/scripts/fix_style.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Command line arguments run_clang_format=false diff --git a/misc/scripts/make_bmfhdr.py b/misc/scripts/make_bmfhdr.py deleted file mode 100644 index 1d3c40f9c6..0000000000 --- a/misc/scripts/make_bmfhdr.py +++ /dev/null @@ -1,67 +0,0 @@ - - -import sys - -if (len(sys.argv) != 2): - print("Pass me a .fnt argument!") - -f = open(sys.argv[1], "rb") - -name = sys.argv[1].lower().replace(".fnt", "") - -l = f.readline() - -font_height = 0 -font_ascent = 0 -font_charcount = 0 -font_chars = [] -font_cc = 0 - -while(l != ""): - - fs = l.strip().find(" ") - if (fs == -1): - l = f.readline() - continue - t = l[0:fs] - - dv = l[fs + 1:].split(" ") - d = {} - for x in dv: - if (x.find("=") == -1): - continue - s = x.split("=") - d[s[0]] = s[1] - - if (t == "common"): - font_height = d["lineHeight"] - font_ascent = d["base"] - - if (t == "char"): - font_chars.append(d["id"]) - font_chars.append(d["x"]) - font_chars.append(d["y"]) - font_chars.append(d["width"]) - font_chars.append(d["height"]) - font_chars.append(d["xoffset"]) - font_chars.append(d["yoffset"]) - font_chars.append(d["xadvance"]) - font_cc += 1 - - l = f.readline() - - -print("static const int _bi_font_" + name + "_height=" + str(font_height) + ";") -print("static const int _bi_font_" + name + "_ascent=" + str(font_ascent) + ";") -print("static const int _bi_font_" + name + "_charcount=" + str(font_cc) + ";") -cstr = "static const int _bi_font_" + name + "_characters={" -for i in range(len(font_chars)): - - c = font_chars[i] - if (i > 0): - cstr += ", " - cstr += c - -cstr += ("};") - -print(cstr) diff --git a/misc/scripts/make_glwrapper.py b/misc/scripts/make_glwrapper.py deleted file mode 100644 index 15b66a950b..0000000000 --- a/misc/scripts/make_glwrapper.py +++ /dev/null @@ -1,181 +0,0 @@ -#! /usr/bin/env python -import sys - -if (len(sys.argv) < 2): - print("usage: make_glwrapper.py <headers>") - sys.exit(255) - - -functions = [] -types = [] -constants = [] - -READ_FUNCTIONS = 0 -READ_TYPES = 1 -READ_CONSTANTS = 2 - -read_what = READ_TYPES - -def read_file(f): - while(True): - - line = f.readline() - if (line == ""): - break - - line = line.replace("\n", "").strip() - """ - if (line.find("[types]")!=-1): - read_what=READ_TYPES - continue - elif (line.find("[constants]")!=-1): - read=READ_TYPES - continue - elif (line.find("[functions]")!=-1): - read_what=READ_FUNCTIONS - continue - """ - - if (line.find("#define") != -1): - if (line.find("0x") == -1 and line.find("GL_VERSION") == -1): - continue - constants.append(line) - elif (line.find("typedef") != -1): - if (line.find("(") != -1 or line.find(")") != -1 or line.find("ARB") != -1 or line.find("EXT") != -1 or line.find("GL") == -1): - continue - types.append(line) - elif (line.find("APIENTRY") != -1 and line.find("GLAPI") != -1): - - if (line.find("ARB") != -1 or line.find("EXT") != -1 or line.find("NV") != -1): - continue - - line = line.replace("APIENTRY", "") - line = line.replace("GLAPI", "") - - glpos = line.find(" gl") - if (glpos == -1): - - glpos = line.find("\tgl") - if (glpos == -1): - continue - - ret = line[:glpos].strip() - - line = line[glpos:].strip() - namepos = line.find("(") - - if (namepos == -1): - continue - - name = line[:namepos].strip() - line = line[namepos:] - - argpos = line.rfind(")") - if (argpos == -1): - continue - - args = line[1:argpos] - - funcdata = {} - funcdata["ret"] = ret - funcdata["name"] = name - funcdata["args"] = args - - functions.append(funcdata) - print(funcdata) - -for path in sys.argv[1:]: - with open(path, "r") as f: - read_file(f) - -# print(types) -# print(constants) -# print(functions) - - -f = open("glwrapper.h", "w") - -f.write("#ifndef GL_WRAPPER\n") -f.write("#define GL_WRAPPER\n\n\n") - -header_code = """\ -#if defined(__gl_h_) || defined(__GL_H__) -#error gl.h included before glwrapper.h -#endif -#if defined(__glext_h_) || defined(__GLEXT_H_) -#error glext.h included before glwrapper.h -#endif -#if defined(__gl_ATI_h_) -#error glATI.h included before glwrapper.h -#endif - -#define __gl_h_ -#define __GL_H__ -#define __glext_h_ -#define __GLEXT_H_ -#define __gl_ATI_h_ - -#define GL_TRUE 1 -#define GL_FALSE 0 - -#define GL_ZERO 0 -#define GL_ONE 1 -#define GL_NONE 0 -#define GL_NO_ERROR 0 - -\n\n -""" - -f.write("#include <stddef.h>\n\n\n") - -f.write(header_code) - -f.write("#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n") -f.write("#if defined(_WIN32) && !defined(__CYGWIN__)\n") -f.write("#define GLWRP_APIENTRY __stdcall\n") -f.write("#else\n") -f.write("#define GLWRP_APIENTRY \n") -f.write("#endif\n\n") -for x in types: - f.write(x + "\n") - -f.write("\n\n") - -for x in constants: - f.write(x + "\n") - -f.write("\n\n") - -for x in functions: - f.write("extern " + x["ret"] + " GLWRP_APIENTRY (*__wrapper_" + x["name"] + ")(" + x["args"] + ");\n") - f.write("#define " + x["name"] + " __wrapper_" + x["name"] + "\n") - -f.write("\n\n") -f.write("typedef void (*GLWrapperFuncPtr)(void);\n\n") -f.write("void glWrapperInit( GLWrapperFuncPtr (*wrapperFunc)(const char*) );\n") - -f.write("#ifdef __cplusplus\n}\n#endif\n") - -f.write("#endif\n\n") -f.close() - -f = open("glwrapper.c", "w") - -f.write("\n\n") -f.write("#include \"glwrapper.h\"\n") -f.write("\n\n") - -for x in functions: - f.write(x["ret"] + " GLWRP_APIENTRY (*__wrapper_" + x["name"] + ")(" + x["args"] + ")=NULL;\n") - -f.write("\n\n") -f.write("void glWrapperInit( GLWrapperFuncPtr (*wrapperFunc)(const char*) ) {\n") -f.write("\n") - -for x in functions: - f.write("\t__wrapper_" + x["name"] + "=(" + x["ret"] + " GLWRP_APIENTRY (*)(" + x["args"] + "))wrapperFunc(\"" + x["name"] + "\");\n") - -f.write("\n\n") -f.write("}\n") -f.write("\n\n") -f.close() diff --git a/misc/scripts/make_icons.sh b/misc/scripts/make_icons.sh index 5f3ea40d6a..b590f03d38 100644..100755 --- a/misc/scripts/make_icons.sh +++ b/misc/scripts/make_icons.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env bash + # Generate .ico, .icns and .zip set of icons for Steam # Make icons with transparent backgrounds and all sizes diff --git a/misc/scripts/makeargs.py b/misc/scripts/makeargs.py deleted file mode 100644 index 26d9cc5a00..0000000000 --- a/misc/scripts/makeargs.py +++ /dev/null @@ -1,82 +0,0 @@ - -text = """ -#define FUNC$numR(m_r,m_func,$argt)\\ - virtual m_r m_func($argtp) { \\ - if (Thread::get_caller_id()!=server_thread) {\\ - m_r ret;\\ - command_queue.push_and_ret( visual_server, &VisualServer::m_func,$argp,&ret);\\ - return ret;\\ - } else {\\ - return visual_server->m_func($argp);\\ - }\\ - } - -#define FUNC$numRC(m_r,m_func,$argt)\\ - virtual m_r m_func($argtp) const { \\ - if (Thread::get_caller_id()!=server_thread) {\\ - m_r ret;\\ - command_queue.push_and_ret( visual_server, &VisualServer::m_func,$argp,&ret);\\ - return ret;\\ - } else {\\ - return visual_server->m_func($argp);\\ - }\\ - } - - -#define FUNC$numS(m_func,$argt)\\ - virtual void m_func($argtp) { \\ - if (Thread::get_caller_id()!=server_thread) {\\ - command_queue.push_and_sync( visual_server, &VisualServer::m_func,$argp);\\ - } else {\\ - visual_server->m_func($argp);\\ - }\\ - } - -#define FUNC$numSC(m_func,$argt)\\ - virtual void m_func($argtp) const { \\ - if (Thread::get_caller_id()!=server_thread) {\\ - command_queue.push_and_sync( visual_server, &VisualServer::m_func,$argp);\\ - } else {\\ - visual_server->m_func($argp);\\ - }\\ - } - - -#define FUNC$num(m_func,$argt)\\ - virtual void m_func($argtp) { \\ - if (Thread::get_caller_id()!=server_thread) {\\ - command_queue.push( visual_server, &VisualServer::m_func,$argp);\\ - } else {\\ - visual_server->m_func($argp);\\ - }\\ - } - -#define FUNC$numC(m_func,$argt)\\ - virtual void m_func($argtp) const { \\ - if (Thread::get_caller_id()!=server_thread) {\\ - command_queue.push( visual_server, &VisualServer::m_func,$argp);\\ - } else {\\ - visual_server->m_func($argp);\\ - }\\ - } - - -""" - - -for i in range(1, 8): - - tp = "" - p = "" - t = "" - for j in range(i): - if (j > 0): - tp += ", " - p += ", " - t += ", " - tp += ("m_arg" + str(j + 1) + " p" + str(j + 1)) - p += ("p" + str(j + 1)) - t += ("m_arg" + str(j + 1)) - - t = text.replace("$argtp", tp).replace("$argp", p).replace("$argt", t).replace("$num", str(i)) - print(t) diff --git a/misc/scripts/memsort.py b/misc/scripts/memsort.py deleted file mode 100644 index fb636b0f78..0000000000 --- a/misc/scripts/memsort.py +++ /dev/null @@ -1,35 +0,0 @@ - -import sys - -arg = "memdump.txt" - -if (len(sys.argv) > 1): - arg = sys.argv[1] - -f = open(arg, "rb") - - -l = f.readline() - - -sum = {} -cnt = {} - - -while(l != ""): - - s = l.split("-") - amount = int(s[1]) - what = s[2] - if (what in sum): - sum[what] += amount - cnt[what] += 1 - else: - sum[what] = amount - cnt[what] = 1 - - l = f.readline() - - -for x in sum: - print(x.strip() + "(" + str(cnt[x]) + "):\n: " + str(sum[x])) diff --git a/modules/SCsub b/modules/SCsub index 42d89d6ce2..dc0420616c 100644 --- a/modules/SCsub +++ b/modules/SCsub @@ -16,7 +16,7 @@ for x in env.module_list: env_modules.Append(CPPDEFINES=["MODULE_" + x.upper() + "_ENABLED"]) SConscript(x + "/SCsub") -if env.split_modules: +if env['split_libmodules']: env.split_lib("modules", env_lib = env_modules) else: lib = env_modules.add_library("modules", env.modules_sources) diff --git a/modules/arkit/SCsub b/modules/arkit/SCsub index b43d936768..e605703a72 100644 --- a/modules/arkit/SCsub +++ b/modules/arkit/SCsub @@ -5,6 +5,8 @@ Import('env_modules') env_arkit = env_modules.Clone() -# Add source files -env_arkit.add_source_files(env.modules_sources, "*.cpp") -env_arkit.add_source_files(env.modules_sources, "*.mm") +# (iOS) Build as separate static library +modules_sources = [] +env_arkit.add_source_files(modules_sources, "*.cpp") +env_arkit.add_source_files(modules_sources, "*.mm") +mod_lib = env_modules.add_library('#bin/libgodot_arkit_module' + env['LIBSUFFIX'], modules_sources)
\ No newline at end of file diff --git a/modules/arkit/arkit_interface.mm b/modules/arkit/arkit_interface.mm index 71642cfc30..3408477458 100644 --- a/modules/arkit/arkit_interface.mm +++ b/modules/arkit/arkit_interface.mm @@ -28,7 +28,6 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "camera_ios.h" #include "core/os/input.h" #include "core/os/os.h" #include "scene/resources/surface_tool.h" diff --git a/modules/assimp/editor_scene_importer_assimp.cpp b/modules/assimp/editor_scene_importer_assimp.cpp index 2cb2a71f1e..752b74b9f2 100644 --- a/modules/assimp/editor_scene_importer_assimp.cpp +++ b/modules/assimp/editor_scene_importer_assimp.cpp @@ -364,8 +364,6 @@ EditorSceneImporterAssimp::_generate_scene(const String &p_path, aiScene *scene, } } else if (bone != NULL) { continue; - } else if (element_assimp_node->mNumMeshes > 0) { - spatial = memnew(Spatial); } else { spatial = memnew(Spatial); } @@ -393,16 +391,11 @@ EditorSceneImporterAssimp::_generate_scene(const String &p_path, aiScene *scene, ERR_FAIL_COND_V_MSG(parent_node == NULL, state.root, "Parent node invalid even though lookup successful, out of ram?") - if (parent_node && spatial != state.root) { + if (spatial != state.root) { parent_node->add_child(spatial); spatial->set_owner(state.root); - } else if (spatial == state.root) { + } else { // required - think about it root never has a parent yet is valid, anything else without a parent is not valid. - } else // Safety for instances - { - WARN_PRINT( - "Failed to find parent node instance after lookup, serious warning report to godot with model"); - memdelete(spatial); // this node is broken } } else if (spatial != state.root) { // if the ainode is not in the tree @@ -477,11 +470,12 @@ EditorSceneImporterAssimp::_generate_scene(const String &p_path, aiScene *scene, for (Map<const aiNode *, Spatial *>::Element *key_value_pair = state.flat_node_map.front(); key_value_pair; key_value_pair = key_value_pair->next()) { const aiNode *assimp_node = key_value_pair->key(); Spatial *mesh_template = key_value_pair->value(); - Node *parent_node = mesh_template->get_parent(); ERR_CONTINUE(assimp_node == NULL); ERR_CONTINUE(mesh_template == NULL); + Node *parent_node = mesh_template->get_parent(); + if (mesh_template == state.root) { continue; } @@ -1009,7 +1003,6 @@ EditorSceneImporterAssimp::_generate_mesh_from_surface_indices(ImportState &stat } } - const String mesh_name = AssimpUtils::get_assimp_string(ai_mesh->mName); aiString mat_name; if (AI_SUCCESS == ai_material->Get(AI_MATKEY_NAME, mat_name)) { mat->set_name(AssimpUtils::get_assimp_string(mat_name)); @@ -1495,7 +1488,6 @@ void EditorSceneImporterAssimp::_generate_node( ERR_FAIL_COND(assimp_node == NULL); state.nodes.push_back(assimp_node); - String node_name = AssimpUtils::get_assimp_string(assimp_node->mName); String parent_name = AssimpUtils::get_assimp_string(assimp_node->mParent->mName); // please note diff --git a/modules/assimp/import_utils.h b/modules/assimp/import_utils.h index 8135b352c6..bf7552e7db 100644 --- a/modules/assimp/import_utils.h +++ b/modules/assimp/import_utils.h @@ -309,9 +309,7 @@ public: if (r_found) { return; } - if (r_found == false) { - find_texture_path(r_p_path, dir, r_path, r_found, "." + exts[i]); - } + find_texture_path(r_p_path, dir, r_path, r_found, "." + exts[i]); } } @@ -322,9 +320,7 @@ public: static void set_texture_mapping_mode(aiTextureMapMode *map_mode, Ref<ImageTexture> texture) { ERR_FAIL_COND(texture.is_null()); ERR_FAIL_COND(map_mode == NULL); - aiTextureMapMode tex_mode = aiTextureMapMode::aiTextureMapMode_Wrap; - - tex_mode = map_mode[0]; + aiTextureMapMode tex_mode = map_mode[0]; int32_t flags = Texture::FLAGS_DEFAULT; if (tex_mode == aiTextureMapMode_Wrap) { diff --git a/modules/bullet/space_bullet.cpp b/modules/bullet/space_bullet.cpp index e74c29769f..d73930775d 100644 --- a/modules/bullet/space_bullet.cpp +++ b/modules/bullet/space_bullet.cpp @@ -945,8 +945,8 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f btVector3 motion; G_TO_B(p_motion, motion); - - { /// phase two - sweep test, from a secure position without margin + if (!motion.fuzzyZero()) { + // Phase two - sweep test, from a secure position without margin const int shape_count(p_body->get_shape_count()); diff --git a/modules/camera/SCsub b/modules/camera/SCsub new file mode 100644 index 0000000000..23f031f06e --- /dev/null +++ b/modules/camera/SCsub @@ -0,0 +1,22 @@ +#!/usr/bin/env python + +Import('env') +Import('env_modules') + +env_camera = env_modules.Clone() + +if env["platform"] == "iphone": + # (iOS) Build as separate static library + modules_sources = [] + env_camera.add_source_files(modules_sources, "register_types.cpp") + env_camera.add_source_files(modules_sources, "camera_ios.mm") + mod_lib = env_modules.add_library('#bin/libgodot_camera_module' + env['LIBSUFFIX'], modules_sources) + +elif env["platform"] == "windows": + env_camera.add_source_files(env.modules_sources, "register_types.cpp") + env_camera.add_source_files(env.modules_sources, "camera_win.cpp") + +elif env["platform"] == "osx": + env_camera.add_source_files(env.modules_sources, "register_types.cpp") + env_camera.add_source_files(env.modules_sources, "camera_osx.mm") + diff --git a/platform/iphone/camera_ios.h b/modules/camera/camera_ios.h index ceabdba6a3..ceabdba6a3 100644 --- a/platform/iphone/camera_ios.h +++ b/modules/camera/camera_ios.h diff --git a/platform/iphone/camera_ios.mm b/modules/camera/camera_ios.mm index 5636ed6262..dcf09b28fd 100644 --- a/platform/iphone/camera_ios.mm +++ b/modules/camera/camera_ios.mm @@ -359,7 +359,7 @@ void CameraIOS::update_feeds() { // this way of doing things is deprecated but still works, // rewrite to using AVCaptureDeviceDiscoverySession - AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:[NSArray arrayWithObjects:AVCaptureDeviceTypeBuiltInTelephotoCamera, AVCaptureDeviceTypeBuiltInDualCamera, AVCaptureDeviceTypeBuiltInTrueDepthCamera, AVCaptureDeviceTypeBuiltInWideAngleCamera] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionUnspecified]; + AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:[NSArray arrayWithObjects:AVCaptureDeviceTypeBuiltInTelephotoCamera, AVCaptureDeviceTypeBuiltInDualCamera, AVCaptureDeviceTypeBuiltInTrueDepthCamera, AVCaptureDeviceTypeBuiltInWideAngleCamera, nil] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionUnspecified]; // remove devices that are gone.. for (int i = feeds.size() - 1; i >= 0; i--) { diff --git a/platform/osx/camera_osx.h b/modules/camera/camera_osx.h index 7477d8e647..7477d8e647 100644 --- a/platform/osx/camera_osx.h +++ b/modules/camera/camera_osx.h diff --git a/platform/osx/camera_osx.mm b/modules/camera/camera_osx.mm index 2b0f4906fc..2b0f4906fc 100644 --- a/platform/osx/camera_osx.mm +++ b/modules/camera/camera_osx.mm diff --git a/platform/windows/camera_win.cpp b/modules/camera/camera_win.cpp index 10787d0d0a..10787d0d0a 100644 --- a/platform/windows/camera_win.cpp +++ b/modules/camera/camera_win.cpp diff --git a/platform/windows/camera_win.h b/modules/camera/camera_win.h index 22ce9aa43f..22ce9aa43f 100644 --- a/platform/windows/camera_win.h +++ b/modules/camera/camera_win.h diff --git a/modules/camera/config.py b/modules/camera/config.py new file mode 100644 index 0000000000..d308c04195 --- /dev/null +++ b/modules/camera/config.py @@ -0,0 +1,5 @@ +def can_build(env, platform): + return platform == 'iphone' or platform == 'osx' or platform == 'windows' + +def configure(env): + pass diff --git a/modules/camera/register_types.cpp b/modules/camera/register_types.cpp new file mode 100644 index 0000000000..313df40112 --- /dev/null +++ b/modules/camera/register_types.cpp @@ -0,0 +1,56 @@ +/*************************************************************************/ +/* register_types.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#include "register_types.h" + +#if defined(WINDOWS_ENABLED) +#include "camera_win.h" +#endif +#if defined(IPHONE_ENABLED) +#include "camera_ios.h" +#endif +#if defined(OSX_ENABLED) +#include "camera_osx.h" +#endif + +void register_camera_types() { +#if defined(WINDOWS_ENABLED) + CameraServer::make_default<CameraWindows>(); +#endif +#if defined(IPHONE_ENABLED) + CameraServer::make_default<CameraIOS>(); +#endif +#if defined(OSX_ENABLED) + CameraServer::make_default<CameraOSX>(); +#endif +} + +void unregister_camera_types() { +} diff --git a/drivers/convex_decomp/b2d_decompose.h b/modules/camera/register_types.h index e79f692852..0ccb0885d0 100644 --- a/drivers/convex_decomp/b2d_decompose.h +++ b/modules/camera/register_types.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* b2d_decompose.h */ +/* register_types.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -28,12 +28,5 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef B2D_DECOMPOSE_H -#define B2D_DECOMPOSE_H - -#include "core/math/vector2.h" -#include "core/vector.h" - -Vector<Vector<Vector2> > b2d_decompose(const Vector<Vector2> &p_polygon); - -#endif // B2D_DECOMPOSE_H +void register_camera_types(); +void unregister_camera_types(); diff --git a/modules/gdnative/gdnative_library_editor_plugin.cpp b/modules/gdnative/gdnative_library_editor_plugin.cpp index 5d272a6cdc..78d26dc827 100644 --- a/modules/gdnative/gdnative_library_editor_plugin.cpp +++ b/modules/gdnative/gdnative_library_editor_plugin.cpp @@ -32,6 +32,8 @@ #include "gdnative_library_editor_plugin.h" #include "gdnative.h" +#include "editor/editor_scale.h" + void GDNativeLibraryEditor::edit(Ref<GDNativeLibrary> p_library) { library = p_library; Ref<ConfigFile> config = p_library->get_config_file(); @@ -224,7 +226,6 @@ void GDNativeLibraryEditor::_erase_entry(const String &platform, const String &e if (List<String>::Element *E = platforms[platform].entries.find(entry)) { String target = platform + "." + entry; - Ref<ConfigFile> config = library->get_config_file(); platforms[platform].entries.erase(E); _set_target_value("entry", target, ""); diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp index 7c313c983f..768b12baea 100644 --- a/modules/gdnative/nativescript/nativescript.cpp +++ b/modules/gdnative/nativescript/nativescript.cpp @@ -119,7 +119,10 @@ String NativeScript::get_class_name() const { void NativeScript::set_library(Ref<GDNativeLibrary> p_library) { if (!library.is_null()) { - WARN_PRINT("library on NativeScript already set. Do nothing."); + WARN_PRINT("Library in NativeScript already set. Do nothing."); + return; + } + if (p_library.is_null()) { return; } library = p_library; diff --git a/modules/gdnative/pluginscript/pluginscript_script.cpp b/modules/gdnative/pluginscript/pluginscript_script.cpp index f7c961d38b..6bb521173f 100644 --- a/modules/gdnative/pluginscript/pluginscript_script.cpp +++ b/modules/gdnative/pluginscript/pluginscript_script.cpp @@ -251,7 +251,19 @@ Error PluginScript::reload(bool p_keep_state) { (godot_string *)&_path, (godot_string *)&_source, (godot_error *)&err); +// Manifest's attributes must be explicitly freed +#define FREE_SCRIPT_MANIFEST(manifest) \ + { \ + godot_string_name_destroy(&manifest.name); \ + godot_string_name_destroy(&manifest.base); \ + godot_dictionary_destroy(&manifest.member_lines); \ + godot_array_destroy(&manifest.methods); \ + godot_array_destroy(&manifest.signals); \ + godot_array_destroy(&manifest.properties); \ + } + if (err) { + FREE_SCRIPT_MANIFEST(manifest); // TODO: GDscript uses `ScriptDebugger` here to jump into the parsing error return err; } @@ -269,6 +281,7 @@ Error PluginScript::reload(bool p_keep_state) { _ref_base_parent = res; } else { String name = *(StringName *)&manifest.name; + FREE_SCRIPT_MANIFEST(manifest); ERR_FAIL_V_MSG(ERR_PARSE_ERROR, _path + ": Script '" + name + "' has an invalid parent '" + *base_name + "'."); } } @@ -317,13 +330,6 @@ Error PluginScript::reload(bool p_keep_state) { _methods_rpc_mode[pi.name] = MultiplayerAPI::RPCMode(int(var)); } } - // Manifest's attributes must be explicitly freed - godot_string_name_destroy(&manifest.name); - godot_string_name_destroy(&manifest.base); - godot_dictionary_destroy(&manifest.member_lines); - godot_array_destroy(&manifest.methods); - godot_array_destroy(&manifest.signals); - godot_array_destroy(&manifest.properties); #ifdef TOOLS_ENABLED /*for (Set<PlaceHolderScriptInstance*>::Element *E=placeholders.front();E;E=E->next()) { @@ -331,7 +337,10 @@ Error PluginScript::reload(bool p_keep_state) { _update_placeholder(E->get()); }*/ #endif + + FREE_SCRIPT_MANIFEST(manifest); return OK; +#undef FREE_SCRIPT_MANIFEST } void PluginScript::get_script_method_list(List<MethodInfo> *r_methods) const { diff --git a/modules/gdnative/register_types.cpp b/modules/gdnative/register_types.cpp index fa59c704d5..818da65fb1 100644 --- a/modules/gdnative/register_types.cpp +++ b/modules/gdnative/register_types.cpp @@ -47,6 +47,7 @@ #include "core/project_settings.h" #ifdef TOOLS_ENABLED +#include "editor/editor_export.h" #include "editor/editor_node.h" #include "gdnative_library_editor_plugin.h" #include "gdnative_library_singleton_editor.h" diff --git a/modules/gdscript/doc_classes/@GDScript.xml b/modules/gdscript/doc_classes/@GDScript.xml index a22d18b970..c4b7e4887e 100644 --- a/modules/gdscript/doc_classes/@GDScript.xml +++ b/modules/gdscript/doc_classes/@GDScript.xml @@ -168,14 +168,16 @@ <method name="char"> <return type="String"> </return> - <argument index="0" name="ascii" type="int"> + <argument index="0" name="code" type="int"> </argument> <description> - Returns a character as a String of the given ASCII code. + Returns a character as a String of the given Unicode code point (which is compatible with ASCII code). [codeblock] a = char(65) # a is "A" a = char(65 + 32) # a is "a" + a = char(8364) # a is "€" [/codeblock] + This is the inverse of [method ord]. </description> </method> <method name="clamp"> @@ -208,7 +210,7 @@ <argument index="1" name="type" type="int"> </argument> <description> - Converts from a type to another in the best way possible. The [code]type[/code] parameter uses the enum [code]TYPE_*[/code] in [@GlobalScope]. + Converts from a type to another in the best way possible. The [code]type[/code] parameter uses the [enum Variant.Type] values. [codeblock] a = Vector2(1, 0) # Prints 1 @@ -336,11 +338,12 @@ <description> Rounds [code]s[/code] to the closest smaller integer and returns it. [codeblock] - # a is 2 + # a is 2.0 a = floor(2.99) - # a is -3 + # a is -3.0 a = floor(-2.99) [/codeblock] + [b]Note:[/b] This method returns a float. If you need an integer, you can use [code]int(s)[/code] directly. </description> </method> <method name="fmod"> @@ -502,7 +505,7 @@ <argument index="1" name="b" type="float"> </argument> <description> - Returns True/False whether [code]a[/code] and [code]b[/code] are approximately equal to each other. + Returns [code]true[/code] if [code]a[/code] and [code]b[/code] are approximately equal to each other. </description> </method> <method name="is_inf"> @@ -538,7 +541,7 @@ <argument index="0" name="s" type="float"> </argument> <description> - Returns True/False whether [code]s[/code] is zero or almost zero. + Returns [code]true[/code] if [code]s[/code] is zero or almost zero. </description> </method> <method name="len"> @@ -615,9 +618,10 @@ Loads a resource from the filesystem located at [code]path[/code]. [b]Note:[/b] Resource paths can be obtained by right-clicking on a resource in the FileSystem dock and choosing [b]Copy Path[/b]. [codeblock] - # Load a scene called main located in the root of the project directory + # Load a scene called main located in the root of the project directory. var main = load("res://main.tscn") [/codeblock] + [b]Important:[/b] The path must be absolute, a local path will just return [code]null[/code]. </description> </method> <method name="log"> @@ -700,6 +704,13 @@ <argument index="0" name="char" type="String"> </argument> <description> + Returns an integer representing the Unicode code point of the given Unicode character [code]char[/code]. + [codeblock] + a = ord("A") # a is 65 + a = ord("a") # a is 97 + a = ord("€") # a is 8364 + [/codeblock] + This is the inverse of [method char]. </description> </method> <method name="parse_json"> @@ -785,7 +796,7 @@ Returns a resource from the filesystem that is loaded during script parsing. [b]Note:[/b] Resource paths can be obtained by right clicking on a resource in the Assets Panel and choosing "Copy Path". [codeblock] - # Load a scene called main located in the root of the project directory + # Load a scene called main located in the root of the project directory. var main = preload("res://main.tscn") [/codeblock] </description> @@ -935,7 +946,7 @@ <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][/code] (where N is smaller than 2^32 -1). + 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 @@ -1216,7 +1227,7 @@ <argument index="0" name="what" type="Variant"> </argument> <description> - Returns the internal type of the given Variant object, using the [code]TYPE_*[/code] enum in [@GlobalScope]. + 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: @@ -1232,7 +1243,7 @@ <argument index="0" name="json" type="String"> </argument> <description> - Checks that [code]json[/code] is valid JSON data. Returns empty string if valid. Returns error message if not valid. + Checks that [code]json[/code] is valid JSON data. Returns an empty string if valid, or an error message otherwise. [codeblock] j = to_json([1, 2, 3]) v = validate_json(j) @@ -1366,23 +1377,26 @@ You can also use [code]yield[/code] to wait for a function to finish: [codeblock] func _ready(): - yield(do_something(), "completed") - yield(do_something_else(), "completed") - print("All functions are done!") - - func do_something(): - print("Something is done!") + yield(countdown(), "completed") # waiting for the countdown() function to complete + print('Ready') - func do_something_else(): - print("Something else is done!") + func countdown(): + yield(get_tree(), "idle_frame") # returns a GDScriptFunctionState object to _ready() + print(3) + yield(get_tree().create_timer(1.0), "timeout") + print(2) + yield(get_tree().create_timer(1.0), "timeout") + print(1) + yield(get_tree().create_timer(1.0), "timeout") # prints: - # Something is done! - # Something else is done! - # All functions are done! + # 3 + # 2 + # 1 + # Ready [/codeblock] When yielding on a function, the [code]completed[/code] signal will be emitted automatically when the function returns. It can, therefore, be used as the [code]signal[/code] parameter of the [code]yield[/code] method to resume. - If you are planning on calling the same function within a loop, you should consider using [code]yield(get_tree(), "idle_frame")[/code] also. + In order to yield on a function, the resulting function should also return a [code]GDScriptFunctionState[/code]. Notice [code]yield(get_tree(), "idle_frame")[/code] from the above example. </description> </method> </methods> diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index 563f7e2471..03b51be27f 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -946,18 +946,29 @@ bool GDScriptInstance::set(const StringName &p_name, const Variant &p_value) { { const Map<StringName, GDScript::MemberInfo>::Element *E = script->member_indices.find(p_name); if (E) { - if (E->get().setter) { + const GDScript::MemberInfo *member = &E->get(); + if (member->setter) { const Variant *val = &p_value; Variant::CallError err; - call(E->get().setter, &val, 1, err); + call(member->setter, &val, 1, err); if (err.error == Variant::CallError::CALL_OK) { return true; //function exists, call was successful } } else { - if (!E->get().data_type.is_type(p_value)) { - return false; // Type mismatch + if (!member->data_type.is_type(p_value)) { + // Try conversion + Variant::CallError ce; + const Variant *value = &p_value; + Variant converted = Variant::construct(member->data_type.builtin_type, &value, 1, ce); + if (ce.error == Variant::CallError::CALL_OK) { + members.write[member->index] = converted; + return true; + } else { + return false; + } + } else { + members.write[member->index] = p_value; } - members.write[E->get().index] = p_value; } return true; } @@ -2143,7 +2154,8 @@ GDScriptLanguage::GDScriptLanguage() { GLOBAL_DEF("debug/gdscript/completion/autocomplete_setters_and_getters", false); for (int i = 0; i < (int)GDScriptWarning::WARNING_MAX; i++) { String warning = GDScriptWarning::get_name_from_code((GDScriptWarning::Code)i).to_lower(); - GLOBAL_DEF("debug/gdscript/warnings/" + warning, !warning.begins_with("unsafe_")); + bool default_enabled = !warning.begins_with("unsafe_") && i != GDScriptWarning::UNUSED_CLASS_VARIABLE; + GLOBAL_DEF("debug/gdscript/warnings/" + warning, default_enabled); } #endif // DEBUG_ENABLED } diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index dea2225e91..7ce19f5adc 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -1144,7 +1144,7 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser:: GDScriptDataType assign_type = _gdtype_from_datatype(on->arguments[0]->get_datatype()); - if (assign_type.has_type && !on->arguments[1]->get_datatype().has_type) { + if (assign_type.has_type && !on->datatype.has_type) { // Typed assignment switch (assign_type.kind) { case GDScriptDataType::BUILTIN: { diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp index 280bc37dc0..97b8dda6d0 100644 --- a/modules/gdscript/gdscript_editor.cpp +++ b/modules/gdscript/gdscript_editor.cpp @@ -744,6 +744,14 @@ static bool _guess_expression_type(GDScriptCompletionContext &p_context, const G r_type.type.kind = GDScriptParser::DataType::BUILTIN; r_type.type.builtin_type = Variant::ARRAY; } break; + case GDScriptParser::Node::TYPE_CAST: { + const GDScriptParser::CastNode *cn = static_cast<const GDScriptParser::CastNode *>(p_expression); + GDScriptCompletionIdentifier value; + if (_guess_expression_type(p_context, cn->source_node, r_type)) { + r_type.type = cn->get_datatype(); + found = true; + } + } break; case GDScriptParser::Node::TYPE_OPERATOR: { const GDScriptParser::OperatorNode *op = static_cast<const GDScriptParser::OperatorNode *>(p_expression); switch (op->op) { @@ -1232,6 +1240,9 @@ static bool _guess_identifier_type(GDScriptCompletionContext &p_context, const S c.line = last_assign_line; r_type.assigned_expression = last_assigned_expression; if (_guess_expression_type(c, last_assigned_expression, r_type)) { + if (var_type.has_type) { + r_type.type = var_type; + } return true; } } diff --git a/modules/gdscript/gdscript_function.cpp b/modules/gdscript/gdscript_function.cpp index 0a01321851..4518a5be4b 100644 --- a/modules/gdscript/gdscript_function.cpp +++ b/modules/gdscript/gdscript_function.cpp @@ -764,15 +764,17 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a GET_VARIANT_PTR(dst, 2); GET_VARIANT_PTR(src, 3); -#ifdef DEBUG_ENABLED Variant::Type var_type = (Variant::Type)_code_ptr[ip + 1]; GD_ERR_BREAK(var_type < 0 || var_type >= Variant::VARIANT_MAX); if (src->get_type() != var_type) { +#ifdef DEBUG_ENABLED if (Variant::can_convert_strict(src->get_type(), var_type)) { +#endif // DEBUG_ENABLED Variant::CallError ce; *dst = Variant::construct(var_type, const_cast<const Variant **>(&src), 1, ce); } else { +#ifdef DEBUG_ENABLED err_text = "Trying to assign value of type '" + Variant::get_type_name(src->get_type()) + "' to a variable of type '" + Variant::get_type_name(var_type) + "'."; OPCODE_BREAK; @@ -780,9 +782,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a } else { #endif // DEBUG_ENABLED *dst = *src; -#ifdef DEBUG_ENABLED } -#endif // DEBUG_ENABLED ip += 4; } diff --git a/modules/gdscript/gdscript_functions.cpp b/modules/gdscript/gdscript_functions.cpp index bbafef68ed..5c0573be3f 100644 --- a/modules/gdscript/gdscript_functions.cpp +++ b/modules/gdscript/gdscript_functions.cpp @@ -1128,25 +1128,11 @@ void GDScriptFunctions::call(Function p_func, const Variant **p_args, int p_arg_ d["@subpath"] = cp; d["@path"] = p->get_path(); - p = base.ptr(); - - while (p) { - - for (Set<StringName>::Element *E = p->members.front(); E; E = E->next()) { - - Variant value; - if (ins->get(E->get(), value)) { - - String k = E->get(); - if (!d.has(k)) { - d[k] = value; - } - } + for (Map<StringName, GDScript::MemberInfo>::Element *E = base->member_indices.front(); E; E = E->next()) { + if (!d.has(E->key())) { + d[E->key()] = ins->members[E->get().index]; } - - p = p->_base; } - r_ret = d; } } @@ -1869,7 +1855,7 @@ MethodInfo GDScriptFunctions::get_info(Function p_func) { } break; case TEXT_CHAR: { - MethodInfo mi("char", PropertyInfo(Variant::INT, "ascii")); + MethodInfo mi("char", PropertyInfo(Variant::INT, "code")); mi.return_val.type = Variant::STRING; return mi; diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 6ef3ab67ae..4405393b96 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -3349,7 +3349,12 @@ void GDScriptParser::_parse_block(BlockNode *p_block, bool p_static) { } p_block->statements.push_back(expression); if (!_end_statement()) { - _set_error("Expected end of statement after expression."); + // Attempt to guess a better error message if the user "retypes" a variable + if (tokenizer->get_token() == GDScriptTokenizer::TK_COLON && tokenizer->get_token(1) == GDScriptTokenizer::TK_OP_ASSIGN) { + _set_error("Unexpected ':=', use '=' instead. Expected end of statement after expression."); + } else { + _set_error(String() + "Expected end of statement after expression, got " + tokenizer->get_token_name(tokenizer->get_token()) + " instead"); + } return; } @@ -8180,7 +8185,9 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) { } #endif // DEBUG_ENABLED + bool type_match = check_types; if (check_types && !_is_type_compatible(lh_type, rh_type)) { + type_match = false; // Try supertype test if (_is_type_compatible(rh_type, lh_type)) { _mark_line_as_unsafe(op->line); @@ -8192,23 +8199,27 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) { op->line); return; } - // Replace assignment with implicit conversion - BuiltInFunctionNode *convert = alloc_node<BuiltInFunctionNode>(); - convert->line = op->line; - convert->function = GDScriptFunctions::TYPE_CONVERT; - - ConstantNode *tgt_type = alloc_node<ConstantNode>(); - tgt_type->line = op->line; - tgt_type->value = (int)lh_type.builtin_type; - - OperatorNode *convert_call = alloc_node<OperatorNode>(); - convert_call->line = op->line; - convert_call->op = OperatorNode::OP_CALL; - convert_call->arguments.push_back(convert); - convert_call->arguments.push_back(op->arguments[1]); - convert_call->arguments.push_back(tgt_type); - - op->arguments.write[1] = convert_call; + if (op->op == OperatorNode::OP_ASSIGN) { + // Replace assignment with implicit conversion + BuiltInFunctionNode *convert = alloc_node<BuiltInFunctionNode>(); + convert->line = op->line; + convert->function = GDScriptFunctions::TYPE_CONVERT; + + ConstantNode *tgt_type = alloc_node<ConstantNode>(); + tgt_type->line = op->line; + tgt_type->value = (int)lh_type.builtin_type; + + OperatorNode *convert_call = alloc_node<OperatorNode>(); + convert_call->line = op->line; + convert_call->op = OperatorNode::OP_CALL; + convert_call->arguments.push_back(convert); + convert_call->arguments.push_back(op->arguments[1]); + convert_call->arguments.push_back(tgt_type); + + op->arguments.write[1] = convert_call; + + type_match = true; // Since we are converting, the type is matching + } #ifdef DEBUG_ENABLED if (lh_type.builtin_type == Variant::INT && rh_type.builtin_type == Variant::REAL) { _add_warning(GDScriptWarning::NARROWING_CONVERSION, op->line); @@ -8221,6 +8232,7 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) { _mark_line_as_unsafe(op->line); } #endif // DEBUG_ENABLED + op->datatype.has_type = type_match; } break; case OperatorNode::OP_CALL: case OperatorNode::OP_PARENT_CALL: { diff --git a/modules/gdscript/language_server/gdscript_extend_parser.cpp b/modules/gdscript/language_server/gdscript_extend_parser.cpp index 6b5c26ec81..d63f786fcb 100644 --- a/modules/gdscript/language_server/gdscript_extend_parser.cpp +++ b/modules/gdscript/language_server/gdscript_extend_parser.cpp @@ -115,7 +115,7 @@ void ExtendGDScriptParser::update_document_links(const String &p_code) { if (tokenizer.get_token() == GDScriptTokenizer::TK_EOF) { break; } else if (tokenizer.get_token() == GDScriptTokenizer::TK_CONSTANT) { - Variant const_val = tokenizer.get_token_constant(); + const Variant &const_val = tokenizer.get_token_constant(); if (const_val.get_type() == Variant::STRING) { String path = const_val; bool exists = fs->file_exists(path); diff --git a/modules/gdscript/language_server/gdscript_language_server.cpp b/modules/gdscript/language_server/gdscript_language_server.cpp index 8d58b99e02..ee4de3e216 100644 --- a/modules/gdscript/language_server/gdscript_language_server.cpp +++ b/modules/gdscript/language_server/gdscript_language_server.cpp @@ -31,6 +31,7 @@ #include "gdscript_language_server.h" #include "core/os/file_access.h" #include "core/os/os.h" +#include "editor/editor_log.h" #include "editor/editor_node.h" GDScriptLanguageServer::GDScriptLanguageServer() { diff --git a/modules/gdscript/language_server/gdscript_text_document.cpp b/modules/gdscript/language_server/gdscript_text_document.cpp index b83db718b8..1ca2a50c21 100644 --- a/modules/gdscript/language_server/gdscript_text_document.cpp +++ b/modules/gdscript/language_server/gdscript_text_document.cpp @@ -281,8 +281,6 @@ Dictionary GDScriptTextDocument::resolve(const Dictionary &p_params) { } Array GDScriptTextDocument::foldingRange(const Dictionary &p_params) { - Dictionary params = p_params["textDocument"]; - String path = params["uri"]; Array arr; return arr; } diff --git a/modules/gridmap/doc_classes/GridMap.xml b/modules/gridmap/doc_classes/GridMap.xml index a140fc8ac6..3de971db6d 100644 --- a/modules/gridmap/doc_classes/GridMap.xml +++ b/modules/gridmap/doc_classes/GridMap.xml @@ -226,9 +226,6 @@ <member name="mesh_library" type="MeshLibrary" setter="set_mesh_library" getter="get_mesh_library"> The assigned [MeshLibrary]. </member> - <member name="theme" type="MeshLibrary" setter="set_theme" getter="get_theme"> - Deprecated, use [member mesh_library] instead. - </member> </members> <signals> <signal name="cell_size_changed"> diff --git a/modules/mbedtls/crypto_mbedtls.cpp b/modules/mbedtls/crypto_mbedtls.cpp index 204f4e8905..62912d1459 100644 --- a/modules/mbedtls/crypto_mbedtls.cpp +++ b/modules/mbedtls/crypto_mbedtls.cpp @@ -203,8 +203,6 @@ void CryptoMbedTLS::load_default_certificates(String p_path) { default_certs = memnew(X509CertificateMbedTLS); ERR_FAIL_COND(default_certs == NULL); - String certs_path = GLOBAL_DEF("network/ssl/certificates", ""); - if (p_path != "") { // Use certs defined in project settings. default_certs->load(p_path); diff --git a/modules/mbedtls/stream_peer_mbedtls.cpp b/modules/mbedtls/stream_peer_mbedtls.cpp index a2e342e219..78e99a3a65 100755 --- a/modules/mbedtls/stream_peer_mbedtls.cpp +++ b/modules/mbedtls/stream_peer_mbedtls.cpp @@ -111,7 +111,6 @@ Error StreamPeerMbedTLS::connect_to_stream(Ref<StreamPeer> p_base, bool p_valida ERR_FAIL_COND_V(p_base.is_null(), ERR_INVALID_PARAMETER); base = p_base; - int ret = 0; int authmode = p_validate_certs ? MBEDTLS_SSL_VERIFY_REQUIRED : MBEDTLS_SSL_VERIFY_NONE; Error err = ssl_ctx->init_client(MBEDTLS_SSL_TRANSPORT_STREAM, authmode, p_ca_certs); @@ -122,7 +121,7 @@ Error StreamPeerMbedTLS::connect_to_stream(Ref<StreamPeer> p_base, bool p_valida status = STATUS_HANDSHAKING; - if ((ret = _do_handshake()) != OK) { + if (_do_handshake() != OK) { status = STATUS_ERROR_HOSTNAME_MISMATCH; return FAILED; } @@ -143,7 +142,7 @@ Error StreamPeerMbedTLS::accept_stream(Ref<StreamPeer> p_base, Ref<CryptoKey> p_ status = STATUS_HANDSHAKING; - if ((err = _do_handshake()) != OK) { + if (_do_handshake() != OK) { return FAILED; } diff --git a/modules/mono/SCsub b/modules/mono/SCsub index 457edfaeed..41be367f2f 100644 --- a/modules/mono/SCsub +++ b/modules/mono/SCsub @@ -8,14 +8,10 @@ Import('env_modules') env_mono = env_modules.Clone() -if env['tools']: +if env_mono['tools']: # NOTE: It is safe to generate this file here, since this is still executed serially - import build_scripts.make_cs_compressed_header as make_cs_compressed_header - make_cs_compressed_header.generate_header( - 'glue/Managed/Files', - 'glue/cs_compressed.gen.h', - 'glue/cs_glue_version.gen.h' - ) + import build_scripts.gen_cs_glue_version as gen_cs_glue_version + gen_cs_glue_version.generate_header('glue/GodotSharp', 'glue/cs_glue_version.gen.h') # Glue sources if env_mono['mono_glue']: @@ -38,24 +34,14 @@ env_mono = conf.Finish() mono_configure.configure(env, env_mono) -# Build Godot API solution - if env_mono['tools'] and env_mono['mono_glue']: + # Build Godot API solution import build_scripts.api_solution_build as api_solution_build api_sln_cmd = api_solution_build.build(env_mono) -# Build GodotTools - -if env_mono['tools']: + # Build GodotTools import build_scripts.godot_tools_build as godot_tools_build - if env_mono['mono_glue']: - godot_tools_build.build(env_mono, api_sln_cmd) - else: - # Building without the glue sources so the Godot API solution may be missing. - # GodotTools depends on the Godot API solution. As such, we will only build - # GodotTools.ProjectEditor which doesn't depend on the Godot API solution and - # is required by the bindings generator in order to be able to generated it. - godot_tools_build.build_project_editor_only(env_mono) + godot_tools_build.build(env_mono, api_sln_cmd) # Add sources diff --git a/modules/mono/build_scripts/api_solution_build.py b/modules/mono/build_scripts/api_solution_build.py index be54d0a679..639197c285 100644 --- a/modules/mono/build_scripts/api_solution_build.py +++ b/modules/mono/build_scripts/api_solution_build.py @@ -10,10 +10,7 @@ def build_api_solution(source, target, env): module_dir = env['module_dir'] - solution_path = os.path.join(module_dir, 'glue/Managed/Generated/GodotSharp.sln') - - if not os.path.isfile(solution_path): - raise RuntimeError("Godot API solution not found. Did you forget to run '--generate-mono-glue'?") + solution_path = os.path.join(module_dir, 'glue/GodotSharp/GodotSharp.sln') build_config = env['solution_build_config'] diff --git a/modules/mono/build_scripts/gen_cs_glue_version.py b/modules/mono/build_scripts/gen_cs_glue_version.py new file mode 100644 index 0000000000..5d1056c2fc --- /dev/null +++ b/modules/mono/build_scripts/gen_cs_glue_version.py @@ -0,0 +1,20 @@ + +def generate_header(solution_dir, version_header_dst): + import os + latest_mtime = 0 + for root, dirs, files in os.walk(solution_dir, topdown=True): + dirs[:] = [d for d in dirs if d not in ['Generated']] # Ignored generated files + files = [f for f in files if f.endswith('.cs')] + for file in files: + filepath = os.path.join(root, file) + mtime = os.path.getmtime(filepath) + latest_mtime = mtime if mtime > latest_mtime else latest_mtime + + glue_version = int(latest_mtime) # The latest modified time will do for now + + with open(version_header_dst, 'w') as version_header: + version_header.write('/* THIS FILE IS GENERATED DO NOT EDIT */\n') + version_header.write('#ifndef CS_GLUE_VERSION_H\n') + version_header.write('#define CS_GLUE_VERSION_H\n\n') + version_header.write('#define CS_GLUE_VERSION UINT32_C(' + str(glue_version) + ')\n') + version_header.write('\n#endif // CS_GLUE_VERSION_H\n') diff --git a/modules/mono/build_scripts/godot_tools_build.py b/modules/mono/build_scripts/godot_tools_build.py index 03aaa925f0..99341c631e 100644 --- a/modules/mono/build_scripts/godot_tools_build.py +++ b/modules/mono/build_scripts/godot_tools_build.py @@ -13,65 +13,13 @@ def build_godot_tools(source, target, env): solution_path = os.path.join(module_dir, 'editor/GodotTools/GodotTools.sln') build_config = 'Debug' if env['target'] == 'debug' else 'Release' - from . solution_builder import build_solution, nuget_restore - nuget_restore(env, solution_path) - build_solution(env, solution_path, build_config) - - # Copy targets - - solution_dir = os.path.abspath(os.path.join(solution_path, os.pardir)) - - src_dir = os.path.join(solution_dir, 'GodotTools', 'bin', build_config) - dst_dir = os.path.abspath(os.path.join(str(target[0]), os.pardir)) - - if not os.path.isdir(dst_dir): - assert not os.path.isfile(dst_dir) - os.makedirs(dst_dir) - - def copy_target(target_path): - from shutil import copy - filename = os.path.basename(target_path) - copy(os.path.join(src_dir, filename), target_path) - - for scons_target in target: - copy_target(str(scons_target)) - - -def build_godot_tools_project_editor(source, target, env): - # source and target elements are of type SCons.Node.FS.File, hence why we convert them to str - - module_dir = env['module_dir'] - - project_name = 'GodotTools.ProjectEditor' - - csproj_dir = os.path.join(module_dir, 'editor/GodotTools', project_name) - csproj_path = os.path.join(csproj_dir, project_name + '.csproj') - build_config = 'Debug' if env['target'] == 'debug' else 'Release' + # Custom build target to make sure output is always copied to the data dir. + extra_build_args = ['/Target:Build;GodotTools:BuildAlwaysCopyToDataDir'] from . solution_builder import build_solution, nuget_restore - - # Make sure to restore NuGet packages in the project directory for the project to find it - nuget_restore(env, os.path.join(csproj_dir, 'packages.config'), '-PackagesDirectory', - os.path.join(csproj_dir, 'packages')) - - build_solution(env, csproj_path, build_config) - - # Copy targets - - src_dir = os.path.join(csproj_dir, 'bin', build_config) - dst_dir = os.path.abspath(os.path.join(str(target[0]), os.pardir)) - - if not os.path.isdir(dst_dir): - assert not os.path.isfile(dst_dir) - os.makedirs(dst_dir) - - def copy_target(target_path): - from shutil import copy - filename = os.path.basename(target_path) - copy(os.path.join(src_dir, filename), target_path) - - for scons_target in target: - copy_target(str(scons_target)) + nuget_restore(env, solution_path) + build_solution(env, solution_path, build_config, extra_build_args) + # No need to copy targets. The GodotTools csproj takes care of copying them. def build(env_mono, api_sln_cmd): @@ -80,35 +28,12 @@ def build(env_mono, api_sln_cmd): output_dir = Dir('#bin').abspath editor_tools_dir = os.path.join(output_dir, 'GodotSharp', 'Tools') - target_filenames = [ - 'GodotTools.dll', 'GodotTools.IdeConnection.dll', 'GodotTools.BuildLogger.dll', - 'GodotTools.ProjectEditor.dll', 'DotNet.Glob.dll', 'GodotTools.Core.dll' - ] + target_filenames = ['GodotTools.dll'] if env_mono['target'] == 'debug': - target_filenames += [ - 'GodotTools.pdb', 'GodotTools.IdeConnection.pdb', 'GodotTools.BuildLogger.pdb', - 'GodotTools.ProjectEditor.pdb', 'GodotTools.Core.pdb' - ] + target_filenames += ['GodotTools.pdb'] targets = [os.path.join(editor_tools_dir, filename) for filename in target_filenames] cmd = env_mono.CommandNoCache(targets, api_sln_cmd, build_godot_tools, module_dir=os.getcwd()) env_mono.AlwaysBuild(cmd) - - -def build_project_editor_only(env_mono): - assert env_mono['tools'] - - output_dir = Dir('#bin').abspath - editor_tools_dir = os.path.join(output_dir, 'GodotSharp', 'Tools') - - target_filenames = ['GodotTools.ProjectEditor.dll', 'DotNet.Glob.dll', 'GodotTools.Core.dll'] - - if env_mono['target'] == 'debug': - target_filenames += ['GodotTools.ProjectEditor.pdb', 'GodotTools.Core.pdb'] - - targets = [os.path.join(editor_tools_dir, filename) for filename in target_filenames] - - cmd = env_mono.CommandNoCache(targets, [], build_godot_tools_project_editor, module_dir=os.getcwd()) - env_mono.AlwaysBuild(cmd) diff --git a/modules/mono/build_scripts/make_cs_compressed_header.py b/modules/mono/build_scripts/make_cs_compressed_header.py deleted file mode 100644 index ed49db5bb2..0000000000 --- a/modules/mono/build_scripts/make_cs_compressed_header.py +++ /dev/null @@ -1,62 +0,0 @@ - -def generate_header(src, dst, version_dst): - from compat import byte_to_str - - with open(dst, 'w') as header: - header.write('/* THIS FILE IS GENERATED DO NOT EDIT */\n') - header.write('#ifndef CS_COMPRESSED_H\n') - header.write('#define CS_COMPRESSED_H\n\n') - header.write('#ifdef TOOLS_ENABLED\n\n') - header.write('#include "core/map.h"\n') - header.write('#include "core/ustring.h"\n') - inserted_files = '' - import os - latest_mtime = 0 - cs_file_count = 0 - for root, _, files in os.walk(src): - files = [f for f in files if f.endswith('.cs')] - for file in files: - cs_file_count += 1 - filepath = os.path.join(root, file) - filepath_src_rel = os.path.relpath(filepath, src) - mtime = os.path.getmtime(filepath) - latest_mtime = mtime if mtime > latest_mtime else latest_mtime - with open(filepath, 'rb') as f: - buf = f.read() - decompr_size = len(buf) - import zlib - buf = zlib.compress(buf) - compr_size = len(buf) - name = str(cs_file_count) - header.write('\n') - header.write('// ' + filepath_src_rel + '\n') - header.write('static const int _cs_' + name + '_compressed_size = ' + str(compr_size) + ';\n') - header.write('static const int _cs_' + name + '_uncompressed_size = ' + str(decompr_size) + ';\n') - header.write('static const unsigned char _cs_' + name + '_compressed[] = { ') - for i, buf_idx in enumerate(range(compr_size)): - if i > 0: - header.write(', ') - header.write(byte_to_str(buf[buf_idx])) - header.write(' };\n') - inserted_files += '\tr_files.insert("' + filepath_src_rel.replace('\\', '\\\\') + '", ' \ - 'GodotCsCompressedFile(_cs_' + name + '_compressed_size, ' \ - '_cs_' + name + '_uncompressed_size, ' \ - '_cs_' + name + '_compressed));\n' - header.write('\nstruct GodotCsCompressedFile\n' '{\n' - '\tint compressed_size;\n' '\tint uncompressed_size;\n' '\tconst unsigned char* data;\n' - '\n\tGodotCsCompressedFile(int p_comp_size, int p_uncomp_size, const unsigned char* p_data)\n' - '\t{\n' '\t\tcompressed_size = p_comp_size;\n' '\t\tuncompressed_size = p_uncomp_size;\n' - '\t\tdata = p_data;\n' '\t}\n' '\n\tGodotCsCompressedFile() {}\n' '};\n' - '\nvoid get_compressed_files(Map<String, GodotCsCompressedFile>& r_files)\n' '{\n' + inserted_files + '}\n' - ) - header.write('\n#endif // TOOLS_ENABLED\n') - header.write('\n#endif // CS_COMPRESSED_H\n') - - glue_version = int(latest_mtime) # The latest modified time will do for now - - with open(version_dst, 'w') as version_header: - version_header.write('/* THIS FILE IS GENERATED DO NOT EDIT */\n') - version_header.write('#ifndef CS_GLUE_VERSION_H\n') - version_header.write('#define CS_GLUE_VERSION_H\n\n') - version_header.write('#define CS_GLUE_VERSION UINT32_C(' + str(glue_version) + ')\n') - version_header.write('\n#endif // CS_GLUE_VERSION_H\n') diff --git a/modules/mono/build_scripts/mono_android_config.xml b/modules/mono/build_scripts/mono_android_config.xml new file mode 100644 index 0000000000..e79670afd2 --- /dev/null +++ b/modules/mono/build_scripts/mono_android_config.xml @@ -0,0 +1,28 @@ +<configuration> + <dllmap wordsize="32" dll="i:cygwin1.dll" target="/system/lib/libc.so" /> + <dllmap wordsize="64" dll="i:cygwin1.dll" target="/system/lib64/libc.so" /> + <dllmap wordsize="32" dll="libc" target="/system/lib/libc.so" /> + <dllmap wordsize="64" dll="libc" target="/system/lib64/libc.so" /> + <dllmap wordsize="32" dll="intl" target="/system/lib/libc.so" /> + <dllmap wordsize="64" dll="intl" target="/system/lib64/libc.so" /> + <dllmap wordsize="32" dll="libintl" target="/system/lib/libc.so" /> + <dllmap wordsize="64" dll="libintl" target="/system/lib64/libc.so" /> + <dllmap dll="MonoPosixHelper" target="libMonoPosixHelper.so" /> + <dllmap dll="System.Native" target="libmono-native.so" /> + <dllmap wordsize="32" dll="i:msvcrt" target="/system/lib/libc.so" /> + <dllmap wordsize="64" dll="i:msvcrt" target="/system/lib64/libc.so" /> + <dllmap wordsize="32" dll="i:msvcrt.dll" target="/system/lib/libc.so" /> + <dllmap wordsize="64" dll="i:msvcrt.dll" target="/system/lib64/libc.so" /> + <dllmap wordsize="32" dll="sqlite" target="/system/lib/libsqlite.so" /> + <dllmap wordsize="64" dll="sqlite" target="/system/lib64/libsqlite.so" /> + <dllmap wordsize="32" dll="sqlite3" target="/system/lib/libsqlite.so" /> + <dllmap wordsize="64" dll="sqlite3" target="/system/lib64/libsqlite.so" /> + <dllmap wordsize="32" dll="liblog" target="/system/lib/liblog.so" /> + <dllmap wordsize="64" dll="liblog" target="/system/lib64/liblog.so" /> + <dllmap dll="i:kernel32.dll"> + <dllentry dll="__Internal" name="CopyMemory" target="mono_win32_compat_CopyMemory"/> + <dllentry dll="__Internal" name="FillMemory" target="mono_win32_compat_FillMemory"/> + <dllentry dll="__Internal" name="MoveMemory" target="mono_win32_compat_MoveMemory"/> + <dllentry dll="__Internal" name="ZeroMemory" target="mono_win32_compat_ZeroMemory"/> + </dllmap> +</configuration> diff --git a/modules/mono/build_scripts/mono_configure.py b/modules/mono/build_scripts/mono_configure.py index c09690ba6d..033c467da9 100644 --- a/modules/mono/build_scripts/mono_configure.py +++ b/modules/mono/build_scripts/mono_configure.py @@ -206,6 +206,8 @@ def configure(env, env_mono): env_mono.Append(CPPDEFINES=['_REENTRANT']) if mono_static: + env.Append(LINKFLAGS=['-rdynamic']) + mono_lib_file = os.path.join(mono_lib_path, 'lib' + mono_lib + '.a') if is_apple: @@ -281,8 +283,6 @@ def configure(env, env_mono): libs_output_dir = get_android_out_dir(env) if is_android else '#bin' copy_file(mono_lib_path, libs_output_dir, 'lib' + mono_so_name + sharedlib_ext) - env.Append(LINKFLAGS='-rdynamic') - if not tools_enabled: if is_desktop(env['platform']): if not mono_root: @@ -292,7 +292,8 @@ def configure(env, env_mono): elif is_android: # Compress Android Mono Config from . import make_android_mono_config - config_file_path = os.path.join(mono_root, 'etc', 'mono', 'config') + module_dir = os.getcwd() + config_file_path = os.path.join(module_dir, 'build_scripts', 'mono_android_config.xml') make_android_mono_config.generate_compressed_config(config_file_path, 'mono_gd/') # Copy the required shared libraries @@ -445,18 +446,19 @@ def copy_mono_shared_libs(env, mono_root, target_mono_root_dir): if not os.path.isdir(target_mono_lib_dir): os.makedirs(target_mono_lib_dir) + lib_file_names = [] if platform == 'osx': - # TODO: Make sure nothing is missing - copy(os.path.join(mono_root, 'lib', 'libMonoPosixHelper.dylib'), target_mono_lib_dir) + lib_file_names = [lib_name + '.dylib' for lib_name in [ + 'libmono-btls-shared', 'libmono-native-compat', 'libMonoPosixHelper' + ]] elif is_unix_like(platform): lib_file_names = [lib_name + '.so' for lib_name in [ 'libmono-btls-shared', 'libmono-ee-interp', 'libmono-native', 'libMonoPosixHelper', 'libmono-profiler-aot', 'libmono-profiler-coverage', 'libmono-profiler-log', 'libMonoSupportW' ]] - for lib_file_name in lib_file_names: - copy_if_exists(os.path.join(mono_root, 'lib', lib_file_name), target_mono_lib_dir) - + for lib_file_name in lib_file_names: + copy_if_exists(os.path.join(mono_root, 'lib', lib_file_name), target_mono_lib_dir) def pkgconfig_try_find_mono_root(mono_lib_names, sharedlib_ext): tmpenv = Environment() diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index 4536614379..f68c583278 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -42,6 +42,7 @@ #include "editor/bindings_generator.h" #include "editor/csharp_project.h" #include "editor/editor_node.h" +#include "editor/node_dock.h" #endif #ifdef DEBUG_METHODS_ENABLED diff --git a/modules/mono/editor/GodotTools/GodotTools.BuildLogger/GodotBuildLogger.cs b/modules/mono/editor/GodotTools/GodotTools.BuildLogger/GodotBuildLogger.cs index a0f6f1ff32..6015cb22b6 100644 --- a/modules/mono/editor/GodotTools/GodotTools.BuildLogger/GodotBuildLogger.cs +++ b/modules/mono/editor/GodotTools/GodotTools.BuildLogger/GodotBuildLogger.cs @@ -18,7 +18,7 @@ namespace GodotTools.BuildLogger if (null == Parameters) throw new LoggerException("Log directory was not set."); - var parameters = Parameters.Split(new[] {';'}); + var parameters = Parameters.Split(new[] { ';' }); string logDir = parameters[0]; diff --git a/modules/mono/editor/GodotTools/GodotTools.BuildLogger/GodotTools.BuildLogger.csproj b/modules/mono/editor/GodotTools/GodotTools.BuildLogger/GodotTools.BuildLogger.csproj index dcfdd83831..1eaa36c1aa 100644 --- a/modules/mono/editor/GodotTools/GodotTools.BuildLogger/GodotTools.BuildLogger.csproj +++ b/modules/mono/editor/GodotTools/GodotTools.BuildLogger/GodotTools.BuildLogger.csproj @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> diff --git a/modules/mono/editor/GodotTools/GodotTools.Core/GodotTools.Core.csproj b/modules/mono/editor/GodotTools/GodotTools.Core/GodotTools.Core.csproj index 24c7cb1573..1974220f2f 100644 --- a/modules/mono/editor/GodotTools/GodotTools.Core/GodotTools.Core.csproj +++ b/modules/mono/editor/GodotTools/GodotTools.Core/GodotTools.Core.csproj @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> diff --git a/modules/mono/editor/GodotTools/GodotTools.Core/StringExtensions.cs b/modules/mono/editor/GodotTools/GodotTools.Core/StringExtensions.cs index 8cd7e76303..b531b6aeee 100644 --- a/modules/mono/editor/GodotTools/GodotTools.Core/StringExtensions.cs +++ b/modules/mono/editor/GodotTools/GodotTools.Core/StringExtensions.cs @@ -26,7 +26,7 @@ namespace GodotTools.Core path = path.Replace('\\', '/'); - string[] parts = path.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries); + string[] parts = path.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); path = string.Join(Path.DirectorySeparatorChar.ToString(), parts).Trim(); @@ -44,7 +44,7 @@ namespace GodotTools.Core public static string CsvEscape(this string value, char delimiter = ',') { - bool hasSpecialChar = value.IndexOfAny(new char[] {'\"', '\n', '\r', delimiter}) != -1; + bool hasSpecialChar = value.IndexOfAny(new char[] { '\"', '\n', '\r', delimiter }) != -1; if (hasSpecialChar) return "\"" + value.Replace("\"", "\"\"") + "\""; @@ -54,8 +54,8 @@ namespace GodotTools.Core public static string ToSafeDirName(this string dirName, bool allowDirSeparator) { - var invalidChars = new List<string> {":", "*", "?", "\"", "<", ">", "|"}; - + var invalidChars = new List<string> { ":", "*", "?", "\"", "<", ">", "|" }; + if (allowDirSeparator) { // Directory separators are allowed, but disallow ".." to avoid going up the filesystem diff --git a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotIdeClient.cs b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotIdeClient.cs index 4f56a8d71b..2bf3b83c75 100644 --- a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotIdeClient.cs +++ b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotIdeClient.cs @@ -106,7 +106,7 @@ namespace GodotTools.IdeConnection try { Logger.LogInfo("Connecting to Godot Ide Server"); - + tcpClient.Connect(IPAddress.Loopback, GodotIdeMetadata.Port); Logger.LogInfo("Connection open with Godot Ide Server"); @@ -130,7 +130,7 @@ namespace GodotTools.IdeConnection public void Start() { Logger.LogInfo("Starting Godot Ide Client"); - + fsWatcher.Changed += OnMetaFileChanged; fsWatcher.Deleted += OnMetaFileDeleted; fsWatcher.EnableRaisingEvents = true; diff --git a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotIdeConnection.cs b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotIdeConnection.cs index e7e81f175e..6441be8d6e 100644 --- a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotIdeConnection.cs +++ b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotIdeConnection.cs @@ -149,7 +149,7 @@ namespace GodotTools.IdeConnection public bool WriteMessage(Message message) { Logger.LogDebug($"Sending message {message}"); - + var messageComposer = new MessageComposer(); messageComposer.AddArgument(message.Id); @@ -201,7 +201,7 @@ namespace GodotTools.IdeConnection clientReader?.Dispose(); clientWriter?.Dispose(); - ((IDisposable) tcpClient)?.Dispose(); + ((IDisposable)tcpClient)?.Dispose(); } } } diff --git a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotTools.IdeConnection.csproj b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotTools.IdeConnection.csproj index 94e525715b..427a26508f 100644 --- a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotTools.IdeConnection.csproj +++ b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/GodotTools.IdeConnection.csproj @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> diff --git a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/MessageComposer.cs b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/MessageComposer.cs index 9e4cd6ec1a..30ffe7a06e 100644 --- a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/MessageComposer.cs +++ b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/MessageComposer.cs @@ -22,14 +22,14 @@ namespace GodotTools.IdeConnection if (quoted) { stringBuilder.Append('"'); - + foreach (char @char in argument) { if (CharsToEscape.Contains(@char)) stringBuilder.Append('\\'); stringBuilder.Append(@char); } - + stringBuilder.Append('"'); } else diff --git a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/MessageParser.cs b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/MessageParser.cs index ed691e481f..4365d69989 100644 --- a/modules/mono/editor/GodotTools/GodotTools.IdeConnection/MessageParser.cs +++ b/modules/mono/editor/GodotTools/GodotTools.IdeConnection/MessageParser.cs @@ -37,7 +37,7 @@ namespace GodotTools.IdeConnection while (i < messageLine.Length) { @char = messageLine[i]; - + if (quoted && @char == '"') { i++; @@ -60,10 +60,10 @@ namespace GodotTools.IdeConnection { stringBuilder.Append(@char); } - + i++; } - + arguments.Add(stringBuilder.ToString()); stringBuilder.Clear(); diff --git a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ApiSolutionGenerator.cs b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ApiSolutionGenerator.cs deleted file mode 100644 index bfae2afc13..0000000000 --- a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ApiSolutionGenerator.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System.Collections.Generic; -using System.IO; - -namespace GodotTools.ProjectEditor -{ - public static class ApiSolutionGenerator - { - public static void GenerateApiSolution(string solutionDir, - string coreProjDir, IEnumerable<string> coreCompileItems, - string editorProjDir, IEnumerable<string> editorCompileItems) - { - var solution = new DotNetSolution(ApiAssemblyNames.SolutionName); - - solution.DirectoryPath = solutionDir; - - // GodotSharp project - - const string coreApiAssemblyName = ApiAssemblyNames.Core; - - string coreGuid = ProjectGenerator.GenCoreApiProject(coreProjDir, coreCompileItems); - - var coreProjInfo = new DotNetSolution.ProjectInfo - { - Guid = coreGuid, - PathRelativeToSolution = Path.Combine(coreApiAssemblyName, $"{coreApiAssemblyName}.csproj") - }; - coreProjInfo.Configs.Add("Debug"); - coreProjInfo.Configs.Add("Release"); - - solution.AddNewProject(coreApiAssemblyName, coreProjInfo); - - // GodotSharpEditor project - - const string editorApiAssemblyName = ApiAssemblyNames.Editor; - - string editorGuid = ProjectGenerator.GenEditorApiProject(editorProjDir, - $"../{coreApiAssemblyName}/{coreApiAssemblyName}.csproj", editorCompileItems); - - var editorProjInfo = new DotNetSolution.ProjectInfo(); - editorProjInfo.Guid = editorGuid; - editorProjInfo.PathRelativeToSolution = Path.Combine(editorApiAssemblyName, $"{editorApiAssemblyName}.csproj"); - editorProjInfo.Configs.Add("Debug"); - editorProjInfo.Configs.Add("Release"); - - solution.AddNewProject(editorApiAssemblyName, editorProjInfo); - - // Save solution - - solution.Save(); - } - } -} diff --git a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/GodotTools.ProjectEditor.csproj b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/GodotTools.ProjectEditor.csproj index ab3a5d1aea..ae727e8789 100644 --- a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/GodotTools.ProjectEditor.csproj +++ b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/GodotTools.ProjectEditor.csproj @@ -32,18 +32,11 @@ <Reference Include="System" /> <Reference Include="Microsoft.Build" /> <Reference Include="DotNet.Glob, Version=2.1.1.0, Culture=neutral, PublicKeyToken=b68cc888b4f632d1, processorArchitecture=MSIL"> - <!-- - When building Godot with 'mono_glue=no' SCons will build this project alone instead of the - entire solution. $(SolutionDir) is not defined in that case, so we need to workaround that. - We make SCons restore the NuGet packages in the project directory instead in this case. - --> - <HintPath Condition=" '$(SolutionDir)' != '' And Exists('$(SolutionDir)\packages\DotNet.Glob.2.1.1\lib\net45\DotNet.Glob.dll') ">$(SolutionDir)\packages\DotNet.Glob.2.1.1\lib\net45\DotNet.Glob.dll</HintPath> - <HintPath Condition=" '$(SolutionDir)' == '' Or !Exists('$(SolutionDir)\packages\DotNet.Glob.2.1.1\lib\net45\DotNet.Glob.dll') ">$(ProjectDir)\packages\DotNet.Glob.2.1.1\lib\net45\DotNet.Glob.dll</HintPath> + <HintPath>packages\DotNet.Glob.2.1.1\lib\net45\DotNet.Glob.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> <Compile Include="ApiAssembliesInfo.cs" /> - <Compile Include="ApiSolutionGenerator.cs" /> <Compile Include="DotNetSolution.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="IdentifierUtils.cs" /> diff --git a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectGenerator.cs b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectGenerator.cs index 4f21871f1a..22a0074580 100644 --- a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectGenerator.cs +++ b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectGenerator.cs @@ -10,68 +10,13 @@ namespace GodotTools.ProjectEditor { private const string CoreApiProjectName = "GodotSharp"; private const string EditorApiProjectName = "GodotSharpEditor"; - private const string CoreApiProjectGuid = "{AEBF0036-DA76-4341-B651-A3F2856AB2FA}"; - private const string EditorApiProjectGuid = "{8FBEC238-D944-4074-8548-B3B524305905}"; - - public static string GenCoreApiProject(string dir, IEnumerable<string> compileItems) - { - string path = Path.Combine(dir, CoreApiProjectName + ".csproj"); - - ProjectPropertyGroupElement mainGroup; - var root = CreateLibraryProject(CoreApiProjectName, out mainGroup); - - mainGroup.AddProperty("DocumentationFile", Path.Combine("$(OutputPath)", "$(AssemblyName).xml")); - mainGroup.SetProperty("RootNamespace", "Godot"); - mainGroup.SetProperty("ProjectGuid", CoreApiProjectGuid); - mainGroup.SetProperty("BaseIntermediateOutputPath", "obj"); - - GenAssemblyInfoFile(root, dir, CoreApiProjectName, - new[] {"[assembly: InternalsVisibleTo(\"" + EditorApiProjectName + "\")]"}, - new[] {"System.Runtime.CompilerServices"}); - - foreach (var item in compileItems) - { - root.AddItem("Compile", item.RelativeToPath(dir).Replace("/", "\\")); - } - - root.Save(path); - - return CoreApiProjectGuid; - } - - public static string GenEditorApiProject(string dir, string coreApiProjPath, IEnumerable<string> compileItems) - { - string path = Path.Combine(dir, EditorApiProjectName + ".csproj"); - - ProjectPropertyGroupElement mainGroup; - var root = CreateLibraryProject(EditorApiProjectName, out mainGroup); - - mainGroup.AddProperty("DocumentationFile", Path.Combine("$(OutputPath)", "$(AssemblyName).xml")); - mainGroup.SetProperty("RootNamespace", "Godot"); - mainGroup.SetProperty("ProjectGuid", EditorApiProjectGuid); - mainGroup.SetProperty("BaseIntermediateOutputPath", "obj"); - - GenAssemblyInfoFile(root, dir, EditorApiProjectName); - - foreach (var item in compileItems) - { - root.AddItem("Compile", item.RelativeToPath(dir).Replace("/", "\\")); - } - - var coreApiRef = root.AddItem("ProjectReference", coreApiProjPath.Replace("/", "\\")); - coreApiRef.AddMetadata("Private", "False"); - - root.Save(path); - - return EditorApiProjectGuid; - } public static string GenGameProject(string dir, string name, IEnumerable<string> compileItems) { string path = Path.Combine(dir, name + ".csproj"); ProjectPropertyGroupElement mainGroup; - var root = CreateLibraryProject(name, out mainGroup); + var root = CreateLibraryProject(name, "Tools", out mainGroup); mainGroup.SetProperty("OutputPath", Path.Combine(".mono", "temp", "bin", "$(Configuration)")); mainGroup.SetProperty("BaseIntermediateOutputPath", Path.Combine(".mono", "temp", "obj")); @@ -110,7 +55,7 @@ namespace GodotTools.ProjectEditor return root.GetGuid().ToString().ToUpper(); } - public static void GenAssemblyInfoFile(ProjectRootElement root, string dir, string name, string[] assemblyLines = null, string[] usingDirectives = null) + private static void GenAssemblyInfoFile(ProjectRootElement root, string dir, string name, string[] assemblyLines = null, string[] usingDirectives = null) { string propertiesDir = Path.Combine(dir, "Properties"); if (!Directory.Exists(propertiesDir)) @@ -138,7 +83,7 @@ namespace GodotTools.ProjectEditor root.AddItem("Compile", assemblyInfoFile.RelativeToPath(dir).Replace("/", "\\")); } - public static ProjectRootElement CreateLibraryProject(string name, out ProjectPropertyGroupElement mainGroup) + public static ProjectRootElement CreateLibraryProject(string name, string defaultConfig, out ProjectPropertyGroupElement mainGroup) { if (string.IsNullOrEmpty(name)) throw new ArgumentException($"{nameof(name)} cannot be empty", nameof(name)); @@ -147,7 +92,7 @@ namespace GodotTools.ProjectEditor root.DefaultTargets = "Build"; mainGroup = root.AddPropertyGroup(); - mainGroup.AddProperty("Configuration", "Debug").Condition = " '$(Configuration)' == '' "; + mainGroup.AddProperty("Configuration", defaultConfig).Condition = " '$(Configuration)' == '' "; mainGroup.AddProperty("Platform", "AnyCPU").Condition = " '$(Platform)' == '' "; mainGroup.AddProperty("ProjectGuid", "{" + Guid.NewGuid().ToString().ToUpper() + "}"); mainGroup.AddProperty("OutputType", "Library"); @@ -184,16 +129,6 @@ namespace GodotTools.ProjectEditor return root; } - private static void AddItems(ProjectRootElement elem, string groupName, params string[] items) - { - var group = elem.AddItemGroup(); - - foreach (var item in items) - { - group.AddItem(groupName, item); - } - } - private const string AssemblyInfoTemplate = @"using System.Reflection;{0} diff --git a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/packages.config b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/packages.config index 13915000e4..2db030f9d8 100644 --- a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/packages.config +++ b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/packages.config @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <packages> <package id="DotNet.Glob" version="2.1.1" targetFramework="net45" /> -</packages>
\ No newline at end of file +</packages> diff --git a/modules/mono/editor/GodotTools/GodotTools/BottomPanel.cs b/modules/mono/editor/GodotTools/GodotTools/BottomPanel.cs index 44813f962c..4c76d2abf1 100644 --- a/modules/mono/editor/GodotTools/GodotTools/BottomPanel.cs +++ b/modules/mono/editor/GodotTools/GodotTools/BottomPanel.cs @@ -34,7 +34,7 @@ namespace GodotTools for (int i = 0; i < buildTabs.GetChildCount(); i++) { - var tab = (BuildTab) buildTabs.GetChild(i); + var tab = (BuildTab)buildTabs.GetChild(i); if (tab == null) continue; @@ -120,7 +120,7 @@ namespace GodotTools if (currentTab < 0 || currentTab >= buildTabs.GetTabCount()) throw new InvalidOperationException("No tab selected"); - var buildTab = (BuildTab) buildTabs.GetChild(currentTab); + var buildTab = (BuildTab)buildTabs.GetChild(currentTab); buildTab.WarningsVisible = pressed; buildTab.UpdateIssuesList(); } @@ -132,7 +132,7 @@ namespace GodotTools if (currentTab < 0 || currentTab >= buildTabs.GetTabCount()) throw new InvalidOperationException("No tab selected"); - var buildTab = (BuildTab) buildTabs.GetChild(currentTab); + var buildTab = (BuildTab)buildTabs.GetChild(currentTab); buildTab.ErrorsVisible = pressed; buildTab.UpdateIssuesList(); } @@ -193,7 +193,7 @@ namespace GodotTools int selectedItem = selectedItems[0]; - var buildTab = (BuildTab) buildTabs.GetTabControl(selectedItem); + var buildTab = (BuildTab)buildTabs.GetTabControl(selectedItem); OS.ShellOpen(Path.Combine(buildTab.BuildInfo.LogsDirPath, BuildManager.MsBuildLogFileName)); } @@ -249,14 +249,14 @@ namespace GodotTools var editorBaseControl = editorInterface.GetBaseControl(); - SizeFlagsVertical = (int) SizeFlags.ExpandFill; + SizeFlagsVertical = (int)SizeFlags.ExpandFill; SetAnchorsAndMarginsPreset(LayoutPreset.Wide); panelTabs = new TabContainer { TabAlign = TabContainer.TabAlignEnum.Left, RectMinSize = new Vector2(0, 228) * EditorScale, - SizeFlagsVertical = (int) SizeFlags.ExpandFill + SizeFlagsVertical = (int)SizeFlags.ExpandFill }; panelTabs.AddStyleboxOverride("panel", editorBaseControl.GetStylebox("DebuggerPanel", "EditorStyles")); panelTabs.AddStyleboxOverride("tab_fg", editorBaseControl.GetStylebox("DebuggerTabFG", "EditorStyles")); @@ -268,11 +268,11 @@ namespace GodotTools panelBuildsTab = new VBoxContainer { Name = "Builds".TTR(), - SizeFlagsHorizontal = (int) SizeFlags.ExpandFill + SizeFlagsHorizontal = (int)SizeFlags.ExpandFill }; panelTabs.AddChild(panelBuildsTab); - var toolBarHBox = new HBoxContainer {SizeFlagsHorizontal = (int) SizeFlags.ExpandFill}; + var toolBarHBox = new HBoxContainer { SizeFlagsHorizontal = (int)SizeFlags.ExpandFill }; panelBuildsTab.AddChild(toolBarHBox); var buildProjectBtn = new Button @@ -320,12 +320,12 @@ namespace GodotTools var hsc = new HSplitContainer { - SizeFlagsHorizontal = (int) SizeFlags.ExpandFill, - SizeFlagsVertical = (int) SizeFlags.ExpandFill + SizeFlagsHorizontal = (int)SizeFlags.ExpandFill, + SizeFlagsVertical = (int)SizeFlags.ExpandFill }; panelBuildsTab.AddChild(hsc); - buildTabsList = new ItemList {SizeFlagsHorizontal = (int) SizeFlags.ExpandFill}; + buildTabsList = new ItemList { SizeFlagsHorizontal = (int)SizeFlags.ExpandFill }; buildTabsList.Connect("item_selected", this, nameof(_BuildTabsItemSelected)); buildTabsList.Connect("nothing_selected", this, nameof(_BuildTabsNothingSelected)); hsc.AddChild(buildTabsList); @@ -333,7 +333,7 @@ namespace GodotTools buildTabs = new TabContainer { TabAlign = TabContainer.TabAlignEnum.Left, - SizeFlagsHorizontal = (int) SizeFlags.ExpandFill, + SizeFlagsHorizontal = (int)SizeFlags.ExpandFill, TabsVisible = false }; hsc.AddChild(buildTabs); diff --git a/modules/mono/editor/GodotTools/GodotTools/Build/BuildSystem.cs b/modules/mono/editor/GodotTools/GodotTools/Build/BuildSystem.cs index da90c960e5..43c96d2e30 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Build/BuildSystem.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Build/BuildSystem.cs @@ -46,7 +46,7 @@ namespace GodotTools.Build { if (OS.IsWindows) { - return (BuildManager.BuildTool) EditorSettings.GetSetting("mono/builds/build_tool") + return (BuildManager.BuildTool)EditorSettings.GetSetting("mono/builds/build_tool") == BuildManager.BuildTool.MsBuildMono; } @@ -55,7 +55,7 @@ namespace GodotTools.Build } private static bool PrintBuildOutput => - (bool) EditorSettings.GetSetting("mono/builds/print_build_output"); + (bool)EditorSettings.GetSetting("mono/builds/print_build_output"); private static Process LaunchBuild(string solution, string config, string loggerOutputDir, IEnumerable<string> customProperties = null) { @@ -90,7 +90,7 @@ namespace GodotTools.Build // Needed when running from Developer Command Prompt for VS RemovePlatformVariable(startInfo.EnvironmentVariables); - var process = new Process {StartInfo = startInfo}; + var process = new Process { StartInfo = startInfo }; process.Start(); diff --git a/modules/mono/editor/GodotTools/GodotTools/Build/MsBuildFinder.cs b/modules/mono/editor/GodotTools/GodotTools/Build/MsBuildFinder.cs index ad8a6516ab..c3db52aa9e 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Build/MsBuildFinder.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Build/MsBuildFinder.cs @@ -19,7 +19,7 @@ namespace GodotTools.Build public static string FindMsBuild() { var editorSettings = GodotSharpEditor.Instance.GetEditorInterface().GetEditorSettings(); - var buildTool = (BuildManager.BuildTool) editorSettings.GetSetting("mono/builds/build_tool"); + var buildTool = (BuildManager.BuildTool)editorSettings.GetSetting("mono/builds/build_tool"); if (OS.IsWindows) { @@ -136,11 +136,11 @@ namespace GodotTools.Build string vsWherePath = Environment.GetEnvironmentVariable(Internal.GodotIs32Bits() ? "ProgramFiles" : "ProgramFiles(x86)"); vsWherePath += "\\Microsoft Visual Studio\\Installer\\vswhere.exe"; - var vsWhereArgs = new[] {"-latest", "-products", "*", "-requires", "Microsoft.Component.MSBuild"}; + var vsWhereArgs = new[] { "-latest", "-products", "*", "-requires", "Microsoft.Component.MSBuild" }; var outputArray = new Godot.Collections.Array<string>(); int exitCode = Godot.OS.Execute(vsWherePath, vsWhereArgs, - blocking: true, output: (Godot.Collections.Array) outputArray); + blocking: true, output: (Godot.Collections.Array)outputArray); if (exitCode != 0) return string.Empty; diff --git a/modules/mono/editor/GodotTools/GodotTools/BuildManager.cs b/modules/mono/editor/GodotTools/GodotTools/BuildManager.cs index 217bf5c144..fa6bf4dafd 100644 --- a/modules/mono/editor/GodotTools/GodotTools/BuildManager.cs +++ b/modules/mono/editor/GodotTools/GodotTools/BuildManager.cs @@ -172,7 +172,7 @@ namespace GodotTools } var editorSettings = GodotSharpEditor.Instance.GetEditorInterface().GetEditorSettings(); - var buildTool = (BuildTool) editorSettings.GetSetting("mono/builds/build_tool"); + var buildTool = (BuildTool)editorSettings.GetSetting("mono/builds/build_tool"); using (var pr = new EditorProgress("mono_project_debug_build", "Building project solution...", 1)) { diff --git a/modules/mono/editor/GodotTools/GodotTools/BuildTab.cs b/modules/mono/editor/GodotTools/GodotTools/BuildTab.cs index 807a20d9a1..727581daab 100644 --- a/modules/mono/editor/GodotTools/GodotTools/BuildTab.cs +++ b/modules/mono/editor/GodotTools/GodotTools/BuildTab.cs @@ -113,7 +113,7 @@ namespace GodotTools throw new IndexOutOfRangeException("Item list index out of range"); // Get correct issue idx from issue list - int issueIndex = (int) issuesList.GetItemMetadata(idx); + int issueIndex = (int)issuesList.GetItemMetadata(idx); if (idx < 0 || idx >= issues.Count) throw new IndexOutOfRangeException("Issue index out of range"); @@ -134,7 +134,7 @@ namespace GodotTools if (file.StartsWith("res://")) { - var script = (Script) ResourceLoader.Load(file, typeHint: Internal.CSharpLanguageType); + var script = (Script)ResourceLoader.Load(file, typeHint: Internal.CSharpLanguageType); if (script != null && Internal.ScriptEditorEdit(script, issue.Line, issue.Column)) Internal.EditorNodeShowScriptScreen(); @@ -220,7 +220,7 @@ namespace GodotTools issuesList.Clear(); - var issue = new BuildIssue {Message = cause, Warning = false}; + var issue = new BuildIssue { Message = cause, Warning = false }; ErrorCount += 1; issues.Add(issue); @@ -250,7 +250,7 @@ namespace GodotTools { base._Ready(); - issuesList = new ItemList {SizeFlagsVertical = (int) SizeFlags.ExpandFill}; + issuesList = new ItemList { SizeFlagsVertical = (int)SizeFlags.ExpandFill }; issuesList.Connect("item_activated", this, nameof(_IssueActivated)); AddChild(issuesList); } diff --git a/modules/mono/editor/GodotTools/GodotTools/CsProjOperations.cs b/modules/mono/editor/GodotTools/GodotTools/CsProjOperations.cs index c021a9051e..174509dc5b 100644 --- a/modules/mono/editor/GodotTools/GodotTools/CsProjOperations.cs +++ b/modules/mono/editor/GodotTools/GodotTools/CsProjOperations.cs @@ -26,7 +26,7 @@ namespace GodotTools public static void AddItem(string projectPath, string itemType, string include) { - if (!(bool) GlobalDef("mono/project/auto_update_project", true)) + if (!(bool)GlobalDef("mono/project/auto_update_project", true)) return; ProjectUtils.AddItemToProjectChecked(projectPath, itemType, include); @@ -49,7 +49,7 @@ namespace GodotTools private static ulong ConvertToTimestamp(this DateTime value) { TimeSpan elapsedTime = value - Epoch; - return (ulong) elapsedTime.TotalSeconds; + return (ulong)elapsedTime.TotalSeconds; } public static void GenerateScriptsMetadata(string projectPath, string outputPath) @@ -68,7 +68,7 @@ namespace GodotTools if (oldDict.TryGetValue(projectIncludeFile, out var oldFileVar)) { - var oldFileDict = (Dictionary) oldFileVar; + var oldFileDict = (Dictionary)oldFileVar; if (ulong.TryParse(oldFileDict["modified_time"] as string, out ulong storedModifiedTime)) { @@ -108,7 +108,7 @@ namespace GodotTools if (classDict.Count == 0) continue; // Not found - newDict[projectIncludeFile] = new Dictionary {["modified_time"] = $"{modifiedTime}", ["class"] = classDict}; + newDict[projectIncludeFile] = new Dictionary { ["modified_time"] = $"{modifiedTime}", ["class"] = classDict }; } if (newDict.Count > 0) diff --git a/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs b/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs index aed25f5ac5..96cafba87f 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs @@ -39,7 +39,7 @@ namespace GodotTools.Export private void AddFile(string srcPath, string dstPath, bool remap = false) { - AddFile(dstPath, File.ReadAllBytes(srcPath), remap); + AddFile(dstPath.Replace("\\", "/"), File.ReadAllBytes(srcPath), remap); } public override void _ExportFile(string path, string type, string[] features) @@ -54,7 +54,7 @@ namespace GodotTools.Export // TODO What if the source file is not part of the game's C# project - bool includeScriptsContent = (bool) ProjectSettings.GetSetting("mono/export/include_scripts_content"); + bool includeScriptsContent = (bool)ProjectSettings.GetSetting("mono/export/include_scripts_content"); if (!includeScriptsContent) { @@ -78,7 +78,13 @@ namespace GodotTools.Export catch (Exception e) { maybeLastExportError = e.Message; - GD.PushError($"Failed to export project: {e.Message}"); + + // 'maybeLastExportError' cannot be null or empty if there was an error, so we + // must consider the possibility of exceptions being thrown without a message. + if (string.IsNullOrEmpty(maybeLastExportError)) + maybeLastExportError = $"Exception thrown: {e.GetType().Name}"; + + GD.PushError($"Failed to export project: {maybeLastExportError}"); Console.Error.WriteLine(e); // TODO: Do something on error once _ExportBegin supports failing. } @@ -114,7 +120,7 @@ namespace GodotTools.Export var dependencies = new Godot.Collections.Dictionary<string, string>(); - var projectDllName = (string) ProjectSettings.GetSetting("application/config/name"); + var projectDllName = (string)ProjectSettings.GetSetting("application/config/name"); if (projectDllName.Empty()) { projectDllName = "UnnamedProject"; @@ -125,12 +131,20 @@ namespace GodotTools.Export dependencies[projectDllName] = projectDllSrcPath; + if (platform == OS.Platforms.Android) { - string platformBclDir = DeterminePlatformBclDir(platform); + string godotAndroidExtProfileDir = GetBclProfileDir("godot_android_ext"); + string monoAndroidAssemblyPath = Path.Combine(godotAndroidExtProfileDir, "Mono.Android.dll"); + + if (!File.Exists(monoAndroidAssemblyPath)) + throw new FileNotFoundException("Assembly not found: 'Mono.Android'", monoAndroidAssemblyPath); - internal_GetExportedAssemblyDependencies(projectDllName, projectDllSrcPath, buildConfig, platformBclDir, dependencies); + dependencies["Mono.Android"] = monoAndroidAssemblyPath; } + var initialDependencies = dependencies.Duplicate(); + internal_GetExportedAssemblyDependencies(initialDependencies, buildConfig, DeterminePlatformBclDir(platform), dependencies); + string outputDataDir = null; if (PlatformHasTemplateDir(platform)) @@ -139,7 +153,7 @@ namespace GodotTools.Export string apiConfig = isDebug ? "Debug" : "Release"; string resAssembliesDir = Path.Combine(GodotSharpDirs.ResAssembliesBaseDir, apiConfig); - bool assembliesInsidePck = (bool) ProjectSettings.GetSetting("mono/export/export_assemblies_inside_pck") || outputDataDir == null; + bool assembliesInsidePck = (bool)ProjectSettings.GetSetting("mono/export/export_assemblies_inside_pck") || outputDataDir == null; if (!assembliesInsidePck) { @@ -166,7 +180,7 @@ namespace GodotTools.Export // AOT - if ((bool) ProjectSettings.GetSetting("mono/export/aot/enabled")) + if ((bool)ProjectSettings.GetSetting("mono/export/aot/enabled")) { AotCompileDependencies(features, platform, isDebug, outputDir, outputDataDir, dependencies); } @@ -201,23 +215,25 @@ namespace GodotTools.Export string TemplateDirName() => $"data.mono.{platform}.{bits}.{target}"; string templateDirPath = Path.Combine(Internal.FullTemplatesDir, TemplateDirName()); + bool validTemplatePathFound = true; if (!Directory.Exists(templateDirPath)) { - templateDirPath = null; + validTemplatePathFound = false; if (isDebug) { target = "debug"; // Support both 'release_debug' and 'debug' for the template data directory name templateDirPath = Path.Combine(Internal.FullTemplatesDir, TemplateDirName()); + validTemplatePathFound = true; if (!Directory.Exists(templateDirPath)) - templateDirPath = null; + validTemplatePathFound = false; } } - if (templateDirPath == null) - throw new FileNotFoundException("Data template directory not found"); + if (!validTemplatePathFound) + throw new FileNotFoundException("Data template directory not found", templateDirPath); string outputDataDir = Path.Combine(outputDir, DataDirName); @@ -326,7 +342,7 @@ namespace GodotTools.Export AotCompileAssembly(platform, isDebug, data, assemblyPath, outputFilePathForThisAbi); - AddSharedObject(outputFilePathForThisAbi, tags: new[] {abi}); + AddSharedObject(outputFilePathForThisAbi, tags: new[] { abi }); } } else @@ -367,7 +383,7 @@ namespace GodotTools.Export string compilerCommand = Path.Combine(monoCrossBin, $"{toolPrefix}{monoExeName}{exeExt}"); - bool fullAot = (bool) ProjectSettings.GetSetting("mono/export/aot/full_aot"); + bool fullAot = (bool)ProjectSettings.GetSetting("mono/export/aot/full_aot"); string EscapeOption(string option) => option.Contains(',') ? $"\"{option}\"" : option; string OptionsToString(IEnumerable<string> options) => string.Join(",", options.Select(EscapeOption)); @@ -384,7 +400,7 @@ namespace GodotTools.Export { string abi = data["abi"]; - string androidToolchain = (string) ProjectSettings.GetSetting("mono/export/aot/android_toolchain_path"); + string androidToolchain = (string)ProjectSettings.GetSetting("mono/export/aot/android_toolchain_path"); if (string.IsNullOrEmpty(androidToolchain)) { @@ -409,13 +425,13 @@ namespace GodotTools.Export aotOptions.Add("tool-prefix=" + Path.Combine(androidToolchain, "bin", androidToolPrefixes[abi])); string triple = GetAndroidTriple(abi); - aotOptions.Add ($"mtriple={triple}"); + aotOptions.Add($"mtriple={triple}"); } aotOptions.Add($"outfile={outputFilePath}"); - var extraAotOptions = (string[]) ProjectSettings.GetSetting("mono/export/aot/extra_aot_options"); - var extraOptimizerOptions = (string[]) ProjectSettings.GetSetting("mono/export/aot/extra_optimizer_options"); + var extraAotOptions = (string[])ProjectSettings.GetSetting("mono/export/aot/extra_aot_options"); + var extraOptimizerOptions = (string[])ProjectSettings.GetSetting("mono/export/aot/extra_optimizer_options"); if (extraAotOptions.Length > 0) aotOptions.AddRange(extraAotOptions); @@ -503,7 +519,7 @@ namespace GodotTools.Export case OS.Platforms.HTML5: return "wasm-wasm32"; default: - throw new NotSupportedException(); + throw new NotSupportedException($"Platform not supported: {platform}"); } } @@ -565,7 +581,7 @@ namespace GodotTools.Export private static bool PlatformHasTemplateDir(string platform) { // OSX export templates are contained in a zip, so we place our custom template inside it and let Godot do the rest. - return !new[] {OS.Platforms.OSX, OS.Platforms.Android, OS.Platforms.HTML5}.Contains(platform); + return !new[] { OS.Platforms.OSX, OS.Platforms.Android, OS.Platforms.HTML5 }.Contains(platform); } private static string DeterminePlatformFromFeatures(IEnumerable<string> features) @@ -579,6 +595,12 @@ namespace GodotTools.Export return null; } + private static string GetBclProfileDir(string profile) + { + string templatesDir = Internal.FullTemplatesDir; + return Path.Combine(templatesDir, "bcl", profile); + } + private static string DeterminePlatformBclDir(string platform) { string templatesDir = Internal.FullTemplatesDir; @@ -590,18 +612,45 @@ namespace GodotTools.Export platformBclDir = Path.Combine(templatesDir, "bcl", profile); if (!File.Exists(Path.Combine(platformBclDir, "mscorlib.dll"))) + { + if (PlatformRequiresCustomBcl(platform)) + throw new FileNotFoundException($"Missing BCL (Base Class Library) for platform: {platform}"); + platformBclDir = null; // Use the one we're running on + } } return platformBclDir; } + /// <summary> + /// Determines whether the BCL bundled with the Godot editor can be used for the target platform, + /// or if it requires a custom BCL that must be distributed with the export templates. + /// </summary> + private static bool PlatformRequiresCustomBcl(string platform) + { + if (new[] { OS.Platforms.Android, OS.Platforms.HTML5 }.Contains(platform)) + return true; + + // The 'net_4_x' BCL is not compatible between Windows and the other platforms. + // We use the names 'net_4_x_win' and 'net_4_x' to differentiate between the two. + + bool isWinOrUwp = new[] + { + OS.Platforms.Windows, + OS.Platforms.UWP + }.Contains(platform); + + return OS.IsWindows ? !isWinOrUwp : isWinOrUwp; + } + private static string DeterminePlatformBclProfile(string platform) { switch (platform) { case OS.Platforms.Windows: case OS.Platforms.UWP: + return "net_4_x_win"; case OS.Platforms.OSX: case OS.Platforms.X11: case OS.Platforms.Server: @@ -612,7 +661,7 @@ namespace GodotTools.Export case OS.Platforms.HTML5: return "wasm"; default: - throw new NotSupportedException(); + throw new NotSupportedException($"Platform not supported: {platform}"); } } @@ -620,14 +669,14 @@ namespace GodotTools.Export { get { - var appName = (string) ProjectSettings.GetSetting("application/config/name"); + var appName = (string)ProjectSettings.GetSetting("application/config/name"); string appNameSafe = appName.ToSafeDirName(allowDirSeparator: false); return $"data_{appNameSafe}"; } } [MethodImpl(MethodImplOptions.InternalCall)] - private static extern void internal_GetExportedAssemblyDependencies(string projectDllName, string projectDllSrcPath, + private static extern void internal_GetExportedAssemblyDependencies(Godot.Collections.Dictionary<string, string> initialDependencies, string buildConfig, string customBclDir, Godot.Collections.Dictionary<string, string> dependencies); } } diff --git a/modules/mono/editor/GodotTools/GodotTools/ExternalEditorId.cs b/modules/mono/editor/GodotTools/GodotTools/ExternalEditorId.cs index 4312ca0230..bb218c2f19 100644 --- a/modules/mono/editor/GodotTools/GodotTools/ExternalEditorId.cs +++ b/modules/mono/editor/GodotTools/GodotTools/ExternalEditorId.cs @@ -6,6 +6,7 @@ namespace GodotTools VisualStudio, // TODO (Windows-only) VisualStudioForMac, // Mac-only MonoDevelop, - VsCode + VsCode, + Rider } } diff --git a/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs b/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs index 2a5d3de126..147bc95bb8 100644 --- a/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs +++ b/modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs @@ -6,8 +6,10 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; using GodotTools.Ides; +using GodotTools.Ides.Rider; using GodotTools.Internals; using GodotTools.ProjectEditor; +using JetBrains.Annotations; using static GodotTools.Internals.Globals; using File = GodotTools.Utils.File; using OS = GodotTools.Utils.OS; @@ -42,7 +44,7 @@ namespace GodotTools string resourceDir = ProjectSettings.GlobalizePath("res://"); string path = resourceDir; - string name = (string) ProjectSettings.GetSetting("application/config/name"); + string name = (string)ProjectSettings.GetSetting("application/config/name"); if (name.Empty()) name = "UnnamedProject"; @@ -59,7 +61,7 @@ namespace GodotTools { Guid = guid, PathRelativeToSolution = name + ".csproj", - Configs = new List<string> {"Debug", "Release", "Tools"} + Configs = new List<string> { "Debug", "Release", "Tools" } }; solution.AddNewProject(name, projectInfo); @@ -108,20 +110,20 @@ namespace GodotTools private void _RemoveCreateSlnMenuOption() { - menuPopup.RemoveItem(menuPopup.GetItemIndex((int) MenuOptions.CreateSln)); + menuPopup.RemoveItem(menuPopup.GetItemIndex((int)MenuOptions.CreateSln)); bottomPanelBtn.Show(); } private void _ShowAboutDialog() { - bool showOnStart = (bool) editorSettings.GetSetting("mono/editor/show_info_on_start"); + bool showOnStart = (bool)editorSettings.GetSetting("mono/editor/show_info_on_start"); aboutDialogCheckBox.Pressed = showOnStart; aboutDialog.PopupCenteredMinsize(); } private void _ToggleAboutDialogOnStart(bool enabled) { - bool showOnStart = (bool) editorSettings.GetSetting("mono/editor/show_info_on_start"); + bool showOnStart = (bool)editorSettings.GetSetting("mono/editor/show_info_on_start"); if (showOnStart != enabled) editorSettings.SetSetting("mono/editor/show_info_on_start", enabled); } @@ -158,7 +160,7 @@ namespace GodotTools if (what == NotificationReady) { - bool showInfoDialog = (bool) editorSettings.GetSetting("mono/editor/show_info_on_start"); + bool showInfoDialog = (bool)editorSettings.GetSetting("mono/editor/show_info_on_start"); if (showInfoDialog) { aboutDialog.PopupExclusive = true; @@ -189,9 +191,10 @@ namespace GodotTools "code", "code-oss", "vscode", "vscode-oss", "visual-studio-code", "visual-studio-code-oss" }; + [UsedImplicitly] public Error OpenInExternalEditor(Script script, int line, int col) { - var editor = (ExternalEditorId) editorSettings.GetSetting("mono/editor/external_editor"); + var editor = (ExternalEditorId)editorSettings.GetSetting("mono/editor/external_editor"); switch (editor) { @@ -202,6 +205,12 @@ namespace GodotTools throw new NotSupportedException(); case ExternalEditorId.VisualStudioForMac: goto case ExternalEditorId.MonoDevelop; + case ExternalEditorId.Rider: + { + string scriptPath = ProjectSettings.GlobalizePath(script.ResourcePath); + RiderPathManager.OpenFile(GodotSharpDirs.ProjectSlnPath, scriptPath, line); + return Error.Ok; + } case ExternalEditorId.MonoDevelop: { string scriptPath = ProjectSettings.GlobalizePath(script.ResourcePath); @@ -306,9 +315,10 @@ namespace GodotTools return Error.Ok; } + [UsedImplicitly] public bool OverridesExternalEditor() { - return (ExternalEditorId) editorSettings.GetSetting("mono/editor/external_editor") != ExternalEditorId.None; + return (ExternalEditorId)editorSettings.GetSetting("mono/editor/external_editor") != ExternalEditorId.None; } public override bool Build() @@ -336,7 +346,7 @@ namespace GodotTools bottomPanelBtn = AddControlToBottomPanel(BottomPanel, "Mono".TTR()); - AddChild(new HotReloadAssemblyWatcher {Name = "HotReloadAssemblyWatcher"}); + AddChild(new HotReloadAssemblyWatcher { Name = "HotReloadAssemblyWatcher" }); menuPopup = new PopupMenu(); menuPopup.Hide(); @@ -346,7 +356,7 @@ namespace GodotTools // TODO: Remove or edit this info dialog once Mono support is no longer in alpha { - menuPopup.AddItem("About C# support".TTR(), (int) MenuOptions.AboutCSharp); + menuPopup.AddItem("About C# support".TTR(), (int)MenuOptions.AboutCSharp); aboutDialog = new AcceptDialog(); editorBaseControl.AddChild(aboutDialog); aboutDialog.WindowTitle = "Important: C# support is not feature-complete"; @@ -369,7 +379,7 @@ namespace GodotTools var aboutLabel = new Label(); aboutHBox.AddChild(aboutLabel); aboutLabel.RectMinSize = new Vector2(600, 150) * EditorScale; - aboutLabel.SizeFlagsVertical = (int) Control.SizeFlags.ExpandFill; + aboutLabel.SizeFlagsVertical = (int)Control.SizeFlags.ExpandFill; aboutLabel.Autowrap = true; aboutLabel.Text = "C# support in Godot Engine is in late alpha stage and, while already usable, " + @@ -384,7 +394,7 @@ namespace GodotTools EditorDef("mono/editor/show_info_on_start", true); // CheckBox in main container - aboutDialogCheckBox = new CheckBox {Text = "Show this warning when starting the editor"}; + aboutDialogCheckBox = new CheckBox { Text = "Show this warning when starting the editor" }; aboutDialogCheckBox.Connect("toggled", this, nameof(_ToggleAboutDialogOnStart)); aboutVBox.AddChild(aboutDialogCheckBox); } @@ -397,7 +407,7 @@ namespace GodotTools else { bottomPanelBtn.Hide(); - menuPopup.AddItem("Create C# solution".TTR(), (int) MenuOptions.CreateSln); + menuPopup.AddItem("Create C# solution".TTR(), (int)MenuOptions.CreateSln); } menuPopup.Connect("id_pressed", this, nameof(_MenuOptionPressed)); @@ -418,19 +428,22 @@ namespace GodotTools if (OS.IsWindows) { - settingsHintStr += $",MonoDevelop:{(int) ExternalEditorId.MonoDevelop}" + - $",Visual Studio Code:{(int) ExternalEditorId.VsCode}"; + settingsHintStr += $",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" + + $",Visual Studio Code:{(int)ExternalEditorId.VsCode}" + + $",JetBrains Rider:{(int)ExternalEditorId.Rider}"; } else if (OS.IsOSX) { - settingsHintStr += $",Visual Studio:{(int) ExternalEditorId.VisualStudioForMac}" + - $",MonoDevelop:{(int) ExternalEditorId.MonoDevelop}" + - $",Visual Studio Code:{(int) ExternalEditorId.VsCode}"; + settingsHintStr += $",Visual Studio:{(int)ExternalEditorId.VisualStudioForMac}" + + $",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" + + $",Visual Studio Code:{(int)ExternalEditorId.VsCode}" + + $",JetBrains Rider:{(int)ExternalEditorId.Rider}"; } else if (OS.IsUnixLike()) { - settingsHintStr += $",MonoDevelop:{(int) ExternalEditorId.MonoDevelop}" + - $",Visual Studio Code:{(int) ExternalEditorId.VsCode}"; + settingsHintStr += $",MonoDevelop:{(int)ExternalEditorId.MonoDevelop}" + + $",Visual Studio Code:{(int)ExternalEditorId.VsCode}" + + $",JetBrains Rider:{(int)ExternalEditorId.Rider}"; } editorSettings.AddPropertyInfo(new Godot.Collections.Dictionary @@ -448,6 +461,7 @@ namespace GodotTools exportPluginWeak = WeakRef(exportPlugin); BuildManager.Initialize(); + RiderPathManager.Initialize(); GodotIdeManager = new GodotIdeManager(); AddChild(GodotIdeManager); diff --git a/modules/mono/editor/GodotTools/GodotTools/GodotTools.csproj b/modules/mono/editor/GodotTools/GodotTools/GodotTools.csproj index fb2cbabc8e..618527f916 100644 --- a/modules/mono/editor/GodotTools/GodotTools/GodotTools.csproj +++ b/modules/mono/editor/GodotTools/GodotTools/GodotTools.csproj @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> @@ -9,6 +9,7 @@ <AssemblyName>GodotTools</AssemblyName> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <GodotSourceRootPath>$(SolutionDir)/../../../../</GodotSourceRootPath> + <DataDirToolsOutputPath>$(GodotSourceRootPath)/bin/GodotSharp/Tools</DataDirToolsOutputPath> <GodotApiConfiguration>Debug</GodotApiConfiguration> <LangVersion>7</LangVersion> </PropertyGroup> @@ -30,13 +31,22 @@ <ConsolePause>false</ConsolePause> </PropertyGroup> <ItemGroup> - <Reference Include="Mono.Posix" /> + <Reference Include="JetBrains.Annotations, Version=2019.1.3.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325"> + <HintPath>..\packages\JetBrains.Annotations.2019.1.3\lib\net20\JetBrains.Annotations.dll</HintPath> + <Private>True</Private> + </Reference> + <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed"> + <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath> + <Private>True</Private> + </Reference> <Reference Include="System" /> <Reference Include="GodotSharp"> <HintPath>$(GodotSourceRootPath)/bin/GodotSharp/Api/$(GodotApiConfiguration)/GodotSharp.dll</HintPath> + <Private>False</Private> </Reference> <Reference Include="GodotSharpEditor"> <HintPath>$(GodotSourceRootPath)/bin/GodotSharp/Api/$(GodotApiConfiguration)/GodotSharpEditor.dll</HintPath> + <Private>False</Private> </Reference> </ItemGroup> <ItemGroup> @@ -47,7 +57,8 @@ <Compile Include="Ides\GodotIdeServer.cs" /> <Compile Include="Ides\MonoDevelop\EditorId.cs" /> <Compile Include="Ides\MonoDevelop\Instance.cs" /> - <Compile Include="Internals\BindingsGenerator.cs" /> + <Compile Include="Ides\Rider\RiderPathLocator.cs" /> + <Compile Include="Ides\Rider\RiderPathManager.cs" /> <Compile Include="Internals\EditorProgress.cs" /> <Compile Include="Internals\GodotSharpDirs.cs" /> <Compile Include="Internals\Internal.cs" /> @@ -67,6 +78,7 @@ <Compile Include="BottomPanel.cs" /> <Compile Include="CsProjOperations.cs" /> <Compile Include="Utils\CollectionExtensions.cs" /> + <Compile Include="Utils\User32Dll.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\GodotTools.BuildLogger\GodotTools.BuildLogger.csproj"> @@ -86,5 +98,24 @@ <Name>GodotTools.Core</Name> </ProjectReference> </ItemGroup> + <ItemGroup> + <None Include="packages.config" /> + </ItemGroup> + <Target Name="CopyToDataDir" AfterTargets="Build"> + <ItemGroup> + <GodotToolsCopy Include="$(OutputPath)\GodotTools*.dll" /> + <GodotToolsCopy Include="$(OutputPath)\Newtonsoft.Json.dll" /> + <GodotToolsCopy Include="$(OutputPath)\DotNet.Glob.dll" /> + </ItemGroup> + <ItemGroup Condition=" '$(Configuration)' == 'Debug' "> + <GodotToolsCopy Include="$(OutputPath)\GodotTools*.pdb" /> + </ItemGroup> + <Copy SourceFiles="@(GodotToolsCopy)" DestinationFolder="$(DataDirToolsOutputPath)" ContinueOnError="false" /> + </Target> + <Target Name="BuildAlwaysCopyToDataDir"> + <!-- Custom target run by SCons to make sure the CopyToDataDir target is always executed, without having to use DisableFastUpToDateCheck --> + <CallTarget Targets="Build" /> + <CallTarget Targets="CopyToDataDir" /> + </Target> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> -</Project>
\ No newline at end of file +</Project> diff --git a/modules/mono/editor/GodotTools/GodotTools/HotReloadAssemblyWatcher.cs b/modules/mono/editor/GodotTools/GodotTools/HotReloadAssemblyWatcher.cs index 0f6f5ffadc..0ed567afd1 100644 --- a/modules/mono/editor/GodotTools/GodotTools/HotReloadAssemblyWatcher.cs +++ b/modules/mono/editor/GodotTools/GodotTools/HotReloadAssemblyWatcher.cs @@ -38,7 +38,7 @@ namespace GodotTools watchTimer = new Timer { OneShot = false, - WaitTime = (float) EditorDef("mono/assembly_watch_interval_sec", 0.5) + WaitTime = (float)EditorDef("mono/assembly_watch_interval_sec", 0.5) }; watchTimer.Connect("timeout", this, nameof(TimerTimeout)); AddChild(watchTimer); diff --git a/modules/mono/editor/GodotTools/GodotTools/Ides/GodotIdeManager.cs b/modules/mono/editor/GodotTools/GodotTools/Ides/GodotIdeManager.cs index f94d6f998c..54f0ffab96 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Ides/GodotIdeManager.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Ides/GodotIdeManager.cs @@ -64,7 +64,7 @@ namespace GodotTools.Ides private void LaunchIde() { - var editor = (ExternalEditorId) GodotSharpEditor.Instance.GetEditorInterface() + var editor = (ExternalEditorId)GodotSharpEditor.Instance.GetEditorInterface() .GetEditorSettings().GetSetting("mono/editor/external_editor"); switch (editor) @@ -72,6 +72,7 @@ namespace GodotTools.Ides case ExternalEditorId.None: case ExternalEditorId.VisualStudio: case ExternalEditorId.VsCode: + case ExternalEditorId.Rider: throw new NotSupportedException(); case ExternalEditorId.VisualStudioForMac: goto case ExternalEditorId.MonoDevelop; diff --git a/modules/mono/editor/GodotTools/GodotTools/Ides/GodotIdeServer.cs b/modules/mono/editor/GodotTools/GodotTools/Ides/GodotIdeServer.cs index 309b917c71..72676a8b24 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Ides/GodotIdeServer.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Ides/GodotIdeServer.cs @@ -45,7 +45,7 @@ namespace GodotTools.Ides listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, port: 0)); listener.Start(); - int port = ((IPEndPoint) listener.Server.LocalEndPoint).Port; + int port = ((IPEndPoint)listener.Server.LocalEndPoint).Port; using (var metaFileWriter = new StreamWriter(metaFile, Encoding.UTF8)) { metaFileWriter.WriteLine(port); @@ -57,7 +57,7 @@ namespace GodotTools.Ides public void StartServer() { - var serverThread = new Thread(RunServerThread) {Name = "Godot Ide Connection Server"}; + var serverThread = new Thread(RunServerThread) { Name = "Godot Ide Connection Server" }; serverThread.Start(); } diff --git a/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathLocator.cs b/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathLocator.cs new file mode 100644 index 0000000000..9038333d38 --- /dev/null +++ b/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathLocator.cs @@ -0,0 +1,418 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Godot; +using JetBrains.Annotations; +using Microsoft.Win32; +using Newtonsoft.Json; +using Directory = System.IO.Directory; +using Environment = System.Environment; +using File = System.IO.File; +using Path = System.IO.Path; +using OS = GodotTools.Utils.OS; + +namespace GodotTools.Ides.Rider +{ + /// <summary> + /// This code is a modified version of the JetBrains resharper-unity plugin listed under Apache License 2.0 license: + /// https://github.com/JetBrains/resharper-unity/blob/master/unity/JetBrains.Rider.Unity.Editor/EditorPlugin/RiderPathLocator.cs + /// </summary> + public static class RiderPathLocator + { + public static RiderInfo[] GetAllRiderPaths() + { + try + { + if (OS.IsWindows) + { + return CollectRiderInfosWindows(); + } + if (OS.IsOSX) + { + return CollectRiderInfosMac(); + } + if (OS.IsUnixLike()) + { + return CollectAllRiderPathsLinux(); + } + throw new Exception("Unexpected OS."); + } + catch (Exception e) + { + GD.PushWarning(e.Message); + } + + return new RiderInfo[0]; + } + + private static RiderInfo[] CollectAllRiderPathsLinux() + { + var installInfos = new List<RiderInfo>(); + var home = Environment.GetEnvironmentVariable("HOME"); + if (!string.IsNullOrEmpty(home)) + { + var toolboxRiderRootPath = GetToolboxBaseDir(); + installInfos.AddRange(CollectPathsFromToolbox(toolboxRiderRootPath, "bin", "rider.sh", false) + .Select(a => new RiderInfo(a, true)).ToList()); + + //$Home/.local/share/applications/jetbrains-rider.desktop + var shortcut = new FileInfo(Path.Combine(home, @".local/share/applications/jetbrains-rider.desktop")); + + if (shortcut.Exists) + { + var lines = File.ReadAllLines(shortcut.FullName); + foreach (var line in lines) + { + if (!line.StartsWith("Exec=\"")) + continue; + var path = line.Split('"').Where((item, index) => index == 1).SingleOrDefault(); + if (string.IsNullOrEmpty(path)) + continue; + + if (installInfos.Any(a => a.Path == path)) // avoid adding similar build as from toolbox + continue; + installInfos.Add(new RiderInfo(path, false)); + } + } + } + + // snap install + var snapInstallPath = "/snap/rider/current/bin/rider.sh"; + if (new FileInfo(snapInstallPath).Exists) + installInfos.Add(new RiderInfo(snapInstallPath, false)); + + return installInfos.ToArray(); + } + + private static RiderInfo[] CollectRiderInfosMac() + { + var installInfos = new List<RiderInfo>(); + // "/Applications/*Rider*.app" + // should be combined with "Contents/MacOS/rider" + var folder = new DirectoryInfo("/Applications"); + if (folder.Exists) + { + installInfos.AddRange(folder.GetDirectories("*Rider*.app") + .Select(a => new RiderInfo(Path.Combine(a.FullName, "Contents/MacOS/rider"), false)) + .ToList()); + } + + // /Users/user/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-1/181.3870.267/Rider EAP.app + // should be combined with "Contents/MacOS/rider" + var toolboxRiderRootPath = GetToolboxBaseDir(); + var paths = CollectPathsFromToolbox(toolboxRiderRootPath, "", "Rider*.app", true) + .Select(a => new RiderInfo(Path.Combine(a, "Contents/MacOS/rider"), true)); + installInfos.AddRange(paths); + + return installInfos.ToArray(); + } + + private static RiderInfo[] CollectRiderInfosWindows() + { + var installInfos = new List<RiderInfo>(); + var toolboxRiderRootPath = GetToolboxBaseDir(); + var installPathsToolbox = CollectPathsFromToolbox(toolboxRiderRootPath, "bin", "rider64.exe", false).ToList(); + installInfos.AddRange(installPathsToolbox.Select(a => new RiderInfo(a, true)).ToList()); + + var installPaths = new List<string>(); + const string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; + CollectPathsFromRegistry(registryKey, installPaths); + const string wowRegistryKey = @"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"; + CollectPathsFromRegistry(wowRegistryKey, installPaths); + + installInfos.AddRange(installPaths.Select(a => new RiderInfo(a, false)).ToList()); + + return installInfos.ToArray(); + } + + private static string GetToolboxBaseDir() + { + if (OS.IsWindows) + { + var localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + return Path.Combine(localAppData, @"JetBrains\Toolbox\apps\Rider"); + } + + if (OS.IsOSX) + { + var home = Environment.GetEnvironmentVariable("HOME"); + if (!string.IsNullOrEmpty(home)) + { + return Path.Combine(home, @"Library/Application Support/JetBrains/Toolbox/apps/Rider"); + } + } + + if (OS.IsUnixLike()) + { + var home = Environment.GetEnvironmentVariable("HOME"); + if (!string.IsNullOrEmpty(home)) + { + return Path.Combine(home, @".local/share/JetBrains/Toolbox/apps/Rider"); + } + } + + throw new Exception("Unexpected OS."); + } + + internal static ProductInfo GetBuildVersion(string path) + { + var buildTxtFileInfo = new FileInfo(Path.Combine(path, GetRelativePathToBuildTxt())); + var dir = buildTxtFileInfo.DirectoryName; + if (!Directory.Exists(dir)) + return null; + var buildVersionFile = new FileInfo(Path.Combine(dir, "product-info.json")); + if (!buildVersionFile.Exists) + return null; + var json = File.ReadAllText(buildVersionFile.FullName); + return ProductInfo.GetProductInfo(json); + } + + internal static Version GetBuildNumber(string path) + { + var file = new FileInfo(Path.Combine(path, GetRelativePathToBuildTxt())); + if (!file.Exists) + return null; + var text = File.ReadAllText(file.FullName); + if (text.Length <= 3) + return null; + + var versionText = text.Substring(3); + return Version.TryParse(versionText, out var v) ? v : null; + } + + internal static bool IsToolbox(string path) + { + return path.StartsWith(GetToolboxBaseDir()); + } + + private static string GetRelativePathToBuildTxt() + { + if (OS.IsWindows || OS.IsUnixLike()) + return "../../build.txt"; + if (OS.IsOSX) + return "Contents/Resources/build.txt"; + throw new Exception("Unknown OS."); + } + + private static void CollectPathsFromRegistry(string registryKey, List<string> installPaths) + { + using (var key = Registry.LocalMachine.OpenSubKey(registryKey)) + { + if (key == null) return; + foreach (var subkeyName in key.GetSubKeyNames().Where(a => a.Contains("Rider"))) + { + using (var subkey = key.OpenSubKey(subkeyName)) + { + var folderObject = subkey?.GetValue("InstallLocation"); + if (folderObject == null) continue; + var folder = folderObject.ToString(); + var possiblePath = Path.Combine(folder, @"bin\rider64.exe"); + if (File.Exists(possiblePath)) + installPaths.Add(possiblePath); + } + } + } + } + + private static string[] CollectPathsFromToolbox(string toolboxRiderRootPath, string dirName, string searchPattern, + bool isMac) + { + if (!Directory.Exists(toolboxRiderRootPath)) + return new string[0]; + + var channelDirs = Directory.GetDirectories(toolboxRiderRootPath); + var paths = channelDirs.SelectMany(channelDir => + { + try + { + // use history.json - last entry stands for the active build https://jetbrains.slack.com/archives/C07KNP99D/p1547807024066500?thread_ts=1547731708.057700&cid=C07KNP99D + var historyFile = Path.Combine(channelDir, ".history.json"); + if (File.Exists(historyFile)) + { + var json = File.ReadAllText(historyFile); + var build = ToolboxHistory.GetLatestBuildFromJson(json); + if (build != null) + { + var buildDir = Path.Combine(channelDir, build); + var executablePaths = GetExecutablePaths(dirName, searchPattern, isMac, buildDir); + if (executablePaths.Any()) + return executablePaths; + } + } + + var channelFile = Path.Combine(channelDir, ".channel.settings.json"); + if (File.Exists(channelFile)) + { + var json = File.ReadAllText(channelFile).Replace("active-application", "active_application"); + var build = ToolboxInstallData.GetLatestBuildFromJson(json); + if (build != null) + { + var buildDir = Path.Combine(channelDir, build); + var executablePaths = GetExecutablePaths(dirName, searchPattern, isMac, buildDir); + if (executablePaths.Any()) + return executablePaths; + } + } + + // changes in toolbox json files format may brake the logic above, so return all found Rider installations + return Directory.GetDirectories(channelDir) + .SelectMany(buildDir => GetExecutablePaths(dirName, searchPattern, isMac, buildDir)); + } + catch (Exception e) + { + // do not write to Debug.Log, just log it. + Logger.Warn($"Failed to get RiderPath from {channelDir}", e); + } + + return new string[0]; + }) + .Where(c => !string.IsNullOrEmpty(c)) + .ToArray(); + return paths; + } + + private static string[] GetExecutablePaths(string dirName, string searchPattern, bool isMac, string buildDir) + { + var folder = new DirectoryInfo(Path.Combine(buildDir, dirName)); + if (!folder.Exists) + return new string[0]; + + if (!isMac) + return new[] { Path.Combine(folder.FullName, searchPattern) }.Where(File.Exists).ToArray(); + return folder.GetDirectories(searchPattern).Select(f => f.FullName) + .Where(Directory.Exists).ToArray(); + } + + // Disable the "field is never assigned" compiler warning. We never assign it, but Unity does. + // Note that Unity disable this warning in the generated C# projects +#pragma warning disable 0649 + + [Serializable] + class ToolboxHistory + { + public List<ItemNode> history; + + public static string GetLatestBuildFromJson(string json) + { + try + { + return JsonConvert.DeserializeObject<ToolboxHistory>(json).history.LastOrDefault()?.item.build; + } + catch (Exception) + { + Logger.Warn($"Failed to get latest build from json {json}"); + } + + return null; + } + } + + [Serializable] + class ItemNode + { + public BuildNode item; + } + + [Serializable] + class BuildNode + { + public string build; + } + + [Serializable] + public class ProductInfo + { + public string version; + public string versionSuffix; + + [CanBeNull] + internal static ProductInfo GetProductInfo(string json) + { + try + { + var productInfo = JsonConvert.DeserializeObject<ProductInfo>(json); + return productInfo; + } + catch (Exception) + { + Logger.Warn($"Failed to get version from json {json}"); + } + + return null; + } + } + + // ReSharper disable once ClassNeverInstantiated.Global + [Serializable] + class ToolboxInstallData + { + // ReSharper disable once InconsistentNaming + public ActiveApplication active_application; + + [CanBeNull] + public static string GetLatestBuildFromJson(string json) + { + try + { + var toolbox = JsonConvert.DeserializeObject<ToolboxInstallData>(json); + var builds = toolbox.active_application.builds; + if (builds != null && builds.Any()) + return builds.First(); + } + catch (Exception) + { + Logger.Warn($"Failed to get latest build from json {json}"); + } + + return null; + } + } + + [Serializable] + class ActiveApplication + { + // ReSharper disable once InconsistentNaming + public List<string> builds; + } + +#pragma warning restore 0649 + + public struct RiderInfo + { + public bool IsToolbox; + public string Presentation; + public Version BuildNumber; + public ProductInfo ProductInfo; + public string Path; + + public RiderInfo(string path, bool isToolbox) + { + BuildNumber = GetBuildNumber(path); + ProductInfo = GetBuildVersion(path); + Path = new FileInfo(path).FullName; // normalize separators + var presentation = $"Rider {BuildNumber}"; + + if (ProductInfo != null && !string.IsNullOrEmpty(ProductInfo.version)) + { + var suffix = string.IsNullOrEmpty(ProductInfo.versionSuffix) ? "" : $" {ProductInfo.versionSuffix}"; + presentation = $"Rider {ProductInfo.version}{suffix}"; + } + + if (isToolbox) + presentation += " (JetBrains Toolbox)"; + + Presentation = presentation; + IsToolbox = isToolbox; + } + } + + private static class Logger + { + internal static void Warn(string message, Exception e = null) + { + throw new Exception(message, e); + } + } + } +} diff --git a/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathManager.cs b/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathManager.cs new file mode 100644 index 0000000000..558a242bf9 --- /dev/null +++ b/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathManager.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Godot; +using GodotTools.Internals; + +namespace GodotTools.Ides.Rider +{ + public static class RiderPathManager + { + private static readonly string editorPathSettingName = "mono/editor/editor_path_optional"; + + private static string GetRiderPathFromSettings() + { + var editorSettings = GodotSharpEditor.Instance.GetEditorInterface().GetEditorSettings(); + if (editorSettings.HasSetting(editorPathSettingName)) + return (string)editorSettings.GetSetting(editorPathSettingName); + return null; + } + + public static void Initialize() + { + var editorSettings = GodotSharpEditor.Instance.GetEditorInterface().GetEditorSettings(); + var editor = (ExternalEditorId)editorSettings.GetSetting("mono/editor/external_editor"); + if (editor == ExternalEditorId.Rider) + { + if (!editorSettings.HasSetting(editorPathSettingName)) + { + Globals.EditorDef(editorPathSettingName, "Optional"); + editorSettings.AddPropertyInfo(new Godot.Collections.Dictionary + { + ["type"] = Variant.Type.String, + ["name"] = editorPathSettingName, + ["hint"] = PropertyHint.File, + ["hint_string"] = "" + }); + } + + var riderPath = (string)editorSettings.GetSetting(editorPathSettingName); + if (IsRiderAndExists(riderPath)) + { + Globals.EditorDef(editorPathSettingName, riderPath); + return; + } + + var paths = RiderPathLocator.GetAllRiderPaths(); + + if (!paths.Any()) + return; + + var newPath = paths.Last().Path; + Globals.EditorDef(editorPathSettingName, newPath); + editorSettings.SetSetting(editorPathSettingName, newPath); + } + } + + private static bool IsRider(string path) + { + if (string.IsNullOrEmpty(path)) + { + return false; + } + + var fileInfo = new FileInfo(path); + var filename = fileInfo.Name.ToLowerInvariant(); + return filename.StartsWith("rider", StringComparison.Ordinal); + } + + private static string CheckAndUpdatePath(string riderPath) + { + if (IsRiderAndExists(riderPath)) + { + return riderPath; + } + + var editorSettings = GodotSharpEditor.Instance.GetEditorInterface().GetEditorSettings(); + var paths = RiderPathLocator.GetAllRiderPaths(); + + if (!paths.Any()) + return null; + + var newPath = paths.Last().Path; + editorSettings.SetSetting(editorPathSettingName, newPath); + Globals.EditorDef(editorPathSettingName, newPath); + return newPath; + } + + private static bool IsRiderAndExists(string riderPath) + { + return !string.IsNullOrEmpty(riderPath) && IsRider(riderPath) && new FileInfo(riderPath).Exists; + } + + public static void OpenFile(string slnPath, string scriptPath, int line) + { + var pathFromSettings = GetRiderPathFromSettings(); + var path = CheckAndUpdatePath(pathFromSettings); + + var args = new List<string>(); + args.Add(slnPath); + if (line >= 0) + { + args.Add("--line"); + args.Add(line.ToString()); + } + args.Add(scriptPath); + try + { + Utils.OS.RunProcess(path, args); + } + catch (Exception e) + { + GD.PushError($"Error when trying to run code editor: JetBrains Rider. Exception message: '{e.Message}'"); + } + } + } +} diff --git a/modules/mono/editor/GodotTools/GodotTools/Internals/BindingsGenerator.cs b/modules/mono/editor/GodotTools/GodotTools/Internals/BindingsGenerator.cs deleted file mode 100644 index 1daa5e138e..0000000000 --- a/modules/mono/editor/GodotTools/GodotTools/Internals/BindingsGenerator.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace GodotTools.Internals -{ - public class BindingsGenerator : IDisposable - { - class BindingsGeneratorSafeHandle : SafeHandle - { - public BindingsGeneratorSafeHandle(IntPtr handle) : base(IntPtr.Zero, true) - { - this.handle = handle; - } - - public override bool IsInvalid => handle == IntPtr.Zero; - - protected override bool ReleaseHandle() - { - internal_Dtor(handle); - return true; - } - } - - private BindingsGeneratorSafeHandle safeHandle; - private bool disposed = false; - - public bool LogPrintEnabled - { - get => internal_LogPrintEnabled(GetPtr()); - set => internal_SetLogPrintEnabled(GetPtr(), value); - } - - public static uint Version => internal_Version(); - public static uint CsGlueVersion => internal_CsGlueVersion(); - - public Godot.Error GenerateCsApi(string outputDir) => internal_GenerateCsApi(GetPtr(), outputDir); - - internal IntPtr GetPtr() - { - if (disposed) - throw new ObjectDisposedException(GetType().FullName); - - return safeHandle.DangerousGetHandle(); - } - - public void Dispose() - { - if (disposed) - return; - - if (safeHandle != null && !safeHandle.IsInvalid) - { - safeHandle.Dispose(); - safeHandle = null; - } - - disposed = true; - } - - public BindingsGenerator() - { - safeHandle = new BindingsGeneratorSafeHandle(internal_Ctor()); - } - - [MethodImpl(MethodImplOptions.InternalCall)] - private static extern IntPtr internal_Ctor(); - - [MethodImpl(MethodImplOptions.InternalCall)] - private static extern void internal_Dtor(IntPtr handle); - - [MethodImpl(MethodImplOptions.InternalCall)] - private static extern bool internal_LogPrintEnabled(IntPtr handle); - - [MethodImpl(MethodImplOptions.InternalCall)] - private static extern void internal_SetLogPrintEnabled(IntPtr handle, bool enabled); - - [MethodImpl(MethodImplOptions.InternalCall)] - private static extern Godot.Error internal_GenerateCsApi(IntPtr handle, string outputDir); - - [MethodImpl(MethodImplOptions.InternalCall)] - private static extern uint internal_Version(); - - [MethodImpl(MethodImplOptions.InternalCall)] - private static extern uint internal_CsGlueVersion(); - } -} diff --git a/modules/mono/editor/GodotTools/GodotTools/Internals/GodotSharpDirs.cs b/modules/mono/editor/GodotTools/GodotTools/Internals/GodotSharpDirs.cs index ddf3b829b5..6893bc1974 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Internals/GodotSharpDirs.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Internals/GodotSharpDirs.cs @@ -33,10 +33,10 @@ namespace GodotTools.Internals #region Windows-only public static string DataMonoBinDir => internal_DataMonoBinDir(); #endregion - - + + #region Internal - + [MethodImpl(MethodImplOptions.InternalCall)] private static extern string internal_ResDataDir(); [MethodImpl(MethodImplOptions.InternalCall)] @@ -85,7 +85,7 @@ namespace GodotTools.Internals [MethodImpl(MethodImplOptions.InternalCall)] private static extern string internal_DataMonoBinDir(); #endregion - + #endregion } } diff --git a/modules/mono/editor/GodotTools/GodotTools/Internals/ScriptClassParser.cs b/modules/mono/editor/GodotTools/GodotTools/Internals/ScriptClassParser.cs index 2497d276a9..80e45b3a3c 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Internals/ScriptClassParser.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Internals/ScriptClassParser.cs @@ -39,10 +39,10 @@ namespace GodotTools.Internals foreach (var classDeclDict in classesArray) { classesList.Add(new ClassDecl( - (string) classDeclDict["name"], - (string) classDeclDict["namespace"], - (bool) classDeclDict["nested"], - (int) classDeclDict["base_count"] + (string)classDeclDict["name"], + (string)classDeclDict["namespace"], + (bool)classDeclDict["nested"], + (int)classDeclDict["base_count"] )); } diff --git a/modules/mono/editor/GodotTools/GodotTools/Utils/OS.cs b/modules/mono/editor/GodotTools/GodotTools/Utils/OS.cs index 1a8c26acd7..279e67b3eb 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Utils/OS.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Utils/OS.cs @@ -5,7 +5,6 @@ using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Runtime.CompilerServices; -using Mono.Unix.Native; namespace GodotTools.Utils { @@ -15,6 +14,9 @@ namespace GodotTools.Utils [MethodImpl(MethodImplOptions.InternalCall)] static extern string GetPlatformName(); + [MethodImpl(MethodImplOptions.InternalCall)] + static extern bool UnixFileHasExecutableAccess(string filePath); + public static class Names { public const string Windows = "Windows"; @@ -65,7 +67,7 @@ namespace GodotTools.Utils private static readonly Lazy<bool> _isAndroid = new Lazy<bool>(() => IsOS(Names.Android)); private static readonly Lazy<bool> _isHTML5 = new Lazy<bool>(() => IsOS(Names.HTML5)); - public static bool IsWindows => _isWindows.Value; + public static bool IsWindows => _isWindows.Value || IsUWP; public static bool IsOSX => _isOSX.Value; public static bool IsX11 => _isX11.Value; public static bool IsServer => _isServer.Value; @@ -75,7 +77,7 @@ namespace GodotTools.Utils public static bool IsHTML5 => _isHTML5.Value; private static bool? _isUnixCache; - private static readonly string[] UnixLikePlatforms = {Names.OSX, Names.X11, Names.Server, Names.Haiku, Names.Android}; + private static readonly string[] UnixLikePlatforms = { Names.OSX, Names.X11, Names.Server, Names.Haiku, Names.Android }; public static bool IsUnixLike() { @@ -105,7 +107,7 @@ namespace GodotTools.Utils searchDirs.AddRange(pathDirs); string nameExt = Path.GetExtension(name); - bool hasPathExt = string.IsNullOrEmpty(nameExt) || windowsExts.Contains(nameExt, StringComparer.OrdinalIgnoreCase); + bool hasPathExt = !string.IsNullOrEmpty(nameExt) && windowsExts.Contains(nameExt, StringComparer.OrdinalIgnoreCase); searchDirs.Add(System.IO.Directory.GetCurrentDirectory()); // last in the list @@ -113,10 +115,10 @@ namespace GodotTools.Utils return searchDirs.Select(dir => Path.Combine(dir, name)).FirstOrDefault(File.Exists); return (from dir in searchDirs - select Path.Combine(dir, name) + select Path.Combine(dir, name) into path - from ext in windowsExts - select path + ext).FirstOrDefault(File.Exists); + from ext in windowsExts + select path + ext).FirstOrDefault(File.Exists); } private static string PathWhichUnix(string name) @@ -131,7 +133,7 @@ namespace GodotTools.Utils searchDirs.Add(System.IO.Directory.GetCurrentDirectory()); // last in the list return searchDirs.Select(dir => Path.Combine(dir, name)) - .FirstOrDefault(path => File.Exists(path) && Syscall.access(path, AccessModes.X_OK) == 0); + .FirstOrDefault(path => File.Exists(path) && UnixFileHasExecutableAccess(path)); } public static void RunProcess(string command, IEnumerable<string> arguments) @@ -157,6 +159,8 @@ namespace GodotTools.Utils process.BeginOutputReadLine(); process.BeginErrorReadLine(); + if (IsWindows && process.Id > 0) + User32Dll.AllowSetForegroundWindow(process.Id); // allows application to focus itself } } } diff --git a/modules/mono/editor/GodotTools/GodotTools/Utils/User32Dll.cs b/modules/mono/editor/GodotTools/GodotTools/Utils/User32Dll.cs new file mode 100644 index 0000000000..6810a991b3 --- /dev/null +++ b/modules/mono/editor/GodotTools/GodotTools/Utils/User32Dll.cs @@ -0,0 +1,10 @@ +using System.Runtime.InteropServices; + +namespace GodotTools.Utils +{ + public static class User32Dll + { + [DllImport("user32.dll")] + public static extern bool AllowSetForegroundWindow(int dwProcessId); + } +} diff --git a/modules/mono/editor/GodotTools/GodotTools/packages.config b/modules/mono/editor/GodotTools/GodotTools/packages.config new file mode 100644 index 0000000000..dd3de2865a --- /dev/null +++ b/modules/mono/editor/GodotTools/GodotTools/packages.config @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="JetBrains.Annotations" version="2019.1.3" targetFramework="net45" /> + <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net45" /> +</packages> diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp index 2252f7676d..5b135e97e9 100644 --- a/modules/mono/editor/bindings_generator.cpp +++ b/modules/mono/editor/bindings_generator.cpp @@ -40,7 +40,6 @@ #include "core/os/os.h" #include "core/ucaps.h" -#include "../glue/cs_compressed.gen.h" #include "../glue/cs_glue_version.gen.h" #include "../godotsharp_defs.h" #include "../mono_gd/gd_mono_marshal.h" @@ -874,7 +873,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) { p_output.append("\n#pragma warning restore CS1591\n"); } -Error BindingsGenerator::generate_cs_core_project(const String &p_proj_dir, Vector<String> &r_compile_items) { +Error BindingsGenerator::generate_cs_core_project(const String &p_proj_dir) { ERR_FAIL_COND_V(!initialized, ERR_UNCONFIGURED); @@ -887,22 +886,24 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_proj_dir, Vect } da->change_dir(p_proj_dir); - da->make_dir("Core"); - da->make_dir("ObjectType"); + da->make_dir("Generated"); + da->make_dir("Generated/GodotObjects"); - String core_dir = path::join(p_proj_dir, "Core"); - String obj_type_dir = path::join(p_proj_dir, "ObjectType"); + String base_gen_dir = path::join(p_proj_dir, "Generated"); + String godot_objects_gen_dir = path::join(base_gen_dir, "GodotObjects"); + + Vector<String> compile_items; // Generate source file for global scope constants and enums { StringBuilder constants_source; _generate_global_constants(constants_source); - String output_file = path::join(core_dir, BINDINGS_GLOBAL_SCOPE_CLASS "_constants.cs"); + String output_file = path::join(base_gen_dir, BINDINGS_GLOBAL_SCOPE_CLASS "_constants.cs"); Error save_err = _save_file(output_file, constants_source); if (save_err != OK) return save_err; - r_compile_items.push_back(output_file); + compile_items.push_back(output_file); } for (OrderedHashMap<StringName, TypeInterface>::Element E = obj_types.front(); E; E = E.next()) { @@ -911,7 +912,7 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_proj_dir, Vect if (itype.api_type == ClassDB::API_EDITOR) continue; - String output_file = path::join(obj_type_dir, itype.proxy_name + ".cs"); + String output_file = path::join(godot_objects_gen_dir, itype.proxy_name + ".cs"); Error err = _generate_cs_type(itype, output_file); if (err == ERR_SKIP) @@ -920,39 +921,11 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_proj_dir, Vect if (err != OK) return err; - r_compile_items.push_back(output_file); + compile_items.push_back(output_file); } // Generate sources from compressed files - Map<String, GodotCsCompressedFile> compressed_files; - get_compressed_files(compressed_files); - - for (Map<String, GodotCsCompressedFile>::Element *E = compressed_files.front(); E; E = E->next()) { - const String &file_name = E->key(); - const GodotCsCompressedFile &file_data = E->value(); - - String output_file = path::join(core_dir, file_name); - - Vector<uint8_t> data; - data.resize(file_data.uncompressed_size); - Compression::decompress(data.ptrw(), file_data.uncompressed_size, file_data.data, file_data.compressed_size, Compression::MODE_DEFLATE); - - String output_dir = output_file.get_base_dir(); - - if (!DirAccess::exists(output_dir)) { - Error err = da->make_dir_recursive(ProjectSettings::get_singleton()->globalize_path(output_dir)); - ERR_FAIL_COND_V(err != OK, ERR_CANT_CREATE); - } - - FileAccessRef file = FileAccess::open(output_file, FileAccess::WRITE); - ERR_FAIL_COND_V(!file, ERR_FILE_CANT_WRITE); - file->store_buffer(data.ptr(), data.size()); - file->close(); - - r_compile_items.push_back(output_file); - } - StringBuilder cs_icalls_content; cs_icalls_content.append("using System;\n" @@ -986,18 +959,36 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_proj_dir, Vect cs_icalls_content.append(INDENT1 CLOSE_BLOCK CLOSE_BLOCK); - String internal_methods_file = path::join(core_dir, BINDINGS_CLASS_NATIVECALLS ".cs"); + String internal_methods_file = path::join(base_gen_dir, BINDINGS_CLASS_NATIVECALLS ".cs"); Error err = _save_file(internal_methods_file, cs_icalls_content); if (err != OK) return err; - r_compile_items.push_back(internal_methods_file); + compile_items.push_back(internal_methods_file); + + StringBuilder includes_props_content; + includes_props_content.append("<Project>\n" + " <ItemGroup>\n"); + + for (int i = 0; i < compile_items.size(); i++) { + String include = path::relative_to(compile_items[i], p_proj_dir).replace("/", "\\"); + includes_props_content.append(" <Compile Include=\"" + include + "\" />\n"); + } + + includes_props_content.append(" </ItemGroup>\n" + "</Project>\n"); + + String includes_props_file = path::join(base_gen_dir, "GeneratedIncludes.props"); + + err = _save_file(includes_props_file, includes_props_content); + if (err != OK) + return err; return OK; } -Error BindingsGenerator::generate_cs_editor_project(const String &p_proj_dir, Vector<String> &r_compile_items) { +Error BindingsGenerator::generate_cs_editor_project(const String &p_proj_dir) { ERR_FAIL_COND_V(!initialized, ERR_UNCONFIGURED); @@ -1010,11 +1001,13 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_proj_dir, Ve } da->change_dir(p_proj_dir); - da->make_dir("Core"); - da->make_dir("ObjectType"); + da->make_dir("Generated"); + da->make_dir("Generated/GodotObjects"); + + String base_gen_dir = path::join(p_proj_dir, "Generated"); + String godot_objects_gen_dir = path::join(base_gen_dir, "GodotObjects"); - String core_dir = path::join(p_proj_dir, "Core"); - String obj_type_dir = path::join(p_proj_dir, "ObjectType"); + Vector<String> compile_items; for (OrderedHashMap<StringName, TypeInterface>::Element E = obj_types.front(); E; E = E.next()) { const TypeInterface &itype = E.get(); @@ -1022,7 +1015,7 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_proj_dir, Ve if (itype.api_type != ClassDB::API_EDITOR) continue; - String output_file = path::join(obj_type_dir, itype.proxy_name + ".cs"); + String output_file = path::join(godot_objects_gen_dir, itype.proxy_name + ".cs"); Error err = _generate_cs_type(itype, output_file); if (err == ERR_SKIP) @@ -1031,7 +1024,7 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_proj_dir, Ve if (err != OK) return err; - r_compile_items.push_back(output_file); + compile_items.push_back(output_file); } StringBuilder cs_icalls_content; @@ -1068,13 +1061,31 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_proj_dir, Ve cs_icalls_content.append(INDENT1 CLOSE_BLOCK CLOSE_BLOCK); - String internal_methods_file = path::join(core_dir, BINDINGS_CLASS_NATIVECALLS_EDITOR ".cs"); + String internal_methods_file = path::join(base_gen_dir, BINDINGS_CLASS_NATIVECALLS_EDITOR ".cs"); Error err = _save_file(internal_methods_file, cs_icalls_content); if (err != OK) return err; - r_compile_items.push_back(internal_methods_file); + compile_items.push_back(internal_methods_file); + + StringBuilder includes_props_content; + includes_props_content.append("<Project>\n" + " <ItemGroup>\n"); + + for (int i = 0; i < compile_items.size(); i++) { + String include = path::relative_to(compile_items[i], p_proj_dir).replace("/", "\\"); + includes_props_content.append(" <Compile Include=\"" + include + "\" />\n"); + } + + includes_props_content.append(" </ItemGroup>\n" + "</Project>\n"); + + String includes_props_file = path::join(base_gen_dir, "GeneratedIncludes.props"); + + err = _save_file(includes_props_file, includes_props_content); + if (err != OK) + return err; return OK; } @@ -1098,9 +1109,8 @@ Error BindingsGenerator::generate_cs_api(const String &p_output_dir) { // Generate GodotSharp source files String core_proj_dir = output_dir.plus_file(CORE_API_ASSEMBLY_NAME); - Vector<String> core_compile_items; - proj_err = generate_cs_core_project(core_proj_dir, core_compile_items); + proj_err = generate_cs_core_project(core_proj_dir); if (proj_err != OK) { ERR_PRINT("Generation of the Core API C# project failed."); return proj_err; @@ -1109,22 +1119,14 @@ Error BindingsGenerator::generate_cs_api(const String &p_output_dir) { // Generate GodotSharpEditor source files String editor_proj_dir = output_dir.plus_file(EDITOR_API_ASSEMBLY_NAME); - Vector<String> editor_compile_items; - proj_err = generate_cs_editor_project(editor_proj_dir, editor_compile_items); + proj_err = generate_cs_editor_project(editor_proj_dir); if (proj_err != OK) { ERR_PRINT("Generation of the Editor API C# project failed."); return proj_err; } - // Generate solution - - if (!CSharpProject::generate_api_solution(output_dir, - core_proj_dir, core_compile_items, editor_proj_dir, editor_compile_items)) { - return ERR_CANT_CREATE; - } - - _log("The solution for the Godot API was generated successfully\n"); + _log("The Godot API sources were successfully generated\n"); return OK; } @@ -3170,7 +3172,7 @@ void BindingsGenerator::handle_cmdline_args(const List<String> &p_cmdline_args) if (bindings_generator.generate_glue(glue_dir_path) != OK) ERR_PRINTS(generate_all_glue_option + ": Failed to generate the C++ glue."); - if (bindings_generator.generate_cs_api(glue_dir_path.plus_file("Managed/Generated")) != OK) + if (bindings_generator.generate_cs_api(glue_dir_path.plus_file(API_SOLUTION_NAME)) != OK) ERR_PRINTS(generate_all_glue_option + ": Failed to generate the C# API."); } diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h index 07918a2d03..7323e8f635 100644 --- a/modules/mono/editor/bindings_generator.h +++ b/modules/mono/editor/bindings_generator.h @@ -635,8 +635,8 @@ class BindingsGenerator { void _initialize(); public: - Error generate_cs_core_project(const String &p_proj_dir, Vector<String> &r_compile_files); - Error generate_cs_editor_project(const String &p_proj_dir, Vector<String> &r_compile_items); + Error generate_cs_core_project(const String &p_proj_dir); + Error generate_cs_editor_project(const String &p_proj_dir); Error generate_cs_api(const String &p_output_dir); Error generate_glue(const String &p_output_dir); diff --git a/modules/mono/editor/csharp_project.cpp b/modules/mono/editor/csharp_project.cpp index 748447005f..ef3644acfd 100644 --- a/modules/mono/editor/csharp_project.cpp +++ b/modules/mono/editor/csharp_project.cpp @@ -44,54 +44,6 @@ namespace CSharpProject { -bool generate_api_solution_impl(const String &p_solution_dir, const String &p_core_proj_dir, const Vector<String> &p_core_compile_items, - const String &p_editor_proj_dir, const Vector<String> &p_editor_compile_items, - GDMonoAssembly *p_tools_project_editor_assembly) { - - GDMonoClass *klass = p_tools_project_editor_assembly->get_class("GodotTools.ProjectEditor", "ApiSolutionGenerator"); - - Variant solution_dir = p_solution_dir; - Variant core_proj_dir = p_core_proj_dir; - Variant core_compile_items = p_core_compile_items; - Variant editor_proj_dir = p_editor_proj_dir; - Variant editor_compile_items = p_editor_compile_items; - const Variant *args[5] = { &solution_dir, &core_proj_dir, &core_compile_items, &editor_proj_dir, &editor_compile_items }; - MonoException *exc = NULL; - klass->get_method("GenerateApiSolution", 5)->invoke(NULL, args, &exc); - - if (exc) { - GDMonoUtils::debug_print_unhandled_exception(exc); - ERR_FAIL_V(false); - } - - return true; -} - -bool generate_api_solution(const String &p_solution_dir, const String &p_core_proj_dir, const Vector<String> &p_core_compile_items, - const String &p_editor_proj_dir, const Vector<String> &p_editor_compile_items) { - - if (GDMono::get_singleton()->get_tools_project_editor_assembly()) { - return generate_api_solution_impl(p_solution_dir, p_core_proj_dir, p_core_compile_items, - p_editor_proj_dir, p_editor_compile_items, - GDMono::get_singleton()->get_tools_project_editor_assembly()); - } else { - MonoDomain *temp_domain = GDMonoUtils::create_domain("GodotEngine.Domain.ApiSolutionGeneration"); - CRASH_COND(temp_domain == NULL); - _GDMONO_SCOPE_EXIT_DOMAIN_UNLOAD_(temp_domain); - - _GDMONO_SCOPE_DOMAIN_(temp_domain); - - GDMonoAssembly *tools_project_editor_asm = NULL; - - bool assembly_loaded = GDMono::get_singleton()->load_assembly(TOOLS_PROJECT_EDITOR_ASM_NAME, &tools_project_editor_asm); - ERR_FAIL_COND_V_MSG(!assembly_loaded, false, "Failed to load assembly: '" TOOLS_PROJECT_EDITOR_ASM_NAME "'."); - - return generate_api_solution_impl(p_solution_dir, p_core_proj_dir, p_core_compile_items, - p_editor_proj_dir, p_editor_compile_items, - tools_project_editor_asm); - } -} - void add_item(const String &p_project_path, const String &p_item_type, const String &p_include) { if (!GLOBAL_DEF("mono/project/auto_update_project", true)) diff --git a/modules/mono/editor/csharp_project.h b/modules/mono/editor/csharp_project.h index b42762cea2..cc1d68c3b5 100644 --- a/modules/mono/editor/csharp_project.h +++ b/modules/mono/editor/csharp_project.h @@ -35,9 +35,6 @@ namespace CSharpProject { -bool generate_api_solution(const String &p_solution_dir, const String &p_core_proj_dir, const Vector<String> &p_core_compile_items, - const String &p_editor_proj_dir, const Vector<String> &p_editor_compile_items); - void add_item(const String &p_project_path, const String &p_item_type, const String &p_include); } // namespace CSharpProject diff --git a/modules/mono/editor/editor_internal_calls.cpp b/modules/mono/editor/editor_internal_calls.cpp index 4055ec005a..be6aa35aa0 100644 --- a/modules/mono/editor/editor_internal_calls.cpp +++ b/modules/mono/editor/editor_internal_calls.cpp @@ -30,9 +30,14 @@ #include "editor_internal_calls.h" +#ifdef UNIX_ENABLED +#include <unistd.h> // access +#endif + #include "core/os/os.h" #include "core/version.h" #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "editor/plugins/script_editor_plugin.h" #include "editor/script_editor_debugger.h" #include "main/main.h" @@ -219,15 +224,14 @@ int32_t godot_icall_ScriptClassParser_ParseFile(MonoString *p_filepath, MonoObje return err; } -uint32_t godot_icall_ExportPlugin_GetExportedAssemblyDependencies(MonoString *p_project_dll_name, MonoString *p_project_dll_src_path, +uint32_t godot_icall_ExportPlugin_GetExportedAssemblyDependencies(MonoObject *p_initial_dependencies, MonoString *p_build_config, MonoString *p_custom_bcl_dir, MonoObject *r_dependencies) { - String project_dll_name = GDMonoMarshal::mono_string_to_godot(p_project_dll_name); - String project_dll_src_path = GDMonoMarshal::mono_string_to_godot(p_project_dll_src_path); + Dictionary initial_dependencies = GDMonoMarshal::mono_object_to_variant(p_initial_dependencies); String build_config = GDMonoMarshal::mono_string_to_godot(p_build_config); String custom_bcl_dir = GDMonoMarshal::mono_string_to_godot(p_custom_bcl_dir); Dictionary dependencies = GDMonoMarshal::mono_object_to_variant(r_dependencies); - return GodotSharpExport::get_exported_assembly_dependencies(project_dll_name, project_dll_src_path, build_config, custom_bcl_dir, dependencies); + return GodotSharpExport::get_exported_assembly_dependencies(initial_dependencies, build_config, custom_bcl_dir, dependencies); } MonoString *godot_icall_Internal_UpdateApiAssembliesFromPrebuilt(MonoString *p_config) { @@ -371,6 +375,15 @@ MonoString *godot_icall_Utils_OS_GetPlatformName() { return GDMonoMarshal::mono_string_from_godot(os_name); } +MonoBoolean godot_icall_Utils_OS_UnixFileHasExecutableAccess(MonoString *p_file_path) { +#ifdef UNIX_ENABLED + String file_path = GDMonoMarshal::mono_string_to_godot(p_file_path); + return access(file_path.utf8().get_data(), X_OK) == 0; +#else + ERR_FAIL_V(false); +#endif +} + void register_editor_internal_calls() { // GodotSharpDirs @@ -443,4 +456,5 @@ void register_editor_internal_calls() { // Utils.OS mono_add_internal_call("GodotTools.Utils.OS::GetPlatformName", (void *)godot_icall_Utils_OS_GetPlatformName); + mono_add_internal_call("GodotTools.Utils.OS::UnixFileHasExecutableAccess", (void *)godot_icall_Utils_OS_UnixFileHasExecutableAccess); } diff --git a/modules/mono/editor/godotsharp_export.cpp b/modules/mono/editor/godotsharp_export.cpp index 9ae9399e1d..e02bd3be58 100644 --- a/modules/mono/editor/godotsharp_export.cpp +++ b/modules/mono/editor/godotsharp_export.cpp @@ -101,23 +101,32 @@ Error get_assembly_dependencies(GDMonoAssembly *p_assembly, const Vector<String> return OK; } -Error get_exported_assembly_dependencies(const String &p_project_dll_name, const String &p_project_dll_src_path, const String &p_build_config, const String &p_custom_bcl_dir, Dictionary &r_dependencies) { +Error get_exported_assembly_dependencies(const Dictionary &p_initial_dependencies, + const String &p_build_config, const String &p_custom_bcl_dir, Dictionary &r_dependencies) { MonoDomain *export_domain = GDMonoUtils::create_domain("GodotEngine.Domain.ProjectExport"); ERR_FAIL_NULL_V(export_domain, FAILED); _GDMONO_SCOPE_EXIT_DOMAIN_UNLOAD_(export_domain); _GDMONO_SCOPE_DOMAIN_(export_domain); - GDMonoAssembly *scripts_assembly = NULL; - bool load_success = GDMono::get_singleton()->load_assembly_from(p_project_dll_name, - p_project_dll_src_path, &scripts_assembly, /* refonly: */ true); - - ERR_FAIL_COND_V_MSG(!load_success, ERR_CANT_RESOLVE, "Cannot load assembly (refonly): '" + p_project_dll_name + "'."); - Vector<String> search_dirs; GDMonoAssembly::fill_search_dirs(search_dirs, p_build_config, p_custom_bcl_dir); - return get_assembly_dependencies(scripts_assembly, search_dirs, r_dependencies); + for (const Variant *key = p_initial_dependencies.next(); key; key = p_initial_dependencies.next(key)) { + String assembly_name = *key; + String assembly_path = p_initial_dependencies[*key]; + + GDMonoAssembly *assembly = NULL; + bool load_success = GDMono::get_singleton()->load_assembly_from(assembly_name, assembly_path, &assembly, /* refonly: */ true); + + ERR_FAIL_COND_V_MSG(!load_success, ERR_CANT_RESOLVE, "Cannot load assembly (refonly): '" + assembly_name + "'."); + + Error err = get_assembly_dependencies(assembly, search_dirs, r_dependencies); + if (err != OK) + return err; + } + + return OK; } } // namespace GodotSharpExport diff --git a/modules/mono/editor/godotsharp_export.h b/modules/mono/editor/godotsharp_export.h index 58e46e2f2d..8eb5a4d9dc 100644 --- a/modules/mono/editor/godotsharp_export.h +++ b/modules/mono/editor/godotsharp_export.h @@ -41,9 +41,8 @@ namespace GodotSharpExport { Error get_assembly_dependencies(GDMonoAssembly *p_assembly, const Vector<String> &p_search_dirs, Dictionary &r_dependencies); -Error get_exported_assembly_dependencies(const String &p_project_dll_name, - const String &p_project_dll_src_path, const String &p_build_config, - const String &p_custom_lib_dir, Dictionary &r_dependencies); +Error get_exported_assembly_dependencies(const Dictionary &p_initial_dependencies, + const String &p_build_config, const String &p_custom_lib_dir, Dictionary &r_dependencies); } // namespace GodotSharpExport diff --git a/modules/mono/editor/script_class_parser.cpp b/modules/mono/editor/script_class_parser.cpp index dcb0ca5a80..1c3a583601 100644 --- a/modules/mono/editor/script_class_parser.cpp +++ b/modules/mono/editor/script_class_parser.cpp @@ -501,12 +501,15 @@ Error ScriptClassParser::parse(const String &p_code) { int type_curly_stack = 0; while (!error && tk != TK_EOF) { - if (tk == TK_IDENTIFIER && String(value) == "class") { + String identifier = value; + if (tk == TK_IDENTIFIER && (identifier == "class" || identifier == "struct")) { + bool is_class = identifier == "class"; + tk = get_token(); if (tk == TK_IDENTIFIER) { String name = value; - int at_level = type_curly_stack; + int at_level = curly_stack; ClassDecl class_decl; @@ -568,48 +571,22 @@ Error ScriptClassParser::parse(const String &p_code) { NameDecl name_decl; name_decl.name = name; - name_decl.type = NameDecl::CLASS_DECL; + name_decl.type = is_class ? NameDecl::CLASS_DECL : NameDecl::STRUCT_DECL; name_stack[at_level] = name_decl; - if (!generic) { // no generics, thanks - classes.push_back(class_decl); - } else if (OS::get_singleton()->is_stdout_verbose()) { - String full_name = class_decl.namespace_; - if (full_name.length()) - full_name += "."; - full_name += class_decl.name; - OS::get_singleton()->print("Ignoring generic class declaration: %s\n", class_decl.name.utf8().get_data()); - } - } - } else if (tk == TK_IDENTIFIER && String(value) == "struct") { - String name; - int at_level = type_curly_stack; - while (true) { - tk = get_token(); - if (tk == TK_IDENTIFIER && name.empty()) { - name = String(value); - } else if (tk == TK_CURLY_BRACKET_OPEN) { - if (name.empty()) { - error_str = "Expected " + get_token_name(TK_IDENTIFIER) + " after keyword 'struct', found " + get_token_name(TK_CURLY_BRACKET_OPEN); - error = true; - return ERR_PARSE_ERROR; + if (is_class) { + if (!generic) { // no generics, thanks + classes.push_back(class_decl); + } else if (OS::get_singleton()->is_stdout_verbose()) { + String full_name = class_decl.namespace_; + if (full_name.length()) + full_name += "."; + full_name += class_decl.name; + OS::get_singleton()->print("Ignoring generic class declaration: %s\n", full_name.utf8().get_data()); } - - curly_stack++; - type_curly_stack++; - break; - } else if (tk == TK_EOF) { - error_str = "Expected " + get_token_name(TK_CURLY_BRACKET_OPEN) + " after struct decl, found " + get_token_name(TK_EOF); - error = true; - return ERR_PARSE_ERROR; } } - - NameDecl name_decl; - name_decl.name = name; - name_decl.type = NameDecl::STRUCT_DECL; - name_stack[at_level] = name_decl; - } else if (tk == TK_IDENTIFIER && String(value) == "namespace") { + } else if (tk == TK_IDENTIFIER && identifier == "namespace") { if (type_curly_stack > 0) { error_str = "Found namespace nested inside type."; error = true; diff --git a/modules/mono/glue/GodotSharp/.gitignore b/modules/mono/glue/GodotSharp/.gitignore new file mode 100644 index 0000000000..aa9f614a9d --- /dev/null +++ b/modules/mono/glue/GodotSharp/.gitignore @@ -0,0 +1,3 @@ +# Generated Godot API sources directories +GodotSharp/Generated +GodotSharpEditor/Generated diff --git a/modules/mono/glue/GodotSharp/GodotSharp.sln b/modules/mono/glue/GodotSharp/GodotSharp.sln new file mode 100644 index 0000000000..a496e36da3 --- /dev/null +++ b/modules/mono/glue/GodotSharp/GodotSharp.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GodotSharp", "GodotSharp\GodotSharp.csproj", "{AEBF0036-DA76-4341-B651-A3F2856AB2FA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GodotSharpEditor", "GodotSharpEditor\GodotSharpEditor.csproj", "{8FBEC238-D944-4074-8548-B3B524305905}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AEBF0036-DA76-4341-B651-A3F2856AB2FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AEBF0036-DA76-4341-B651-A3F2856AB2FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AEBF0036-DA76-4341-B651-A3F2856AB2FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AEBF0036-DA76-4341-B651-A3F2856AB2FA}.Release|Any CPU.Build.0 = Release|Any CPU + {8FBEC238-D944-4074-8548-B3B524305905}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8FBEC238-D944-4074-8548-B3B524305905}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8FBEC238-D944-4074-8548-B3B524305905}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8FBEC238-D944-4074-8548-B3B524305905}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/modules/mono/glue/Managed/Files/AABB.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/AABB.cs index 6a4f785551..6a4f785551 100644 --- a/modules/mono/glue/Managed/Files/AABB.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/AABB.cs diff --git a/modules/mono/glue/Managed/Files/Array.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Array.cs index 0e7b0362e0..aba1065498 100644 --- a/modules/mono/glue/Managed/Files/Array.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Array.cs @@ -64,6 +64,11 @@ namespace Godot.Collections return safeHandle.DangerousGetHandle(); } + public Array Duplicate(bool deep = false) + { + return new Array(godot_icall_Array_Duplicate(GetPtr(), deep)); + } + public Error Resize(int newSize) { return godot_icall_Array_Resize(GetPtr(), newSize); @@ -179,6 +184,9 @@ namespace Godot.Collections internal extern static void godot_icall_Array_CopyTo(IntPtr ptr, System.Array array, int arrayIndex); [MethodImpl(MethodImplOptions.InternalCall)] + internal extern static IntPtr godot_icall_Array_Duplicate(IntPtr ptr, bool deep); + + [MethodImpl(MethodImplOptions.InternalCall)] internal extern static int godot_icall_Array_IndexOf(IntPtr ptr, object item); [MethodImpl(MethodImplOptions.InternalCall)] @@ -250,6 +258,11 @@ namespace Godot.Collections return from.objectArray; } + public Array<T> Duplicate(bool deep = false) + { + return new Array<T>(objectArray.Duplicate(deep)); + } + public Error Resize(int newSize) { return objectArray.Resize(newSize); diff --git a/modules/mono/glue/Managed/Files/Attributes/ExportAttribute.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ExportAttribute.cs index 6adf044886..6adf044886 100644 --- a/modules/mono/glue/Managed/Files/Attributes/ExportAttribute.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ExportAttribute.cs diff --git a/modules/mono/glue/Managed/Files/Attributes/GodotMethodAttribute.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/GodotMethodAttribute.cs index 55848769d5..55848769d5 100644 --- a/modules/mono/glue/Managed/Files/Attributes/GodotMethodAttribute.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/GodotMethodAttribute.cs diff --git a/modules/mono/glue/Managed/Files/Attributes/RPCAttributes.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/RPCAttributes.cs index 1bf6d5199a..1bf6d5199a 100644 --- a/modules/mono/glue/Managed/Files/Attributes/RPCAttributes.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/RPCAttributes.cs diff --git a/modules/mono/glue/Managed/Files/Attributes/SignalAttribute.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/SignalAttribute.cs index 3957387be9..3957387be9 100644 --- a/modules/mono/glue/Managed/Files/Attributes/SignalAttribute.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/SignalAttribute.cs diff --git a/modules/mono/glue/Managed/Files/Attributes/ToolAttribute.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ToolAttribute.cs index d0437409af..d0437409af 100644 --- a/modules/mono/glue/Managed/Files/Attributes/ToolAttribute.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ToolAttribute.cs diff --git a/modules/mono/glue/Managed/Files/Basis.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Basis.cs index c5e62b77c8..c5e62b77c8 100644 --- a/modules/mono/glue/Managed/Files/Basis.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Basis.cs diff --git a/modules/mono/glue/Managed/Files/Color.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs index df817e47e9..df817e47e9 100644 --- a/modules/mono/glue/Managed/Files/Color.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs diff --git a/modules/mono/glue/Managed/Files/Colors.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Colors.cs index f41f5e9fc8..f41f5e9fc8 100644 --- a/modules/mono/glue/Managed/Files/Colors.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Colors.cs diff --git a/modules/mono/glue/Managed/Files/DebuggingUtils.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/DebuggingUtils.cs index edfe3464ec..edfe3464ec 100644 --- a/modules/mono/glue/Managed/Files/DebuggingUtils.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/DebuggingUtils.cs diff --git a/modules/mono/glue/Managed/Files/Dictionary.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Dictionary.cs index 6ab8549a01..d72109de92 100644 --- a/modules/mono/glue/Managed/Files/Dictionary.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Dictionary.cs @@ -80,6 +80,11 @@ namespace Godot.Collections disposed = true; } + public Dictionary Duplicate(bool deep = false) + { + return new Dictionary(godot_icall_Dictionary_Duplicate(GetPtr(), deep)); + } + // IDictionary public ICollection Keys @@ -235,6 +240,9 @@ namespace Godot.Collections internal extern static bool godot_icall_Dictionary_ContainsKey(IntPtr ptr, object key); [MethodImpl(MethodImplOptions.InternalCall)] + internal extern static IntPtr godot_icall_Dictionary_Duplicate(IntPtr ptr, bool deep); + + [MethodImpl(MethodImplOptions.InternalCall)] internal extern static bool godot_icall_Dictionary_RemoveKey(IntPtr ptr, object key); [MethodImpl(MethodImplOptions.InternalCall)] @@ -313,6 +321,11 @@ namespace Godot.Collections return objectDict.GetPtr(); } + public Dictionary<TKey, TValue> Duplicate(bool deep = false) + { + return new Dictionary<TKey, TValue>(objectDict.Duplicate(deep)); + } + // IDictionary<TKey, TValue> public TValue this[TKey key] diff --git a/modules/mono/glue/Managed/Files/Dispatcher.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Dispatcher.cs index 072e0f20ff..072e0f20ff 100644 --- a/modules/mono/glue/Managed/Files/Dispatcher.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Dispatcher.cs diff --git a/modules/mono/glue/Managed/Files/DynamicObject.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/DynamicObject.cs index a0f105d55e..a0f105d55e 100644 --- a/modules/mono/glue/Managed/Files/DynamicObject.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/DynamicObject.cs diff --git a/modules/mono/glue/Managed/Files/Extensions/NodeExtensions.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/NodeExtensions.cs index 5023725f17..5023725f17 100644 --- a/modules/mono/glue/Managed/Files/Extensions/NodeExtensions.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/NodeExtensions.cs diff --git a/modules/mono/glue/Managed/Files/Extensions/ObjectExtensions.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/ObjectExtensions.cs index 9ef0959750..9ef0959750 100644 --- a/modules/mono/glue/Managed/Files/Extensions/ObjectExtensions.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/ObjectExtensions.cs diff --git a/modules/mono/glue/Managed/Files/Extensions/ResourceLoaderExtensions.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/ResourceLoaderExtensions.cs index 684d160b57..684d160b57 100644 --- a/modules/mono/glue/Managed/Files/Extensions/ResourceLoaderExtensions.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/ResourceLoaderExtensions.cs diff --git a/modules/mono/glue/Managed/Files/GD.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/GD.cs index 2068099ac6..19962d418a 100644 --- a/modules/mono/glue/Managed/Files/GD.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/GD.cs @@ -93,22 +93,22 @@ namespace Godot public static void PrintErr(params object[] what) { - godot_icall_GD_printerr(Array.ConvertAll(what, x => x.ToString())); + godot_icall_GD_printerr(Array.ConvertAll(what, x => x?.ToString())); } public static void PrintRaw(params object[] what) { - godot_icall_GD_printraw(Array.ConvertAll(what, x => x.ToString())); + godot_icall_GD_printraw(Array.ConvertAll(what, x => x?.ToString())); } public static void PrintS(params object[] what) { - godot_icall_GD_prints(Array.ConvertAll(what, x => x.ToString())); + godot_icall_GD_prints(Array.ConvertAll(what, x => x?.ToString())); } public static void PrintT(params object[] what) { - godot_icall_GD_printt(Array.ConvertAll(what, x => x.ToString())); + godot_icall_GD_printt(Array.ConvertAll(what, x => x?.ToString())); } public static float Randf() diff --git a/modules/mono/glue/Managed/Files/GodotSynchronizationContext.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotSynchronizationContext.cs index 4b5e3f8761..4b5e3f8761 100644 --- a/modules/mono/glue/Managed/Files/GodotSynchronizationContext.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotSynchronizationContext.cs diff --git a/modules/mono/glue/Managed/Files/GodotTaskScheduler.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTaskScheduler.cs index 8eaeea50dc..8eaeea50dc 100644 --- a/modules/mono/glue/Managed/Files/GodotTaskScheduler.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTaskScheduler.cs diff --git a/modules/mono/glue/Managed/Files/GodotTraceListener.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTraceListener.cs index f1a00ae0fa..f1a00ae0fa 100644 --- a/modules/mono/glue/Managed/Files/GodotTraceListener.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTraceListener.cs diff --git a/modules/mono/glue/Managed/Files/Interfaces/IAwaitable.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaitable.cs index 0397957d00..0397957d00 100644 --- a/modules/mono/glue/Managed/Files/Interfaces/IAwaitable.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaitable.cs diff --git a/modules/mono/glue/Managed/Files/Interfaces/IAwaiter.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaiter.cs index d3be9d781c..d3be9d781c 100644 --- a/modules/mono/glue/Managed/Files/Interfaces/IAwaiter.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaiter.cs diff --git a/modules/mono/glue/Managed/Files/Interfaces/ISerializationListener.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/ISerializationListener.cs index c3fa2f3e82..c3fa2f3e82 100644 --- a/modules/mono/glue/Managed/Files/Interfaces/ISerializationListener.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/ISerializationListener.cs diff --git a/modules/mono/glue/Managed/Files/MarshalUtils.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs index a1d63a62ef..a1d63a62ef 100644 --- a/modules/mono/glue/Managed/Files/MarshalUtils.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs diff --git a/modules/mono/glue/Managed/Files/Mathf.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs index 54821fe790..54821fe790 100644 --- a/modules/mono/glue/Managed/Files/Mathf.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs diff --git a/modules/mono/glue/Managed/Files/MathfEx.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/MathfEx.cs index 1b7fd4906f..1b7fd4906f 100644 --- a/modules/mono/glue/Managed/Files/MathfEx.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/MathfEx.cs diff --git a/modules/mono/glue/Managed/Files/NodePath.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/NodePath.cs index 8c5872ba5a..8c5872ba5a 100644 --- a/modules/mono/glue/Managed/Files/NodePath.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/NodePath.cs diff --git a/modules/mono/glue/Managed/Files/Object.base.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Object.base.cs index de80f7fddc..de80f7fddc 100644 --- a/modules/mono/glue/Managed/Files/Object.base.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Object.base.cs diff --git a/modules/mono/glue/Managed/Files/Plane.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Plane.cs index 885845e3a4..885845e3a4 100644 --- a/modules/mono/glue/Managed/Files/Plane.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Plane.cs diff --git a/modules/mono/glue/Managed/Files/Quat.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Quat.cs index 8f60867ac3..8f60867ac3 100644 --- a/modules/mono/glue/Managed/Files/Quat.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Quat.cs diff --git a/modules/mono/glue/Managed/Files/RID.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/RID.cs index 94761531b1..94761531b1 100644 --- a/modules/mono/glue/Managed/Files/RID.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/RID.cs diff --git a/modules/mono/glue/Managed/Files/Rect2.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2.cs index 91e614dc7b..91e614dc7b 100644 --- a/modules/mono/glue/Managed/Files/Rect2.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2.cs diff --git a/modules/mono/glue/Managed/Files/SignalAwaiter.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/SignalAwaiter.cs index 9483b6ffb4..9483b6ffb4 100644 --- a/modules/mono/glue/Managed/Files/SignalAwaiter.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/SignalAwaiter.cs diff --git a/modules/mono/glue/Managed/Files/StringExtensions.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs index 6045c83e95..b926037e5a 100644 --- a/modules/mono/glue/Managed/Files/StringExtensions.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs @@ -18,7 +18,7 @@ namespace Godot int pos = 0; int slices = 1; - while ((pos = instance.Find(splitter, pos)) >= 0) + while ((pos = instance.Find(splitter, pos, caseSensitive: true)) >= 0) { slices++; pos += splitter.Length; @@ -229,7 +229,7 @@ namespace Godot // </summary> public static int CasecmpTo(this string instance, string to) { - return instance.CompareTo(to, true); + return instance.CompareTo(to, caseSensitive: true); } // <summary> @@ -322,28 +322,32 @@ namespace Godot return instance.Substring(pos + 1); } - // <summary> - // Find the first occurrence of a substring, return the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed. - // </summary> - public static int Find(this string instance, string what, int from = 0) + /// <summary>Find the first occurrence of a substring. Optionally, the search starting position can be passed.</summary> + /// <returns>The starting position of the substring, or -1 if not found.</returns> + public static int Find(this string instance, string what, int from = 0, bool caseSensitive = true) { - return instance.IndexOf(what, StringComparison.OrdinalIgnoreCase); + return instance.IndexOf(what, from, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase); } - // <summary> - // Find the last occurrence of a substring, return the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed. - // </summary> - public static int FindLast(this string instance, string what) + /// <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) { - return instance.LastIndexOf(what, StringComparison.OrdinalIgnoreCase); + return instance.FindLast(what, instance.Length - 1, caseSensitive); } - // <summary> - // Find the first occurrence of a substring but search as case-insensitive, return the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed. - // </summary> + /// <summary>Find the last occurrence of a substring specifying the search starting position.</summary> + /// <returns>The starting position of the substring, or -1 if not found.</returns> + public static int FindLast(this string instance, string what, int from, bool caseSensitive = true) + { + return instance.LastIndexOf(what, from, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase); + } + + /// <summary>Find the first occurrence of a substring but search as case-insensitive. Optionally, the search starting position can be passed.</summary> + /// <returns>The starting position of the substring, or -1 if not found.</returns> public static int FindN(this string instance, string what, int from = 0) { - return instance.IndexOf(what, StringComparison.Ordinal); + return instance.IndexOf(what, from, StringComparison.OrdinalIgnoreCase); } // <summary> @@ -502,7 +506,7 @@ namespace Godot // </summary> public static bool IsSubsequenceOfI(this string instance, string text) { - return instance.IsSubsequenceOf(text, false); + return instance.IsSubsequenceOf(text, caseSensitive: false); } // <summary> @@ -662,7 +666,7 @@ namespace Godot // </summary> public static bool MatchN(this string instance, string expr) { - return instance.ExprMatch(expr, false); + return instance.ExprMatch(expr, caseSensitive: false); } // <summary> @@ -692,7 +696,7 @@ namespace Godot // </summary> public static int NocasecmpTo(this string instance, string to) { - return instance.CompareTo(to, false); + return instance.CompareTo(to, caseSensitive: false); } // <summary> @@ -928,7 +932,7 @@ namespace Godot while (true) { - int end = instance.Find(divisor, from); + int end = instance.Find(divisor, from, caseSensitive: true); if (end < 0) end = len; if (allowEmpty || end > from) diff --git a/modules/mono/glue/Managed/Files/Transform.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform.cs index 0b84050f07..0b84050f07 100644 --- a/modules/mono/glue/Managed/Files/Transform.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform.cs diff --git a/modules/mono/glue/Managed/Files/Transform2D.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform2D.cs index 77ea3e5830..77ea3e5830 100644 --- a/modules/mono/glue/Managed/Files/Transform2D.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform2D.cs diff --git a/modules/mono/glue/Managed/Files/Vector2.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2.cs index f92453f546..f92453f546 100644 --- a/modules/mono/glue/Managed/Files/Vector2.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2.cs diff --git a/modules/mono/glue/Managed/Files/Vector3.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3.cs index 025b09199f..025b09199f 100644 --- a/modules/mono/glue/Managed/Files/Vector3.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3.cs diff --git a/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj b/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj new file mode 100644 index 0000000000..5419cd06e6 --- /dev/null +++ b/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{AEBF0036-DA76-4341-B651-A3F2856AB2FA}</ProjectGuid> + <OutputType>Library</OutputType> + <OutputPath>bin/$(Configuration)</OutputPath> + <RootNamespace>Godot</RootNamespace> + <AssemblyName>GodotSharp</AssemblyName> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <DocumentationFile>$(OutputPath)/$(AssemblyName).xml</DocumentationFile> + <BaseIntermediateOutputPath>obj</BaseIntermediateOutputPath> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>portable</DebugType> + <Optimize>false</Optimize> + <DefineConstants>$(GodotDefineConstants);GODOT;DEBUG;</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <ConsolePause>false</ConsolePause> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>portable</DebugType> + <Optimize>true</Optimize> + <DefineConstants>$(GodotDefineConstants);GODOT;</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <ConsolePause>false</ConsolePause> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Core\AABB.cs" /> + <Compile Include="Core\Array.cs" /> + <Compile Include="Core\Attributes\ExportAttribute.cs" /> + <Compile Include="Core\Attributes\GodotMethodAttribute.cs" /> + <Compile Include="Core\Attributes\RPCAttributes.cs" /> + <Compile Include="Core\Attributes\SignalAttribute.cs" /> + <Compile Include="Core\Attributes\ToolAttribute.cs" /> + <Compile Include="Core\Basis.cs" /> + <Compile Include="Core\Color.cs" /> + <Compile Include="Core\Colors.cs" /> + <Compile Include="Core\DebuggingUtils.cs" /> + <Compile Include="Core\Dictionary.cs" /> + <Compile Include="Core\Dispatcher.cs" /> + <Compile Include="Core\DynamicObject.cs" /> + <Compile Include="Core\Extensions\NodeExtensions.cs" /> + <Compile Include="Core\Extensions\ObjectExtensions.cs" /> + <Compile Include="Core\Extensions\ResourceLoaderExtensions.cs" /> + <Compile Include="Core\GD.cs" /> + <Compile Include="Core\GodotSynchronizationContext.cs" /> + <Compile Include="Core\GodotTaskScheduler.cs" /> + <Compile Include="Core\GodotTraceListener.cs" /> + <Compile Include="Core\Interfaces\IAwaitable.cs" /> + <Compile Include="Core\Interfaces\IAwaiter.cs" /> + <Compile Include="Core\Interfaces\ISerializationListener.cs" /> + <Compile Include="Core\MarshalUtils.cs" /> + <Compile Include="Core\Mathf.cs" /> + <Compile Include="Core\MathfEx.cs" /> + <Compile Include="Core\NodePath.cs" /> + <Compile Include="Core\Object.base.cs" /> + <Compile Include="Core\Plane.cs" /> + <Compile Include="Core\Quat.cs" /> + <Compile Include="Core\Rect2.cs" /> + <Compile Include="Core\RID.cs" /> + <Compile Include="Core\SignalAwaiter.cs" /> + <Compile Include="Core\StringExtensions.cs" /> + <Compile Include="Core\Transform.cs" /> + <Compile Include="Core\Transform2D.cs" /> + <Compile Include="Core\Vector2.cs" /> + <Compile Include="Core\Vector3.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <!-- + We import a props file with auto-generated includes. This works well with Rider. + However, Visual Studio and MonoDevelop won't list them in the solution explorer. + We can't use wildcards as there may be undesired old files still hanging around. + Fortunately code completion, go to definition and such still work. + --> + <Import Project="Generated\GeneratedIncludes.props" /> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> +</Project> diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Properties/AssemblyInfo.cs b/modules/mono/glue/GodotSharp/GodotSharp/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..f84e0183f6 --- /dev/null +++ b/modules/mono/glue/GodotSharp/GodotSharp/Properties/AssemblyInfo.cs @@ -0,0 +1,27 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("GodotSharp")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] +[assembly: InternalsVisibleTo("GodotSharpEditor")] diff --git a/modules/mono/glue/GodotSharp/GodotSharpEditor/GodotSharpEditor.csproj b/modules/mono/glue/GodotSharp/GodotSharpEditor/GodotSharpEditor.csproj new file mode 100644 index 0000000000..22853797c1 --- /dev/null +++ b/modules/mono/glue/GodotSharp/GodotSharpEditor/GodotSharpEditor.csproj @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{8FBEC238-D944-4074-8548-B3B524305905}</ProjectGuid> + <OutputType>Library</OutputType> + <OutputPath>bin/$(Configuration)</OutputPath> + <RootNamespace>Godot</RootNamespace> + <AssemblyName>GodotSharpEditor</AssemblyName> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <DocumentationFile>$(OutputPath)/$(AssemblyName).xml</DocumentationFile> + <BaseIntermediateOutputPath>obj</BaseIntermediateOutputPath> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>portable</DebugType> + <Optimize>false</Optimize> + <DefineConstants>$(GodotDefineConstants);GODOT;DEBUG;</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <ConsolePause>false</ConsolePause> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>portable</DebugType> + <Optimize>true</Optimize> + <DefineConstants>$(GodotDefineConstants);GODOT;</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <ConsolePause>false</ConsolePause> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <Import Project="Generated\GeneratedIncludes.props" /> + <ItemGroup> + <ProjectReference Include="..\GodotSharp\GodotSharp.csproj"> + <Private>False</Private> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> +</Project> diff --git a/modules/mono/glue/Managed/Properties/AssemblyInfo.cs b/modules/mono/glue/GodotSharp/GodotSharpEditor/Properties/AssemblyInfo.cs index 77b3774e81..3684b7a3cb 100644 --- a/modules/mono/glue/Managed/Properties/AssemblyInfo.cs +++ b/modules/mono/glue/GodotSharp/GodotSharpEditor/Properties/AssemblyInfo.cs @@ -1,10 +1,9 @@ -using System.Reflection; -using System.Runtime.CompilerServices; +using System.Reflection; // Information about this assembly is defined by the following attributes. // Change them to the values specific to your project. -[assembly: AssemblyTitle("Managed")] +[assembly: AssemblyTitle("GodotSharpEditor")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] diff --git a/modules/mono/glue/Managed/.gitignore b/modules/mono/glue/Managed/.gitignore deleted file mode 100644 index 146421cac8..0000000000 --- a/modules/mono/glue/Managed/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Generated Godot API solution folder -Generated diff --git a/modules/mono/glue/Managed/IgnoredFiles/Enums.cs b/modules/mono/glue/Managed/IgnoredFiles/Enums.cs deleted file mode 100644 index 05f1abcf93..0000000000 --- a/modules/mono/glue/Managed/IgnoredFiles/Enums.cs +++ /dev/null @@ -1,21 +0,0 @@ - -namespace Godot -{ - public enum Margin - { - Left = 0, - Top = 1, - Right = 2, - Bottom = 3 - } - - public enum Error - { - Ok = 0 - } - - public enum PropertyHint - { - None = 0 - } -} diff --git a/modules/mono/glue/Managed/IgnoredFiles/FuncRef.cs b/modules/mono/glue/Managed/IgnoredFiles/FuncRef.cs deleted file mode 100644 index 83504fe49f..0000000000 --- a/modules/mono/glue/Managed/IgnoredFiles/FuncRef.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; - -namespace Godot -{ - public partial class FuncRef - { - public void SetInstance(Object instance) - { - throw new NotImplementedException(); - } - - public void SetFunction(string name) - { - throw new NotImplementedException(); - } - } -} diff --git a/modules/mono/glue/Managed/IgnoredFiles/Node.cs b/modules/mono/glue/Managed/IgnoredFiles/Node.cs deleted file mode 100644 index cff61b1e0b..0000000000 --- a/modules/mono/glue/Managed/IgnoredFiles/Node.cs +++ /dev/null @@ -1,29 +0,0 @@ - -using System; - -namespace Godot -{ - public partial class Node - { - public Node GetChild(int idx) - { - throw new NotImplementedException(); - } - - public Node GetNode(NodePath path) - { - throw new NotImplementedException(); - } - - public Node Owner - { - get => throw new NotImplementedException(); - set => throw new NotImplementedException(); - } - - public Node GetParent() - { - throw new NotImplementedException(); - } - } -} diff --git a/modules/mono/glue/Managed/IgnoredFiles/Resource.cs b/modules/mono/glue/Managed/IgnoredFiles/Resource.cs deleted file mode 100644 index cc0a5555b1..0000000000 --- a/modules/mono/glue/Managed/IgnoredFiles/Resource.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Godot -{ - public partial class Resource - { - - } -} diff --git a/modules/mono/glue/Managed/IgnoredFiles/ResourceLoader.cs b/modules/mono/glue/Managed/IgnoredFiles/ResourceLoader.cs deleted file mode 100644 index 6461d35146..0000000000 --- a/modules/mono/glue/Managed/IgnoredFiles/ResourceLoader.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace Godot -{ - public partial class ResourceLoader - { - public static Resource Load(string path, string typeHint = "", bool pNoCache = false) - { - throw new NotImplementedException(); - } - } -} diff --git a/modules/mono/glue/Managed/IgnoredFiles/Variant.cs b/modules/mono/glue/Managed/IgnoredFiles/Variant.cs deleted file mode 100644 index 802140b062..0000000000 --- a/modules/mono/glue/Managed/IgnoredFiles/Variant.cs +++ /dev/null @@ -1,11 +0,0 @@ - -namespace Godot -{ - public static class Variant - { - public enum Type - { - - } - } -} diff --git a/modules/mono/glue/Managed/IgnoredFiles/WeakRef.cs b/modules/mono/glue/Managed/IgnoredFiles/WeakRef.cs deleted file mode 100644 index 1498b7836b..0000000000 --- a/modules/mono/glue/Managed/IgnoredFiles/WeakRef.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Godot -{ - public partial class WeakRef - { - - } -} diff --git a/modules/mono/glue/Managed/Managed.csproj b/modules/mono/glue/Managed/Managed.csproj deleted file mode 100644 index c8eca71199..0000000000 --- a/modules/mono/glue/Managed/Managed.csproj +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">x86</Platform> - <ProjectGuid>{DAA3DEF8-5112-407C-A5E5-6C608CF5F955}</ProjectGuid> - <OutputType>Library</OutputType> - <RootNamespace>Managed</RootNamespace> - <AssemblyName>Managed</AssemblyName> - <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> - <LangVersion>7</LangVersion> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>portable</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug</OutputPath> - <DefineConstants>DEBUG;</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <ExternalConsole>true</ExternalConsole> - <PlatformTarget>x86</PlatformTarget> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> - <Optimize>true</Optimize> - <OutputPath>bin\Release</OutputPath> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <ExternalConsole>true</ExternalConsole> - <PlatformTarget>x86</PlatformTarget> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - </ItemGroup> - <ItemGroup> - <Compile Include="Files\**\*.cs" /> - <Compile Include="IgnoredFiles\**\*.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> -</Project>
\ No newline at end of file diff --git a/modules/mono/glue/Managed/Managed.sln b/modules/mono/glue/Managed/Managed.sln deleted file mode 100644 index 61ddde0fb7..0000000000 --- a/modules/mono/glue/Managed/Managed.sln +++ /dev/null @@ -1,17 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Managed", "Managed.csproj", "{DAA3DEF8-5112-407C-A5E5-6C608CF5F955}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x86 = Debug|x86 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DAA3DEF8-5112-407C-A5E5-6C608CF5F955}.Debug|x86.ActiveCfg = Debug|x86 - {DAA3DEF8-5112-407C-A5E5-6C608CF5F955}.Debug|x86.Build.0 = Debug|x86 - {DAA3DEF8-5112-407C-A5E5-6C608CF5F955}.Release|x86.ActiveCfg = Release|x86 - {DAA3DEF8-5112-407C-A5E5-6C608CF5F955}.Release|x86.Build.0 = Release|x86 - EndGlobalSection -EndGlobal diff --git a/modules/mono/glue/Managed/README.md b/modules/mono/glue/Managed/README.md deleted file mode 100644 index 65e63cae37..0000000000 --- a/modules/mono/glue/Managed/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The directory `Files` contains C# files from the core assembly project that are not part of the generated API. Any file with the `.cs` extension in this directory will be added to the core assembly project. - -A dummy solution and project is provided to get tooling help while editing these files, like code completion and name refactoring. - -The directory `IgnoredFiles` contains C# files that are needed to build the dummy project but must not be added to the core assembly project. They contain placeholders for the declarations that are part of the generated API. diff --git a/modules/mono/glue/collections_glue.cpp b/modules/mono/glue/collections_glue.cpp index bfb7b0f775..e84a5becd6 100644 --- a/modules/mono/glue/collections_glue.cpp +++ b/modules/mono/glue/collections_glue.cpp @@ -103,6 +103,10 @@ void godot_icall_Array_CopyTo(Array *ptr, MonoArray *array, int array_index) { } } +Array *godot_icall_Array_Duplicate(Array *ptr, MonoBoolean deep) { + return memnew(Array(ptr->duplicate(deep))); +} + int godot_icall_Array_IndexOf(Array *ptr, MonoObject *item) { return ptr->find(GDMonoMarshal::mono_object_to_variant(item)); } @@ -224,6 +228,10 @@ MonoBoolean godot_icall_Dictionary_ContainsKey(Dictionary *ptr, MonoObject *key) return ptr->has(GDMonoMarshal::mono_object_to_variant(key)); } +Dictionary *godot_icall_Dictionary_Duplicate(Dictionary *ptr, MonoBoolean deep) { + return memnew(Dictionary(ptr->duplicate(deep))); +} + MonoBoolean godot_icall_Dictionary_RemoveKey(Dictionary *ptr, MonoObject *key) { return ptr->erase(GDMonoMarshal::mono_object_to_variant(key)); } @@ -284,6 +292,7 @@ void godot_register_collections_icalls() { mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Clear", (void *)godot_icall_Array_Clear); mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Contains", (void *)godot_icall_Array_Contains); mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_CopyTo", (void *)godot_icall_Array_CopyTo); + mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Duplicate", (void *)godot_icall_Array_Duplicate); mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_IndexOf", (void *)godot_icall_Array_IndexOf); mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Insert", (void *)godot_icall_Array_Insert); mono_add_internal_call("Godot.Collections.Array::godot_icall_Array_Remove", (void *)godot_icall_Array_Remove); @@ -304,6 +313,7 @@ void godot_register_collections_icalls() { mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Clear", (void *)godot_icall_Dictionary_Clear); mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Contains", (void *)godot_icall_Dictionary_Contains); mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_ContainsKey", (void *)godot_icall_Dictionary_ContainsKey); + mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Duplicate", (void *)godot_icall_Dictionary_Duplicate); mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_RemoveKey", (void *)godot_icall_Dictionary_RemoveKey); mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_Remove", (void *)godot_icall_Dictionary_Remove); mono_add_internal_call("Godot.Collections.Dictionary::godot_icall_Dictionary_TryGetValue", (void *)godot_icall_Dictionary_TryGetValue); diff --git a/modules/mono/glue/collections_glue.h b/modules/mono/glue/collections_glue.h index 54ed42c3b6..a79a651fcd 100644 --- a/modules/mono/glue/collections_glue.h +++ b/modules/mono/glue/collections_glue.h @@ -59,6 +59,8 @@ MonoBoolean godot_icall_Array_Contains(Array *ptr, MonoObject *item); void godot_icall_Array_CopyTo(Array *ptr, MonoArray *array, int array_index); +Array *godot_icall_Array_Duplicate(Array *ptr, MonoBoolean deep); + int godot_icall_Array_IndexOf(Array *ptr, MonoObject *item); void godot_icall_Array_Insert(Array *ptr, int index, MonoObject *item); @@ -99,6 +101,8 @@ MonoBoolean godot_icall_Dictionary_Contains(Dictionary *ptr, MonoObject *key, Mo MonoBoolean godot_icall_Dictionary_ContainsKey(Dictionary *ptr, MonoObject *key); +Dictionary *godot_icall_Dictionary_Duplicate(Dictionary *ptr, MonoBoolean deep); + MonoBoolean godot_icall_Dictionary_RemoveKey(Dictionary *ptr, MonoObject *key); MonoBoolean godot_icall_Dictionary_Remove(Dictionary *ptr, MonoObject *key, MonoObject *value); diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp index a43311d281..6cafa6709f 100644 --- a/modules/mono/mono_gd/gd_mono.cpp +++ b/modules/mono/mono_gd/gd_mono.cpp @@ -102,33 +102,23 @@ void gd_mono_profiler_init() { bool profiler_enabled = GLOBAL_DEF("mono/profiler/enabled", false); if (profiler_enabled) { mono_profiler_load(profiler_args.utf8()); + return; } -} - -#if defined(DEBUG_ENABLED) - -bool gd_mono_wait_for_debugger_msecs(uint32_t p_msecs) { - - do { - if (mono_is_debugger_attached()) - return true; - int last_tick = OS::get_singleton()->get_ticks_msec(); - - OS::get_singleton()->delay_usec((p_msecs < 25 ? p_msecs : 25) * 1000); - - uint32_t tdiff = OS::get_singleton()->get_ticks_msec() - last_tick; - - if (tdiff > p_msecs) { - p_msecs = 0; - } else { - p_msecs -= tdiff; + const String env_var_name = "MONO_ENV_OPTIONS"; + if (OS::get_singleton()->has_environment(env_var_name)) { + const auto mono_env_ops = OS::get_singleton()->get_environment(env_var_name); + // Usually MONO_ENV_OPTIONS looks like: --profile=jb:prof=timeline,ctl=remote,host=127.0.0.1:55467 + const String prefix = "--profile="; + if (mono_env_ops.begins_with(prefix)) { + const auto ops = mono_env_ops.substr(prefix.length(), mono_env_ops.length()); + mono_profiler_load(ops.utf8()); } - } while (p_msecs > 0); - - return mono_is_debugger_attached(); + } } +#if defined(DEBUG_ENABLED) + void gd_mono_debug_init() { mono_debug_init(MONO_DEBUG_FORMAT_MONO); @@ -330,7 +320,7 @@ void GDMono::initialize() { #endif #if defined(ANDROID_ENABLED) - GDMonoAndroid::register_android_dl_fallback(); + GDMonoAndroid::initialize(); #endif GDMonoAssembly::initialize(); @@ -356,13 +346,16 @@ void GDMono::initialize() { } #endif -#if !defined(WINDOWS_ENABLED) && !defined(NO_MONO_THREADS_SUSPEND_WORKAROUND) +#if !defined(NO_MONO_THREADS_SUSPEND_WORKAROUND) // FIXME: Temporary workaround. See: https://github.com/godotengine/godot/issues/29812 if (!OS::get_singleton()->has_environment("MONO_THREADS_SUSPEND")) { OS::get_singleton()->set_environment("MONO_THREADS_SUSPEND", "preemptive"); } #endif + // NOTE: Internal calls must be registered after the Mono runtime initialization. + // Otherwise registration fails with the error: 'assertion 'hash != NULL' failed'. + root_domain = gd_initialize_mono_runtime(); ERR_FAIL_NULL_MSG(root_domain, "Mono: Failed to initialize runtime."); @@ -376,6 +369,10 @@ void GDMono::initialize() { print_verbose("Mono: Runtime initialized"); +#if defined(ANDROID_ENABLED) + GDMonoAndroid::register_internal_calls(); +#endif + // mscorlib assembly MUST be present at initialization bool corlib_loaded = _load_corlib_assembly(); ERR_FAIL_COND_MSG(!corlib_loaded, "Mono: Failed to load mscorlib assembly."); @@ -383,12 +380,6 @@ void GDMono::initialize() { Error domain_load_err = _load_scripts_domain(); ERR_FAIL_COND_MSG(domain_load_err != OK, "Mono: Failed to load scripts domain."); -#if defined(DEBUG_ENABLED) && !defined(JAVASCRIPT_ENABLED) - bool debugger_attached = gd_mono_wait_for_debugger_msecs(500); - if (!debugger_attached && OS::get_singleton()->is_stdout_verbose()) - print_error("Mono: Debugger wait timeout"); -#endif - _register_internal_calls(); print_verbose("Mono: INITIALIZED"); @@ -1253,6 +1244,10 @@ GDMono::~GDMono() { mono_jit_cleanup(root_domain); +#if defined(ANDROID_ENABLED) + GDMonoAndroid::cleanup(); +#endif + print_verbose("Mono: Finalized"); runtime_initialized = false; diff --git a/modules/mono/mono_gd/gd_mono_android.cpp b/modules/mono/mono_gd/gd_mono_android.cpp index 1ee035589d..29ae4856be 100644 --- a/modules/mono/mono_gd/gd_mono_android.cpp +++ b/modules/mono/mono_gd/gd_mono_android.cpp @@ -34,38 +34,98 @@ #include <dlfcn.h> // dlopen, dlsym #include <mono/utils/mono-dl-fallback.h> +#include <sys/system_properties.h> +#include <cstddef> + +#if __ANDROID_API__ < 24 +#include "thirdparty/misc/ifaddrs-android.h" +#else +#include <ifaddrs.h> +#endif #include "core/os/os.h" #include "core/ustring.h" +#include "platform/android/java_godot_wrapper.h" +#include "platform/android/os_android.h" #include "platform/android/thread_jandroid.h" #include "../utils/path_utils.h" #include "../utils/string_utils.h" +#include "gd_mono_cache.h" +#include "gd_mono_marshal.h" + +// Warning: JNI boilerplate ahead... continue at your own risk namespace GDMonoAndroid { +template <typename T> +struct ScopedLocalRef { + JNIEnv *env; + T local_ref; + + _FORCE_INLINE_ T get() const { return local_ref; } + _FORCE_INLINE_ operator T() const { return local_ref; } + _FORCE_INLINE_ operator jvalue() const { return (jvalue)local_ref; } + + _FORCE_INLINE_ operator bool() const { return local_ref != NULL; } + + _FORCE_INLINE_ bool operator==(std::nullptr_t) const { + return local_ref == nullptr; + } + + _FORCE_INLINE_ bool operator!=(std::nullptr_t) const { + return local_ref != nullptr; + } + + ScopedLocalRef(const ScopedLocalRef &) = delete; + ScopedLocalRef &operator=(const ScopedLocalRef &) = delete; + + ScopedLocalRef(JNIEnv *p_env, T p_local_ref) : + env(p_env), + local_ref(p_local_ref) { + } + + ~ScopedLocalRef() { + if (local_ref) { + env->DeleteLocalRef(local_ref); + } + } +}; + +bool jni_exception_check(JNIEnv *p_env) { + if (p_env->ExceptionCheck()) { + // Print the exception to logcat + p_env->ExceptionDescribe(); + + p_env->ExceptionClear(); + return true; + } + + return false; +} + String app_native_lib_dir_cache; String determine_app_native_lib_dir() { JNIEnv *env = ThreadAndroid::get_env(); - jclass activityThreadClass = env->FindClass("android/app/ActivityThread"); + ScopedLocalRef<jclass> activityThreadClass(env, env->FindClass("android/app/ActivityThread")); jmethodID currentActivityThread = env->GetStaticMethodID(activityThreadClass, "currentActivityThread", "()Landroid/app/ActivityThread;"); - jobject activityThread = env->CallStaticObjectMethod(activityThreadClass, currentActivityThread); + ScopedLocalRef<jobject> activityThread(env, env->CallStaticObjectMethod(activityThreadClass, currentActivityThread)); jmethodID getApplication = env->GetMethodID(activityThreadClass, "getApplication", "()Landroid/app/Application;"); - jobject ctx = env->CallObjectMethod(activityThread, getApplication); + ScopedLocalRef<jobject> ctx(env, env->CallObjectMethod(activityThread, getApplication)); jmethodID getApplicationInfo = env->GetMethodID(env->GetObjectClass(ctx), "getApplicationInfo", "()Landroid/content/pm/ApplicationInfo;"); - jobject applicationInfo = env->CallObjectMethod(ctx, getApplicationInfo); + ScopedLocalRef<jobject> applicationInfo(env, env->CallObjectMethod(ctx, getApplicationInfo)); jfieldID nativeLibraryDirField = env->GetFieldID(env->GetObjectClass(applicationInfo), "nativeLibraryDir", "Ljava/lang/String;"); - jstring nativeLibraryDir = (jstring)env->GetObjectField(applicationInfo, nativeLibraryDirField); + ScopedLocalRef<jstring> nativeLibraryDir(env, (jstring)env->GetObjectField(applicationInfo, nativeLibraryDirField)); String result; - const char *const nativeLibraryDir_utf8 = env->GetStringUTFChars(nativeLibraryDir, NULL); - if (nativeLibraryDir_utf8) { - result.parse_utf8(nativeLibraryDir_utf8); - env->ReleaseStringUTFChars(nativeLibraryDir, nativeLibraryDir_utf8); + const char *const nativeLibraryDirUtf8 = env->GetStringUTFChars(nativeLibraryDir, NULL); + if (nativeLibraryDirUtf8) { + result.parse_utf8(nativeLibraryDirUtf8); + env->ReleaseStringUTFChars(nativeLibraryDir, nativeLibraryDirUtf8); } return result; @@ -90,7 +150,53 @@ int gd_mono_convert_dl_flags(int flags) { return lflags; } +#ifndef GD_MONO_ANDROID_SO_NAME +#define GD_MONO_ANDROID_SO_NAME "libmonosgen-2.0.so" +#endif + +const char *mono_so_name = GD_MONO_ANDROID_SO_NAME; +const char *godot_so_name = "libgodot_android.so"; + +void *mono_dl_handle = NULL; +void *godot_dl_handle = NULL; + +void *try_dlopen(const String &p_so_path, int p_flags) { + if (!FileAccess::exists(p_so_path)) { + if (OS::get_singleton()->is_stdout_verbose()) + OS::get_singleton()->print("Cannot find shared library: '%s'\n", p_so_path.utf8().get_data()); + return NULL; + } + + int lflags = gd_mono_convert_dl_flags(p_flags); + + void *handle = dlopen(p_so_path.utf8().get_data(), lflags); + + if (!handle) { + if (OS::get_singleton()->is_stdout_verbose()) + OS::get_singleton()->print("Failed to open shared library: '%s'. Error: '%s'\n", p_so_path.utf8().get_data(), dlerror()); + return NULL; + } + + if (OS::get_singleton()->is_stdout_verbose()) + OS::get_singleton()->print("Successfully loaded shared library: '%s'\n", p_so_path.utf8().get_data()); + + return handle; +} + void *gd_mono_android_dlopen(const char *p_name, int p_flags, char **r_err, void *p_user_data) { + if (p_name == NULL) { + // __Internal + + if (!mono_dl_handle) { + String app_native_lib_dir = get_app_native_lib_dir(); + String so_path = path::join(app_native_lib_dir, mono_so_name); + + mono_dl_handle = try_dlopen(so_path, p_flags); + } + + return mono_dl_handle; + } + String name = String::utf8(p_name); if (name.ends_with(".dll.so") || name.ends_with(".exe.so")) { @@ -100,26 +206,7 @@ void *gd_mono_android_dlopen(const char *p_name, int p_flags, char **r_err, void String so_name = "lib-aot-" + orig_so_name; String so_path = path::join(app_native_lib_dir, so_name); - if (!FileAccess::exists(so_path)) { - if (OS::get_singleton()->is_stdout_verbose()) - OS::get_singleton()->print("Cannot find shared library: '%s'\n", so_path.utf8().get_data()); - return NULL; - } - - int lflags = gd_mono_convert_dl_flags(p_flags); - - void *handle = dlopen(so_path.utf8().get_data(), lflags); - - if (!handle) { - if (OS::get_singleton()->is_stdout_verbose()) - OS::get_singleton()->print("Failed to open shared library: '%s'. Error: '%s'\n", so_path.utf8().get_data(), dlerror()); - return NULL; - } - - if (OS::get_singleton()->is_stdout_verbose()) - OS::get_singleton()->print("Successfully loaded AOT shared library: '%s'\n", so_path.utf8().get_data()); - - return handle; + return try_dlopen(so_path, p_flags); } return NULL; @@ -131,16 +218,469 @@ void *gd_mono_android_dlsym(void *p_handle, const char *p_name, char **r_err, vo if (sym_addr) return sym_addr; + if (p_handle == mono_dl_handle && godot_dl_handle) { + // Looking up for '__Internal' P/Invoke. We want to search in both the Mono and Godot shared libraries. + // This is needed to resolve the monodroid P/Invoke functions that are defined at the bottom of the file. + sym_addr = dlsym(godot_dl_handle, p_name); + + if (sym_addr) + return sym_addr; + } + if (r_err) *r_err = str_format_new("%s\n", dlerror()); return NULL; } -void register_android_dl_fallback() { - mono_dl_fallback_register(gd_mono_android_dlopen, gd_mono_android_dlsym, NULL, NULL); +void *gd_mono_android_dlclose(void *p_handle, void *p_user_data) { + dlclose(p_handle); + + // Not sure if this ever happens. Does Mono close the handle for the main module? + if (p_handle == mono_dl_handle) + mono_dl_handle = NULL; + + return NULL; +} + +int32_t build_version_sdk_int = 0; + +int32_t get_build_version_sdk_int() { + // The JNI code is the equivalent of: + // + // android.os.Build.VERSION.SDK_INT + + if (build_version_sdk_int == 0) { + JNIEnv *env = ThreadAndroid::get_env(); + + jclass versionClass = env->FindClass("android/os/Build$VERSION"); + ERR_FAIL_NULL_V(versionClass, 0); + + jfieldID sdkIntField = env->GetStaticFieldID(versionClass, "SDK_INT", "I"); + ERR_FAIL_NULL_V(sdkIntField, 0); + + build_version_sdk_int = (int32_t)env->GetStaticIntField(versionClass, sdkIntField); + } + + return build_version_sdk_int; +} + +jobject certStore = NULL; // KeyStore + +MonoBoolean _gd_mono_init_cert_store() { + // The JNI code is the equivalent of: + // + // try { + // certStoreLocal = KeyStore.getInstance("AndroidCAStore"); + // certStoreLocal.load(null); + // certStore = certStoreLocal; + // return true; + // } catch (Exception e) { + // return false; + // } + + JNIEnv *env = ThreadAndroid::get_env(); + + ScopedLocalRef<jclass> keyStoreClass(env, env->FindClass("java/security/KeyStore")); + + jmethodID getInstance = env->GetStaticMethodID(keyStoreClass, "getInstance", "(Ljava/lang/String;)Ljava/security/KeyStore;"); + jmethodID load = env->GetMethodID(keyStoreClass, "load", "(Ljava/security/KeyStore$LoadStoreParameter;)V"); + + ScopedLocalRef<jstring> androidCAStoreString(env, env->NewStringUTF("AndroidCAStore")); + + ScopedLocalRef<jobject> certStoreLocal(env, env->CallStaticObjectMethod(keyStoreClass, getInstance, androidCAStoreString.get())); + + if (jni_exception_check(env)) + return 0; + + env->CallVoidMethod(certStoreLocal, load, NULL); + + if (jni_exception_check(env)) + return 0; + + certStore = env->NewGlobalRef(certStoreLocal); + + return 1; +} + +MonoArray *_gd_mono_android_cert_store_lookup(MonoString *p_alias) { + // The JNI code is the equivalent of: + // + // Certificate certificate = certStore.getCertificate(alias); + // if (certificate == null) + // return null; + // return certificate.getEncoded(); + + MonoError mono_error; + char *alias_utf8 = mono_string_to_utf8_checked(p_alias, &mono_error); + + if (!mono_error_ok(&mono_error)) { + ERR_PRINTS(String() + "Failed to convert MonoString* to UTF-8: '" + mono_error_get_message(&mono_error) + "'."); + mono_error_cleanup(&mono_error); + return NULL; + } + + JNIEnv *env = ThreadAndroid::get_env(); + + ScopedLocalRef<jstring> js_alias(env, env->NewStringUTF(alias_utf8)); + mono_free(alias_utf8); + + ScopedLocalRef<jclass> keyStoreClass(env, env->FindClass("java/security/KeyStore")); + ERR_FAIL_NULL_V(keyStoreClass, NULL); + ScopedLocalRef<jclass> certificateClass(env, env->FindClass("java/security/cert/Certificate")); + ERR_FAIL_NULL_V(certificateClass, NULL); + + jmethodID getCertificate = env->GetMethodID(keyStoreClass, "getCertificate", "(Ljava/lang/String;)Ljava/security/cert/Certificate;"); + ERR_FAIL_NULL_V(getCertificate, NULL); + + jmethodID getEncoded = env->GetMethodID(certificateClass, "getEncoded", "()[B"); + ERR_FAIL_NULL_V(getEncoded, NULL); + + ScopedLocalRef<jobject> certificate(env, env->CallObjectMethod(certStore, getCertificate, js_alias.get())); + + if (!certificate) + return NULL; + + ScopedLocalRef<jbyteArray> encoded(env, (jbyteArray)env->CallObjectMethod(certificate, getEncoded)); + jsize encodedLength = env->GetArrayLength(encoded); + + MonoArray *encoded_ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(uint8_t), encodedLength); + uint8_t *dest = (uint8_t *)mono_array_addr(encoded_ret, uint8_t, 0); + + env->GetByteArrayRegion(encoded, 0, encodedLength, reinterpret_cast<jbyte *>(dest)); + + return encoded_ret; +} + +void initialize() { + // We need to set this environment variable to make the monodroid BCL use btls instead of legacy as the default provider + OS::get_singleton()->set_environment("XA_TLS_PROVIDER", "btls"); + + mono_dl_fallback_register(gd_mono_android_dlopen, gd_mono_android_dlsym, gd_mono_android_dlclose, NULL); + + String app_native_lib_dir = get_app_native_lib_dir(); + String so_path = path::join(app_native_lib_dir, godot_so_name); + + godot_dl_handle = try_dlopen(so_path, gd_mono_convert_dl_flags(MONO_DL_LAZY)); +} + +void register_internal_calls() { + mono_add_internal_call("Android.Runtime.AndroidEnvironment::_gd_mono_init_cert_store", (void *)_gd_mono_init_cert_store); + mono_add_internal_call("Android.Runtime.AndroidEnvironment::_gd_mono_android_cert_store_lookup", (void *)_gd_mono_android_cert_store_lookup); +} + +void cleanup() { + // This is called after shutting down the Mono runtime + + if (mono_dl_handle) + gd_mono_android_dlclose(mono_dl_handle, NULL); + + if (godot_dl_handle) + gd_mono_android_dlclose(godot_dl_handle, NULL); + + JNIEnv *env = ThreadAndroid::get_env(); + + if (certStore) { + env->DeleteGlobalRef(certStore); + certStore = NULL; + } } } // namespace GDMonoAndroid +using namespace GDMonoAndroid; + +// The following are P/Invoke functions required by the monodroid profile of the BCL. +// These are P/Invoke functions and not internal calls, hence why they use +// 'mono_bool' and 'const char*' instead of 'MonoBoolean' and 'MonoString*'. + +#define GD_PINVOKE_EXPORT extern "C" __attribute__((visibility("default"))) + +GD_PINVOKE_EXPORT int32_t _monodroid_get_android_api_level() { + return get_build_version_sdk_int(); +} + +GD_PINVOKE_EXPORT void monodroid_free(void *ptr) { + free(ptr); +} + +GD_PINVOKE_EXPORT int32_t monodroid_get_system_property(const char *p_name, char **r_value) { + char prop_value_str[PROP_VALUE_MAX + 1] = { 0 }; + + int len = __system_property_get(p_name, prop_value_str); + + if (r_value) { + if (len >= 0) { + *r_value = (char *)malloc(len + 1); + if (!*r_value) + return -1; + memcpy(*r_value, prop_value_str, len); + (*r_value)[len] = '\0'; + } else { + *r_value = NULL; + } + } + + return len; +} + +GD_PINVOKE_EXPORT mono_bool _monodroid_get_network_interface_up_state(const char *p_ifname, mono_bool *r_is_up) { + // The JNI code is the equivalent of: + // + // NetworkInterface.getByName(p_ifname).isUp() + + if (!r_is_up || !p_ifname || strlen(p_ifname) == 0) + return 0; + + *r_is_up = 0; + + JNIEnv *env = ThreadAndroid::get_env(); + + jclass networkInterfaceClass = env->FindClass("java/net/NetworkInterface"); + ERR_FAIL_NULL_V(networkInterfaceClass, 0); + + jmethodID getByName = env->GetStaticMethodID(networkInterfaceClass, "getByName", "(Ljava/lang/String;)Ljava/net/NetworkInterface;"); + ERR_FAIL_NULL_V(getByName, 0); + + jmethodID isUp = env->GetMethodID(networkInterfaceClass, "isUp", "()Z"); + ERR_FAIL_NULL_V(isUp, 0); + + ScopedLocalRef<jstring> js_ifname(env, env->NewStringUTF(p_ifname)); + ScopedLocalRef<jobject> networkInterface(env, env->CallStaticObjectMethod(networkInterfaceClass, getByName, js_ifname.get())); + + if (!networkInterface) + return 0; + + *r_is_up = (mono_bool)env->CallBooleanMethod(networkInterface, isUp); + + return 1; +} + +GD_PINVOKE_EXPORT mono_bool _monodroid_get_network_interface_supports_multicast(const char *p_ifname, mono_bool *r_supports_multicast) { + // The JNI code is the equivalent of: + // + // NetworkInterface.getByName(p_ifname).supportsMulticast() + + if (!r_supports_multicast || !p_ifname || strlen(p_ifname) == 0) + return 0; + + *r_supports_multicast = 0; + + JNIEnv *env = ThreadAndroid::get_env(); + + jclass networkInterfaceClass = env->FindClass("java/net/NetworkInterface"); + ERR_FAIL_NULL_V(networkInterfaceClass, 0); + + jmethodID getByName = env->GetStaticMethodID(networkInterfaceClass, "getByName", "(Ljava/lang/String;)Ljava/net/NetworkInterface;"); + ERR_FAIL_NULL_V(getByName, 0); + + jmethodID supportsMulticast = env->GetMethodID(networkInterfaceClass, "supportsMulticast", "()Z"); + ERR_FAIL_NULL_V(supportsMulticast, 0); + + ScopedLocalRef<jstring> js_ifname(env, env->NewStringUTF(p_ifname)); + ScopedLocalRef<jobject> networkInterface(env, env->CallStaticObjectMethod(networkInterfaceClass, getByName, js_ifname.get())); + + if (!networkInterface) + return 0; + + *r_supports_multicast = (mono_bool)env->CallBooleanMethod(networkInterface, supportsMulticast); + + return 1; +} + +static const int dns_servers_len = 8; + +static void interop_get_active_network_dns_servers(char **r_dns_servers, int *dns_servers_count) { + // The JNI code is the equivalent of: + // + // ConnectivityManager connectivityManager = (ConnectivityManager)getApplicationContext() + // .getSystemService(Context.CONNECTIVITY_SERVICE); + // Network activeNerwork = connectivityManager.getActiveNetwork(); + // LinkProperties linkProperties = connectivityManager.getLinkProperties(activeNerwork); + // List<String> dnsServers = linkProperties.getDnsServers().stream() + // .map(inetAddress -> inetAddress.getHostAddress()).collect(Collectors.toList()); + +#ifdef DEBUG_ENABLED + CRASH_COND(get_build_version_sdk_int() < 23); +#endif + + JNIEnv *env = ThreadAndroid::get_env(); + + GodotJavaWrapper *godot_java = ((OS_Android *)OS::get_singleton())->get_godot_java(); + jobject activity = godot_java->get_activity(); + + ScopedLocalRef<jclass> activityClass(env, env->GetObjectClass(activity)); + ERR_FAIL_NULL(activityClass); + + jmethodID getApplicationContext = env->GetMethodID(activityClass, "getApplicationContext", "()Landroid/content/Context;"); + + ScopedLocalRef<jobject> applicationContext(env, env->CallObjectMethod(activity, getApplicationContext)); + + ScopedLocalRef<jclass> contextClass(env, env->FindClass("android/content/Context")); + ERR_FAIL_NULL(contextClass); + + jfieldID connectivityServiceField = env->GetStaticFieldID(contextClass, "CONNECTIVITY_SERVICE", "Ljava/lang/String;"); + ScopedLocalRef<jstring> connectivityServiceString(env, (jstring)env->GetStaticObjectField(contextClass, connectivityServiceField)); + + jmethodID getSystemService = env->GetMethodID(contextClass, "getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;"); + + ScopedLocalRef<jobject> connectivityManager(env, env->CallObjectMethod(applicationContext, getSystemService, connectivityServiceString.get())); + + if (!connectivityManager) + return; + + ScopedLocalRef<jclass> connectivityManagerClass(env, env->FindClass("android/net/ConnectivityManager")); + ERR_FAIL_NULL(connectivityManagerClass); + + jmethodID getActiveNetwork = env->GetMethodID(connectivityManagerClass, "getActiveNetwork", "()Landroid/net/Network;"); + ERR_FAIL_NULL(getActiveNetwork); + + ScopedLocalRef<jobject> activeNetwork(env, env->CallObjectMethod(connectivityManager, getActiveNetwork)); + + if (!activeNetwork) + return; + + jmethodID getLinkProperties = env->GetMethodID(connectivityManagerClass, + "getLinkProperties", "(Landroid/net/Network;)Landroid/net/LinkProperties;"); + ERR_FAIL_NULL(getLinkProperties); + + ScopedLocalRef<jobject> linkProperties(env, env->CallObjectMethod(connectivityManager, getLinkProperties, activeNetwork.get())); + + if (!linkProperties) + return; + + ScopedLocalRef<jclass> linkPropertiesClass(env, env->FindClass("android/net/LinkProperties")); + ERR_FAIL_NULL(linkPropertiesClass); + + jmethodID getDnsServers = env->GetMethodID(linkPropertiesClass, "getDnsServers", "()Ljava/util/List;"); + ERR_FAIL_NULL(getDnsServers); + + ScopedLocalRef<jobject> dnsServers(env, env->CallObjectMethod(linkProperties, getDnsServers)); + + if (!dnsServers) + return; + + ScopedLocalRef<jclass> listClass(env, env->FindClass("java/util/List")); + ERR_FAIL_NULL(listClass); + + jmethodID listSize = env->GetMethodID(listClass, "size", "()I"); + ERR_FAIL_NULL(listSize); + + int dnsServersCount = env->CallIntMethod(dnsServers, listSize); + + if (dnsServersCount > dns_servers_len) + dnsServersCount = dns_servers_len; + + if (dnsServersCount <= 0) + return; + + jmethodID listGet = env->GetMethodID(listClass, "get", "(I)Ljava/lang/Object;"); + ERR_FAIL_NULL(listGet); + + ScopedLocalRef<jclass> inetAddressClass(env, env->FindClass("java/net/InetAddress")); + ERR_FAIL_NULL(inetAddressClass); + + jmethodID getHostAddress = env->GetMethodID(inetAddressClass, "getHostAddress", "()Ljava/lang/String;"); + ERR_FAIL_NULL(getHostAddress); + + for (int i = 0; i < dnsServersCount; i++) { + ScopedLocalRef<jobject> dnsServer(env, env->CallObjectMethod(dnsServers, listGet, (jint)i)); + if (!dnsServer) + continue; + + ScopedLocalRef<jstring> hostAddress(env, (jstring)env->CallObjectMethod(dnsServer, getHostAddress)); + const char *host_address = env->GetStringUTFChars(hostAddress, 0); + + r_dns_servers[i] = strdup(host_address); // freed by the BCL + (*dns_servers_count)++; + + env->ReleaseStringUTFChars(hostAddress, host_address); + } + + // jesus... +} + +GD_PINVOKE_EXPORT int32_t _monodroid_get_dns_servers(void **r_dns_servers_array) { + if (!r_dns_servers_array) + return -1; + + *r_dns_servers_array = NULL; + + char *dns_servers[dns_servers_len]; + int dns_servers_count = 0; + + if (_monodroid_get_android_api_level() < 26) { + // The 'net.dns*' system properties are no longer available in Android 8.0 (API level 26) and greater: + // https://developer.android.com/about/versions/oreo/android-8.0-changes.html#o-pri + + char prop_name[] = "net.dns*"; + + for (int i = 0; i < dns_servers_len; i++) { + prop_name[7] = (char)(i + 0x31); + char *prop_value; + int32_t len = monodroid_get_system_property(prop_name, &prop_value); + + if (len > 0) { + dns_servers[dns_servers_count] = strndup(prop_value, (size_t)len); // freed by the BCL + dns_servers_count++; + free(prop_value); + } + } + } else { + // Alternative for Oreo and greater + interop_get_active_network_dns_servers(dns_servers, &dns_servers_count); + } + + if (dns_servers_count > 0) { + size_t ret_size = sizeof(char *) * (size_t)dns_servers_count; + *r_dns_servers_array = malloc(ret_size); // freed by the BCL + memcpy(*r_dns_servers_array, dns_servers, ret_size); + } + + return dns_servers_count; +} + +GD_PINVOKE_EXPORT const char *_monodroid_timezone_get_default_id() { + // The JNI code is the equivalent of: + // + // TimeZone.getDefault().getID() + + JNIEnv *env = ThreadAndroid::get_env(); + + ScopedLocalRef<jclass> timeZoneClass(env, env->FindClass("java/util/TimeZone")); + ERR_FAIL_NULL_V(timeZoneClass, NULL); + + jmethodID getDefault = env->GetStaticMethodID(timeZoneClass, "getDefault", "()Ljava/util/TimeZone;"); + ERR_FAIL_NULL_V(getDefault, NULL); + + jmethodID getID = env->GetMethodID(timeZoneClass, "getID", "()Ljava/lang/String;"); + ERR_FAIL_NULL_V(getID, NULL); + + ScopedLocalRef<jobject> defaultTimeZone(env, env->CallStaticObjectMethod(timeZoneClass, getDefault)); + + if (!defaultTimeZone) + return NULL; + + ScopedLocalRef<jstring> defaultTimeZoneID(env, (jstring)env->CallObjectMethod(defaultTimeZone, getID)); + + if (!defaultTimeZoneID) + return NULL; + + const char *default_time_zone_id = env->GetStringUTFChars(defaultTimeZoneID, 0); + + char *result = strdup(default_time_zone_id); // freed by the BCL + + env->ReleaseStringUTFChars(defaultTimeZoneID, default_time_zone_id); + + return result; +} + +GD_PINVOKE_EXPORT int32_t _monodroid_getifaddrs(struct ifaddrs **p_ifap) { + return getifaddrs(p_ifap); +} + +GD_PINVOKE_EXPORT void _monodroid_freeifaddrs(struct ifaddrs *p_ifap) { + freeifaddrs(p_ifap); +} + #endif diff --git a/modules/mono/mono_gd/gd_mono_android.h b/modules/mono/mono_gd/gd_mono_android.h index 72bc799bfd..20ca266428 100644 --- a/modules/mono/mono_gd/gd_mono_android.h +++ b/modules/mono/mono_gd/gd_mono_android.h @@ -39,7 +39,11 @@ namespace GDMonoAndroid { String get_app_native_lib_dir(); -void register_android_dl_fallback(); +void initialize(); + +void register_internal_calls(); + +void cleanup(); } // namespace GDMonoAndroid diff --git a/modules/mono/mono_gd/gd_mono_cache.h b/modules/mono/mono_gd/gd_mono_cache.h index b21f92cdd8..a6d6da4f2b 100644 --- a/modules/mono/mono_gd/gd_mono_cache.h +++ b/modules/mono/mono_gd/gd_mono_cache.h @@ -42,20 +42,20 @@ struct CachedData { // corlib classes // Let's use the no-namespace format for these too - GDMonoClass *class_MonoObject; - GDMonoClass *class_bool; - GDMonoClass *class_int8_t; - GDMonoClass *class_int16_t; - GDMonoClass *class_int32_t; - GDMonoClass *class_int64_t; - GDMonoClass *class_uint8_t; - GDMonoClass *class_uint16_t; - GDMonoClass *class_uint32_t; - GDMonoClass *class_uint64_t; - GDMonoClass *class_float; - GDMonoClass *class_double; - GDMonoClass *class_String; - GDMonoClass *class_IntPtr; + GDMonoClass *class_MonoObject; // object + GDMonoClass *class_bool; // bool + GDMonoClass *class_int8_t; // sbyte + GDMonoClass *class_int16_t; // short + GDMonoClass *class_int32_t; // int + GDMonoClass *class_int64_t; // long + GDMonoClass *class_uint8_t; // byte + GDMonoClass *class_uint16_t; // ushort + GDMonoClass *class_uint32_t; // uint + GDMonoClass *class_uint64_t; // ulong + GDMonoClass *class_float; // float + GDMonoClass *class_double; // double + GDMonoClass *class_String; // string + GDMonoClass *class_IntPtr; // System.IntPtr GDMonoClass *class_System_Collections_IEnumerable; GDMonoClass *class_System_Collections_IDictionary; diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp index d84359b1ab..56a9bf46a3 100644 --- a/modules/mono/mono_gd/gd_mono_field.cpp +++ b/modules/mono/mono_gd/gd_mono_field.cpp @@ -110,8 +110,14 @@ void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_ } break; case MONO_TYPE_STRING: { - MonoString *mono_string = GDMonoMarshal::mono_string_from_godot(p_value); - mono_field_set_value(p_object, mono_field, mono_string); + if (p_value.get_type() == Variant::NIL) { + // Otherwise, Variant -> String would return the string "Null" + MonoString *mono_string = NULL; + mono_field_set_value(p_object, mono_field, mono_string); + } else { + MonoString *mono_string = GDMonoMarshal::mono_string_from_godot(p_value); + mono_field_set_value(p_object, mono_field, mono_string); + } } break; case MONO_TYPE_VALUETYPE: { diff --git a/modules/mono/mono_gd/gd_mono_internals.cpp b/modules/mono/mono_gd/gd_mono_internals.cpp index 3324ecb3a8..5b50f735e0 100644 --- a/modules/mono/mono_gd/gd_mono_internals.cpp +++ b/modules/mono/mono_gd/gd_mono_internals.cpp @@ -73,7 +73,7 @@ void tie_managed_to_unmanaged(MonoObject *managed, Object *unmanaged) { script_binding.inited = true; script_binding.type_name = NATIVE_GDMONOCLASS_NAME(klass); script_binding.wrapper_class = klass; - script_binding.gchandle = MonoGCHandle::create_strong(managed); + script_binding.gchandle = ref ? MonoGCHandle::create_weak(managed) : MonoGCHandle::create_strong(managed); script_binding.owner = unmanaged; if (ref) { @@ -81,7 +81,9 @@ void tie_managed_to_unmanaged(MonoObject *managed, Object *unmanaged) { // This way if the unmanaged world has no references to our owner // but the managed instance is alive, the refcount will be 1 instead of 0. // See: godot_icall_Reference_Dtor(MonoObject *p_obj, Object *p_ptr) - ref->reference(); + + // May not me referenced yet, so we must use init_ref() instead of reference() + ref->init_ref(); } // The object was just created, no script instance binding should have been attached diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp index 3827960e6b..9f55b31edc 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.cpp +++ b/modules/mono/mono_gd/gd_mono_marshal.cpp @@ -374,6 +374,8 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty } case MONO_TYPE_STRING: { + if (p_var->get_type() == Variant::NIL) + return NULL; // Otherwise, Variant -> String would return the string "Null" return (MonoObject *)mono_string_from_godot(p_var->operator String()); } break; @@ -935,6 +937,8 @@ Array mono_array_to_Array(MonoArray *p_array) { return ret; } +// TODO: Use memcpy where possible + MonoArray *PoolIntArray_to_mono_array(const PoolIntArray &p_array) { PoolIntArray::Read r = p_array.read(); diff --git a/modules/mono/utils/path_utils.cpp b/modules/mono/utils/path_utils.cpp index 20863b1afe..a7bbc75e29 100644 --- a/modules/mono/utils/path_utils.cpp +++ b/modules/mono/utils/path_utils.cpp @@ -170,4 +170,41 @@ String join(const String &p_a, const String &p_b, const String &p_c, const Strin return path::join(path::join(path::join(p_a, p_b), p_c), p_d); } +String relative_to_impl(const String &p_path, const String &p_relative_to) { + // This function assumes arguments are normalized and absolute paths + + if (p_path.begins_with(p_relative_to)) { + return p_path.substr(p_relative_to.length() + 1); + } else { + String base_dir = p_relative_to.get_base_dir(); + + if (base_dir.length() <= 2 && (base_dir.empty() || base_dir.ends_with(":"))) + return p_path; + + return String("..").plus_file(relative_to_impl(p_path, base_dir)); + } +} + +#ifdef WINDOWS_ENABLED +String get_drive_letter(const String &p_norm_path) { + int idx = p_norm_path.find(":/"); + if (idx != -1 && idx < p_norm_path.find("/")) + return p_norm_path.substr(0, idx + 1); + return String(); +} +#endif + +String relative_to(const String &p_path, const String &p_relative_to) { + String relative_to_abs_norm = abspath(p_relative_to); + String path_abs_norm = abspath(p_path); + +#ifdef WINDOWS_ENABLED + if (get_drive_letter(relative_to_abs_norm) != get_drive_letter(path_abs_norm)) { + return path_abs_norm; + } +#endif + + 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 ca25bc09f7..7e868d2b5a 100644 --- a/modules/mono/utils/path_utils.h +++ b/modules/mono/utils/path_utils.h @@ -57,6 +57,8 @@ 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/recast/navigation_mesh_generator.cpp b/modules/recast/navigation_mesh_generator.cpp index 320591cf7c..b668085f90 100644 --- a/modules/recast/navigation_mesh_generator.cpp +++ b/modules/recast/navigation_mesh_generator.cpp @@ -62,7 +62,7 @@ void EditorNavigationMeshGenerator::_add_vertex(const Vector3 &p_vec3, Vector<fl } void EditorNavigationMeshGenerator::_add_mesh(const Ref<Mesh> &p_mesh, const Transform &p_xform, Vector<float> &p_verticies, Vector<int> &p_indices) { - int current_vertex_count = 0; + int current_vertex_count; for (int i = 0; i < p_mesh->get_surface_count(); i++) { current_vertex_count = p_verticies.size() / 3; diff --git a/modules/visual_script/doc_classes/VisualScriptCustomNode.xml b/modules/visual_script/doc_classes/VisualScriptCustomNode.xml index b079653591..f70e22c7d0 100644 --- a/modules/visual_script/doc_classes/VisualScriptCustomNode.xml +++ b/modules/visual_script/doc_classes/VisualScriptCustomNode.xml @@ -45,7 +45,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> - Return the specified input port's type. See the [code]TYPE_*[/code] enum in [@GlobalScope]. + Return the specified input port's type. See the [enum Variant.Type] values. </description> </method> <method name="_get_output_sequence_port_count" qualifiers="virtual"> @@ -86,7 +86,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> - Return the specified output's type. See the [code]TYPE_*[/code] enum in [@GlobalScope]. + Return the specified output's type. See the [enum Variant.Type] values. </description> </method> <method name="_get_text" qualifiers="virtual"> @@ -136,17 +136,17 @@ The start mode used the first time when [method _step] is called. </constant> <constant name="START_MODE_CONTINUE_SEQUENCE" value="1" enum="StartMode"> - The start mode used when [method _step] is called after coming back from a STEP_PUSH_STACK_BIT. + The start mode used when [method _step] is called after coming back from a [constant STEP_PUSH_STACK_BIT]. </constant> <constant name="START_MODE_RESUME_YIELD" value="2" enum="StartMode"> - The start mode used when [method _step] is called after resuming from STEP_YIELD_BIT. + The start mode used when [method _step] is called after resuming from [constant STEP_YIELD_BIT]. </constant> <constant name="STEP_PUSH_STACK_BIT" value="16777216"> Hint used by [method _step] to tell that control should return to it when there is no other node left to execute. This is used by [VisualScriptCondition] to redirect the sequence to the "Done" port after the [code]true[/code]/[code]false[/code] branch has finished execution. </constant> <constant name="STEP_GO_BACK_BIT" value="33554432"> - Hint used by [method _step] to tell that control should return back, either hitting a previous STEP_PUSH_STACK_BIT or exiting the function. + Hint used by [method _step] to tell that control should return back, either hitting a previous [constant STEP_PUSH_STACK_BIT] or exiting the function. </constant> <constant name="STEP_NO_ADVANCE_BIT" value="67108864"> </constant> diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp index b2791cfc8b..5b04404be7 100644 --- a/modules/visual_script/visual_script_editor.cpp +++ b/modules/visual_script/visual_script_editor.cpp @@ -37,6 +37,7 @@ #include "core/variant.h" #include "editor/editor_node.h" #include "editor/editor_resource_preview.h" +#include "editor/editor_scale.h" #include "scene/main/viewport.h" #include "visual_script_expression.h" #include "visual_script_flow_control.h" @@ -572,7 +573,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) { if (nd_list->is_input_port_editable()) { has_gnode_text = true; Button *btn = memnew(Button); - btn->set_text("Add Input Port"); + btn->set_text(TTR("Add Input Port")); hbnc->add_child(btn); btn->connect("pressed", this, "_add_input_port", varray(E->get())); } @@ -581,7 +582,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) { hbnc->add_spacer(); has_gnode_text = true; Button *btn = memnew(Button); - btn->set_text("Add Output Port"); + btn->set_text(TTR("Add Output Port")); hbnc->add_child(btn); btn->connect("pressed", this, "_add_output_port", varray(E->get())); } @@ -3464,6 +3465,7 @@ void VisualScriptEditor::_selected_connect_node(const String &p_text, const Stri ofs = ofs.snapped(Vector2(snap, snap)); } ofs /= EDSCALE; + ofs /= graph->get_zoom(); Set<int> vn; @@ -4755,7 +4757,7 @@ VisualScriptEditor::VisualScriptEditor() { HBoxContainer *graph_hbc = graph->get_zoom_hbox(); Label *base_lbl = memnew(Label); - base_lbl->set_text("Change Base Type: "); + base_lbl->set_text(TTR("Change Base Type:") + " "); graph_hbc->add_child(base_lbl); base_type_select = memnew(Button); @@ -4763,18 +4765,19 @@ VisualScriptEditor::VisualScriptEditor() { graph_hbc->add_child(base_type_select); Button *add_nds = memnew(Button); - add_nds->set_text("Add Nodes..."); + add_nds->set_text(TTR("Add Nodes...")); graph_hbc->add_child(add_nds); add_nds->connect("pressed", this, "_add_node_dialog"); Button *fn_btn = memnew(Button); - fn_btn->set_text("Add Function..."); + fn_btn->set_text(TTR("Add Function...")); graph_hbc->add_child(fn_btn); fn_btn->connect("pressed", this, "_create_function_dialog"); // Add Function Dialog. VBoxContainer *function_vb = memnew(VBoxContainer); function_vb->set_v_size_flags(SIZE_EXPAND_FILL); + function_vb->set_custom_minimum_size(Size2(450, 300) * EDSCALE); HBoxContainer *func_name_hbox = memnew(HBoxContainer); function_vb->add_child(func_name_hbox); @@ -4809,7 +4812,6 @@ VisualScriptEditor::VisualScriptEditor() { func_input_scroll->add_child(func_input_vbox); function_create_dialog = memnew(ConfirmationDialog); - function_create_dialog->set_custom_minimum_size(Size2(450, 300) * EDSCALE); function_create_dialog->set_v_size_flags(SIZE_EXPAND_FILL); function_create_dialog->set_title(TTR("Create Function")); function_create_dialog->add_child(function_vb); diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp index 857d640b43..2a8d67d403 100644 --- a/modules/visual_script/visual_script_nodes.cpp +++ b/modules/visual_script/visual_script_nodes.cpp @@ -1290,7 +1290,7 @@ public: if (!instance->get_variable(variable, p_outputs[0])) { r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD; r_error_str = RTR("VariableGet not found in script: ") + "'" + String(variable) + "'"; - return false; + return 0; } return 0; } diff --git a/modules/websocket/wsl_peer.cpp b/modules/websocket/wsl_peer.cpp index 9d610109ed..a86bcd1404 100644 --- a/modules/websocket/wsl_peer.cpp +++ b/modules/websocket/wsl_peer.cpp @@ -142,7 +142,7 @@ int wsl_genmask_callback(wslay_event_context_ptr ctx, uint8_t *buf, size_t len, void wsl_msg_recv_callback(wslay_event_context_ptr ctx, const struct wslay_event_on_msg_recv_arg *arg, void *user_data) { struct WSLPeer::PeerData *peer_data = (struct WSLPeer::PeerData *)user_data; - if (!peer_data->valid) { + if (!peer_data->valid || peer_data->closing) { return; } WSLPeer *peer = (WSLPeer *)peer_data->peer; @@ -293,6 +293,7 @@ void WSLPeer::close(int p_code, String p_reason) { CharString cs = p_reason.utf8(); wslay_event_queue_close(_data->ctx, p_code, (uint8_t *)cs.ptr(), cs.size()); wslay_event_send(_data->ctx); + _data->closing = true; } _in_buffer.clear(); diff --git a/modules/websocket/wsl_peer.h b/modules/websocket/wsl_peer.h index 01ad250468..a0242d120f 100644 --- a/modules/websocket/wsl_peer.h +++ b/modules/websocket/wsl_peer.h @@ -53,6 +53,7 @@ public: bool destroy; bool valid; bool is_server; + bool closing; void *obj; void *peer; Ref<StreamPeer> conn; @@ -68,6 +69,7 @@ public: id = 1; ctx = NULL; obj = NULL; + closing = false; peer = NULL; } }; diff --git a/platform/android/SCsub b/platform/android/SCsub index 65172a12c0..3ff5b8278a 100644 --- a/platform/android/SCsub +++ b/platform/android/SCsub @@ -12,6 +12,7 @@ android_files = [ 'file_access_jandroid.cpp', 'dir_access_jandroid.cpp', 'thread_jandroid.cpp', + 'net_socket_android.cpp', 'audio_driver_jandroid.cpp', 'java_godot_lib_jni.cpp', 'java_class_wrapper.cpp', diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 4194e129ef..0645efccd7 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -38,6 +38,7 @@ #include "core/project_settings.h" #include "core/version.h" #include "editor/editor_export.h" +#include "editor/editor_log.h" #include "editor/editor_node.h" #include "editor/editor_settings.h" #include "platform/android/logo.gen.h" 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 4dae2dcc53..d951998632 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/Godot.java +++ b/platform/android/java/lib/src/org/godotengine/godot/Godot.java @@ -96,6 +96,7 @@ import java.util.Locale; import javax.microedition.khronos.opengles.GL10; import org.godotengine.godot.input.GodotEditText; import org.godotengine.godot.payments.PaymentsManager; +import org.godotengine.godot.utils.GodotNetUtils; import org.godotengine.godot.utils.PermissionsUtil; import org.godotengine.godot.xr.XRMode; @@ -243,6 +244,7 @@ public abstract class Godot extends Activity implements SensorEventListener, IDo private Sensor mGyroscope; public static GodotIO io; + public static GodotNetUtils netUtils; static SingletonBase[] singletons = new SingletonBase[MAX_SINGLETONS]; static int singleton_count = 0; @@ -502,6 +504,7 @@ public abstract class Godot extends Activity implements SensorEventListener, IDo io = new GodotIO(this); io.unique_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID); GodotLib.io = io; + netUtils = new GodotNetUtils(this); mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME); diff --git a/platform/android/java/lib/src/org/godotengine/godot/utils/GodotNetUtils.java b/platform/android/java/lib/src/org/godotengine/godot/utils/GodotNetUtils.java new file mode 100644 index 0000000000..6e191a84e8 --- /dev/null +++ b/platform/android/java/lib/src/org/godotengine/godot/utils/GodotNetUtils.java @@ -0,0 +1,83 @@ +/*************************************************************************/ +/* GodotNetUtils.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2019 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. */ +/*************************************************************************/ + +package org.godotengine.godot.utils; + +import android.content.Context; +import android.net.wifi.WifiManager; +import android.util.Log; +import org.godotengine.godot.Godot; + +/** + * This class handles Android-specific networking functions. + * For now, it only provides access to WifiManager.MulticastLock, which is needed on some devices + * to receive broadcast and multicast packets. + */ +public class GodotNetUtils { + + /* A single, reference counted, multicast lock, or null if permission CHANGE_WIFI_MULTICAST_STATE is missing */ + private WifiManager.MulticastLock multicastLock; + + public GodotNetUtils(Godot p_activity) { + if (PermissionsUtil.hasManifestPermission(p_activity, "android.permission.CHANGE_WIFI_MULTICAST_STATE")) { + WifiManager wifi = (WifiManager)p_activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE); + multicastLock = wifi.createMulticastLock("GodotMulticastLock"); + multicastLock.setReferenceCounted(true); + } + } + + /** + * Acquire the multicast lock. This is required on some devices to receive broadcast/multicast packets. + * This is done automatically by Godot when enabling broadcast or joining a multicast group on a socket. + */ + public void multicastLockAcquire() { + if (multicastLock == null) + return; + try { + multicastLock.acquire(); + } catch (RuntimeException e) { + Log.e("Godot", "Exception during multicast lock acquire: " + e); + } + } + + /** + * Release the multicast lock. + * This is done automatically by Godot when the lock is no longer needed by a socket. + */ + public void multicastLockRelease() { + if (multicastLock == null) + return; + try { + multicastLock.release(); + } catch (RuntimeException e) { + Log.e("Godot", "Exception during multicast lock release: " + e); + } + } +} diff --git a/platform/android/java/lib/src/org/godotengine/godot/utils/PermissionsUtil.java b/platform/android/java/lib/src/org/godotengine/godot/utils/PermissionsUtil.java index 21df5a91b0..e340135f69 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/utils/PermissionsUtil.java +++ b/platform/android/java/lib/src/org/godotengine/godot/utils/PermissionsUtil.java @@ -101,7 +101,7 @@ public final class PermissionsUtil { return false; } - if (manifestPermissions == null || manifestPermissions.length == 0) + if (manifestPermissions.length == 0) return true; List<String> dangerousPermissions = new ArrayList<>(); @@ -141,8 +141,8 @@ public final class PermissionsUtil { e.printStackTrace(); return new String[0]; } - if (manifestPermissions == null || manifestPermissions.length == 0) - return new String[0]; + if (manifestPermissions.length == 0) + return manifestPermissions; List<String> dangerousPermissions = new ArrayList<>(); for (String manifestPermission : manifestPermissions) { @@ -162,6 +162,24 @@ public final class PermissionsUtil { } /** + * Check if the given permission is in the AndroidManifest.xml file. + * @param activity the caller activity for this method. + * @param permission the permession to look for in the manifest file. + * @return "true" if the permission is in the manifest file of the activity, "false" otherwise. + */ + public static boolean hasManifestPermission(Godot activity, String permission) { + try { + for (String p : getManifestPermissions(activity)) { + if (permission.equals(p)) + return true; + } + } catch (PackageManager.NameNotFoundException e) { + } + + return false; + } + + /** * Returns the permissions defined in the AndroidManifest.xml file. * @param activity the caller activity for this method. * @return manifest permissions list @@ -170,6 +188,8 @@ public final class PermissionsUtil { private static String[] getManifestPermissions(Godot activity) throws PackageManager.NameNotFoundException { PackageManager packageManager = activity.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo(activity.getPackageName(), PackageManager.GET_PERMISSIONS); + if (packageInfo.requestedPermissions == null) + return new String[0]; return packageInfo.requestedPermissions; } diff --git a/platform/android/java_godot_lib_jni.cpp b/platform/android/java_godot_lib_jni.cpp index a14e0a1960..1ad1fb0afe 100644 --- a/platform/android/java_godot_lib_jni.cpp +++ b/platform/android/java_godot_lib_jni.cpp @@ -43,6 +43,7 @@ #include "java_class_wrapper.h" #include "main/input_default.h" #include "main/main.h" +#include "net_socket_android.h" #include "os_android.h" #include "string_android.h" #include "thread_jandroid.h" @@ -635,6 +636,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv *en DirAccessJAndroid::setup(godot_io_java->get_instance()); AudioDriverAndroid::setup(godot_io_java->get_instance()); + NetSocketAndroid::setup(godot_java->get_member_object("netUtils", "Lorg/godotengine/godot/utils/GodotNetUtils;", env)); os_android = new OS_Android(godot_java, godot_io_java, p_use_apk_expansion); diff --git a/platform/android/net_socket_android.cpp b/platform/android/net_socket_android.cpp new file mode 100644 index 0000000000..78ef354c21 --- /dev/null +++ b/platform/android/net_socket_android.cpp @@ -0,0 +1,136 @@ +/*************************************************************************/ +/* net_socket_android.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#include "net_socket_android.h" + +#include "thread_jandroid.h" + +jobject NetSocketAndroid::net_utils = 0; +jclass NetSocketAndroid::cls = 0; +jmethodID NetSocketAndroid::_multicast_lock_acquire = 0; +jmethodID NetSocketAndroid::_multicast_lock_release = 0; + +void NetSocketAndroid::setup(jobject p_net_utils) { + + JNIEnv *env = ThreadAndroid::get_env(); + + net_utils = env->NewGlobalRef(p_net_utils); + + jclass c = env->GetObjectClass(net_utils); + cls = (jclass)env->NewGlobalRef(c); + + _multicast_lock_acquire = env->GetMethodID(cls, "multicastLockAcquire", "()V"); + _multicast_lock_release = env->GetMethodID(cls, "multicastLockRelease", "()V"); +} + +void NetSocketAndroid::multicast_lock_acquire() { + if (_multicast_lock_acquire) { + JNIEnv *env = ThreadAndroid::get_env(); + env->CallVoidMethod(net_utils, _multicast_lock_acquire); + } +} + +void NetSocketAndroid::multicast_lock_release() { + if (_multicast_lock_release) { + JNIEnv *env = ThreadAndroid::get_env(); + env->CallVoidMethod(net_utils, _multicast_lock_release); + } +} + +NetSocket *NetSocketAndroid::_create_func() { + return memnew(NetSocketAndroid); +} + +void NetSocketAndroid::make_default() { + _create = _create_func; +} + +NetSocketAndroid::NetSocketAndroid() : + wants_broadcast(false), + multicast_groups(0) { +} + +NetSocketAndroid::~NetSocketAndroid() { + close(); +} + +void NetSocketAndroid::close() { + NetSocketPosix::close(); + if (wants_broadcast) + multicast_lock_release(); + if (multicast_groups) + multicast_lock_release(); + wants_broadcast = false; + multicast_groups = 0; +} + +Error NetSocketAndroid::set_broadcasting_enabled(bool p_enabled) { + Error err = NetSocketPosix::set_broadcasting_enabled(p_enabled); + if (err != OK) + return err; + + if (p_enabled != wants_broadcast) { + if (p_enabled) { + multicast_lock_acquire(); + } else { + multicast_lock_release(); + } + + wants_broadcast = p_enabled; + } + + return OK; +} + +Error NetSocketAndroid::join_multicast_group(const IP_Address &p_multi_address, String p_if_name) { + Error err = NetSocketPosix::join_multicast_group(p_multi_address, p_if_name); + if (err != OK) + return err; + + if (!multicast_groups) + multicast_lock_acquire(); + multicast_groups++; + + return OK; +} + +Error NetSocketAndroid::leave_multicast_group(const IP_Address &p_multi_address, String p_if_name) { + Error err = NetSocketPosix::leave_multicast_group(p_multi_address, p_if_name); + if (err != OK) + return err; + + ERR_FAIL_COND_V(multicast_groups == 0, ERR_BUG); + + multicast_groups--; + if (!multicast_groups) + multicast_lock_release(); + + return OK; +} diff --git a/platform/android/net_socket_android.h b/platform/android/net_socket_android.h new file mode 100644 index 0000000000..1ecbac0c1a --- /dev/null +++ b/platform/android/net_socket_android.h @@ -0,0 +1,78 @@ +/*************************************************************************/ +/* net_socket_android.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2019 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 NET_SOCKET_ANDROID_H +#define NET_SOCKET_ANDROID_H + +#include "drivers/unix/net_socket_posix.h" + +#include <jni.h> + +/** + * Specialized NetSocket implementation for Android. + * + * Some devices requires Android-specific code to acquire a MulticastLock + * before sockets are allowed to receive broadcast and multicast packets. + * This implementation calls into Java code and automatically acquire/release + * the lock when broadcasting is enabled/disabled on a socket, or that socket + * joins/leaves a multicast group. + */ +class NetSocketAndroid : public NetSocketPosix { + +private: + static jobject net_utils; + static jclass cls; + static jmethodID _multicast_lock_acquire; + static jmethodID _multicast_lock_release; + + bool wants_broadcast; + int multicast_groups; + + static void multicast_lock_acquire(); + static void multicast_lock_release(); + +protected: + static NetSocket *_create_func(); + +public: + static void make_default(); + static void setup(jobject p_net_utils); + + virtual void close(); + + virtual Error set_broadcasting_enabled(bool p_enabled); + virtual Error join_multicast_group(const IP_Address &p_multi_address, String p_if_name); + virtual Error leave_multicast_group(const IP_Address &p_multi_address, String p_if_name); + + NetSocketAndroid(); + ~NetSocketAndroid(); +}; + +#endif diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp index defee8f1f1..f08dcc449e 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -43,6 +43,7 @@ #include "dir_access_jandroid.h" #include "file_access_jandroid.h" +#include "net_socket_android.h" #include <dlfcn.h> @@ -106,6 +107,8 @@ void OS_Android::initialize_core() { DirAccess::make_default<DirAccessJAndroid>(DirAccess::ACCESS_RESOURCES); DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_USERDATA); DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_FILESYSTEM); + + NetSocketAndroid::make_default(); } void OS_Android::set_opengl_extensions(const char *p_gl_extensions) { @@ -175,9 +178,6 @@ Error OS_Android::initialize(const VideoMode &p_desired, int p_video_driver, int input = memnew(InputDefault); input->set_fallback_mapping(godot_java->get_input_fallback_mapping()); - ///@TODO implement a subclass for Android and instantiate that instead - camera_server = memnew(CameraServer); - //power_manager = memnew(PowerAndroid); return OK; @@ -196,8 +196,6 @@ void OS_Android::delete_main_loop() { void OS_Android::finalize() { - memdelete(camera_server); - memdelete(input); } diff --git a/platform/android/os_android.h b/platform/android/os_android.h index a290c0cedd..16b5c8c3a3 100644 --- a/platform/android/os_android.h +++ b/platform/android/os_android.h @@ -39,7 +39,6 @@ #include "main/input_default.h" //#include "power_android.h" #include "servers/audio_server.h" -#include "servers/camera_server.h" #include "servers/visual/rasterizer.h" class GodotJavaWrapper; @@ -79,8 +78,6 @@ private: VisualServer *visual_server; - CameraServer *camera_server; - mutable String data_dir_cache; //AudioDriverAndroid audio_driver_android; diff --git a/platform/haiku/os_haiku.cpp b/platform/haiku/os_haiku.cpp index 9c07535c85..438b50053f 100644 --- a/platform/haiku/os_haiku.cpp +++ b/platform/haiku/os_haiku.cpp @@ -133,8 +133,6 @@ Error OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p window->Show(); visual_server->init(); - camera_server = memnew(CameraServer); - AudioDriverManager::initialize(p_audio_driver); return OK; @@ -150,8 +148,6 @@ void OS_Haiku::finalize() { visual_server->finish(); memdelete(visual_server); - memdelete(camera_server); - memdelete(input); #if defined(OPENGL_ENABLED) diff --git a/platform/haiku/os_haiku.h b/platform/haiku/os_haiku.h index 70d78a1978..e1d4cf8d87 100644 --- a/platform/haiku/os_haiku.h +++ b/platform/haiku/os_haiku.h @@ -38,7 +38,6 @@ #include "haiku_direct_window.h" #include "main/input_default.h" #include "servers/audio_server.h" -#include "servers/camera_server.h" #include "servers/visual_server.h" class OS_Haiku : public OS_Unix { @@ -50,7 +49,6 @@ private: VisualServer *visual_server; VideoMode current_video_mode; int video_driver_index; - CameraServer *camera_server; #ifdef MEDIA_KIT_ENABLED AudioDriverMediaKit driver_media_kit; diff --git a/platform/iphone/SCsub b/platform/iphone/SCsub index 85ba56165b..fa1b124561 100644 --- a/platform/iphone/SCsub +++ b/platform/iphone/SCsub @@ -14,7 +14,6 @@ iphone_lib = [ 'in_app_store.mm', 'icloud.mm', 'ios.mm', - 'camera_ios.mm', ] env_ios = env.Clone() diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp index baae13c53d..8eac120939 100644 --- a/platform/iphone/export/export.cpp +++ b/platform/iphone/export/export.cpp @@ -63,6 +63,10 @@ class EditorExportPlatformIOS : public EditorExportPlatform { String architectures; String linker_flags; String cpp_code; + String modules_buildfile; + String modules_fileref; + String modules_buildphase; + String modules_buildgrp; }; struct ExportArchitecture { @@ -110,54 +114,14 @@ class EditorExportPlatformIOS : public EditorExportPlatform { return false; } - int segments = 0; - bool first = true; for (int i = 0; i < pname.length(); i++) { CharType c = pname[i]; - if (first && c == '.') { - if (r_error) { - *r_error = TTR("Identifier segments must be of non-zero length."); - } - return false; - } - if (c == '.') { - segments++; - first = true; - continue; - } - if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '-')) { + if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '-' || c == '.')) { if (r_error) { *r_error = vformat(TTR("The character '%s' is not allowed in Identifier."), String::chr(c)); } return false; } - if (first && (c >= '0' && c <= '9')) { - if (r_error) { - *r_error = TTR("A digit cannot be the first character in a Identifier segment."); - } - return false; - } - if (first && c == '-') { - if (r_error) { - *r_error = vformat(TTR("The character '%s' cannot be the first character in a Identifier segment."), String::chr(c)); - } - return false; - } - first = false; - } - - if (segments == 0) { - if (r_error) { - *r_error = TTR("The Identifier must have at least one '.' separator."); - } - return false; - } - - if (first) { - if (r_error) { - *r_error = TTR("Identifier segments must be of non-zero length."); - } - return false; } return true; @@ -178,6 +142,7 @@ public: return list; } virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0); + virtual void add_module_code(const Ref<EditorExportPreset> &p_preset, IOSConfigData &p_config_data, const String &p_name, const String &p_fid, const String &p_gid); virtual bool can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const; @@ -214,7 +179,7 @@ void EditorExportPlatformIOS::get_preset_features(const Ref<EditorExportPreset> Vector<EditorExportPlatformIOS::ExportArchitecture> EditorExportPlatformIOS::_get_supported_architectures() { Vector<ExportArchitecture> archs; - archs.push_back(ExportArchitecture("armv7", true)); + archs.push_back(ExportArchitecture("armv7", false)); // Disabled by default, not included in official templates. archs.push_back(ExportArchitecture("arm64", true)); return archs; } @@ -263,11 +228,16 @@ void EditorExportPlatformIOS::get_export_options(List<ExportOption> *r_options) r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/copyright"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "capabilities/arkit"), false)); + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "capabilities/camera"), false)); + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "capabilities/access_wifi"), false)); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "capabilities/game_center"), true)); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "capabilities/in_app_purchases"), false)); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "capabilities/push_notifications"), false)); + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "user_data/accessible_from_files_app"), false)); + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "user_data/accessible_from_itunes_sharing"), false)); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "privacy/camera_usage_description", PROPERTY_HINT_PLACEHOLDER_TEXT, "Provide a message if you need to use the camera"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "privacy/microphone_usage_description", PROPERTY_HINT_PLACEHOLDER_TEXT, "Provide a message if you need to use the microphone"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "privacy/photolibrary_usage_description", PROPERTY_HINT_PLACEHOLDER_TEXT, "Provide a message if you need access to the photo library"), "")); @@ -311,6 +281,14 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref<EditorExportPreset> &p_ for (int i = 0; i < lines.size(); i++) { if (lines[i].find("$binary") != -1) { strnew += lines[i].replace("$binary", p_config.binary_name) + "\n"; + } else if (lines[i].find("$modules_buildfile") != -1) { + strnew += lines[i].replace("$modules_buildfile", p_config.modules_buildfile) + "\n"; + } else if (lines[i].find("$modules_fileref") != -1) { + strnew += lines[i].replace("$modules_fileref", p_config.modules_fileref) + "\n"; + } else if (lines[i].find("$modules_buildphase") != -1) { + strnew += lines[i].replace("$modules_buildphase", p_config.modules_buildphase) + "\n"; + } else if (lines[i].find("$modules_buildgrp") != -1) { + strnew += lines[i].replace("$modules_buildgrp", p_config.modules_buildgrp) + "\n"; } else if (lines[i].find("$name") != -1) { strnew += lines[i].replace("$name", p_config.pkg_name) + "\n"; } else if (lines[i].find("$info") != -1) { @@ -349,6 +327,10 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref<EditorExportPreset> &p_ strnew += lines[i].replace("$linker_flags", p_config.linker_flags) + "\n"; } else if (lines[i].find("$cpp_code") != -1) { strnew += lines[i].replace("$cpp_code", p_config.cpp_code) + "\n"; + } else if (lines[i].find("$docs_in_place") != -1) { + strnew += lines[i].replace("$docs_in_place", ((bool)p_preset->get("user_data/accessible_from_files_app")) ? "<true/>" : "<false/>") + "\n"; + } else if (lines[i].find("$docs_sharing") != -1) { + strnew += lines[i].replace("$docs_sharing", ((bool)p_preset->get("user_data/accessible_from_itunes_sharing")) ? "<true/>" : "<false/>") + "\n"; } else if (lines[i].find("$access_wifi") != -1) { bool is_on = p_preset->get("capabilities/access_wifi"); strnew += lines[i].replace("$access_wifi", is_on ? "1" : "0") + "\n"; @@ -837,6 +819,22 @@ Vector<String> EditorExportPlatformIOS::_get_preset_architectures(const Ref<Edit return enabled_archs; } +void EditorExportPlatformIOS::add_module_code(const Ref<EditorExportPreset> &p_preset, EditorExportPlatformIOS::IOSConfigData &p_config_data, const String &p_name, const String &p_fid, const String &p_gid) { + if ((bool)p_preset->get("capabilities/" + p_name)) { + //add module static library + print_line("ADDING MODULE: " + p_name); + + p_config_data.modules_buildfile += p_gid + " /* libgodot_" + p_name + "_module.a in Frameworks */ = {isa = PBXBuildFile; fileRef = " + p_fid + " /* libgodot_" + p_name + "_module.a */; };\n\t\t"; + p_config_data.modules_fileref += p_fid + " /* libgodot_" + p_name + "_module.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = godot_" + p_name + "_module ; path = \"libgodot_" + p_name + "_module.a\"; sourceTree = \"<group>\"; };\n\t\t"; + p_config_data.modules_buildphase += p_gid + " /* libgodot_" + p_name + "_module.a */,\n\t\t\t\t"; + p_config_data.modules_buildgrp += p_fid + " /* libgodot_" + p_name + "_module.a */,\n\t\t\t\t"; + } else { + //add stub function for disabled module + p_config_data.cpp_code += "void register_" + p_name + "_types() { /*stub*/ };\n"; + p_config_data.cpp_code += "void unregister_" + p_name + "_types() { /*stub*/ };\n"; + } +} + Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags) { ExportNotifier notifier(*this, p_preset, p_debug, p_path, p_flags); @@ -934,7 +932,11 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p _get_additional_plist_content(), String(" ").join(_get_preset_architectures(p_preset)), _get_linker_flags(), - _get_cpp_code() + _get_cpp_code(), + "", + "", + "", + "" }; DirAccess *tmp_app_path = DirAccess::create_for_path(dest_dir); @@ -949,6 +951,10 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p return ERR_CANT_OPEN; } + add_module_code(p_preset, config_data, "arkit", "F9B95E6E2391205500AF0000", "F9C95E812391205C00BF0000"); + add_module_code(p_preset, config_data, "camera", "F9B95E6E2391205500AF0001", "F9C95E812391205C00BF0001"); + + //export rest of the files int ret = unzGoToFirstFile(src_pkg_zip); Vector<uint8_t> project_file_data; while (ret == UNZ_OK) { @@ -988,6 +994,20 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p is_execute = true; #endif file = "godot_ios.a"; + } else if (file.begins_with("libgodot_arkit")) { + if ((bool)p_preset->get("capabilities/arkit") && file.ends_with(String(p_debug ? "debug" : "release") + ".fat.a")) { + file = "libgodot_arkit_module.a"; + } else { + ret = unzGoToNextFile(src_pkg_zip); + continue; //ignore! + } + } else if (file.begins_with("libgodot_camera")) { + if ((bool)p_preset->get("capabilities/camera") && file.ends_with(String(p_debug ? "debug" : "release") + ".fat.a")) { + file = "libgodot_camera_module.a"; + } else { + ret = unzGoToNextFile(src_pkg_zip); + continue; //ignore! + } } if (file == project_file) { project_file_data = data; diff --git a/platform/iphone/os_iphone.cpp b/platform/iphone/os_iphone.cpp index 83b0660ef7..8984ed1d7b 100644 --- a/platform/iphone/os_iphone.cpp +++ b/platform/iphone/os_iphone.cpp @@ -164,8 +164,6 @@ Error OSIPhone::initialize(const VideoMode &p_desired, int p_video_driver, int p input = memnew(InputDefault); - camera_server = memnew(CameraIOS); - #ifdef GAME_CENTER_ENABLED game_center = memnew(GameCenter); Engine::get_singleton()->add_singleton(Engine::Singleton("GameCenter", game_center)); @@ -361,11 +359,6 @@ void OSIPhone::finalize() { if (main_loop) // should not happen? memdelete(main_loop); - if (camera_server) { - memdelete(camera_server); - camera_server = NULL; - } - visual_server->finish(); memdelete(visual_server); // memdelete(rasterizer); diff --git a/platform/iphone/os_iphone.h b/platform/iphone/os_iphone.h index 63799bbae8..1f49062cfc 100644 --- a/platform/iphone/os_iphone.h +++ b/platform/iphone/os_iphone.h @@ -37,7 +37,6 @@ #include "drivers/coreaudio/audio_driver_coreaudio.h" #include "drivers/unix/os_unix.h" -#include "camera_ios.h" #include "game_center.h" #include "icloud.h" #include "in_app_store.h" @@ -62,8 +61,6 @@ private: AudioDriverCoreAudio audio_driver; - CameraServer *camera_server; - #ifdef GAME_CENTER_ENABLED GameCenter *game_center; #endif diff --git a/platform/iphone/view_controller.h b/platform/iphone/view_controller.h index 68e3bc64fc..c2ef95acb5 100644 --- a/platform/iphone/view_controller.h +++ b/platform/iphone/view_controller.h @@ -45,4 +45,6 @@ - (BOOL)prefersStatusBarHidden; +- (BOOL)prefersHomeIndicatorAutoHidden; + @end diff --git a/platform/iphone/view_controller.mm b/platform/iphone/view_controller.mm index e52ad92bf2..5bdce6277b 100644 --- a/platform/iphone/view_controller.mm +++ b/platform/iphone/view_controller.mm @@ -32,6 +32,8 @@ #include "os_iphone.h" +#include "core/project_settings.h" + extern "C" { int add_path(int, char **); @@ -129,6 +131,14 @@ int add_cmdline(int p_argc, char **p_args) { return YES; } +- (BOOL)prefersHomeIndicatorAutoHidden { + if (GLOBAL_GET("display/window/ios/hide_home_indicator")) { + return YES; + } else { + return NO; + } +} + #ifdef GAME_CENTER_ENABLED - (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController { //[gameCenterViewController dismissViewControllerAnimated:YES completion:^{GameCenter::get_singleton()->game_center_closed();}];//version for signaling when overlay is completely gone diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py index c05b765c5e..7bf3e1bc1d 100644 --- a/platform/javascript/detect.py +++ b/platform/javascript/detect.py @@ -131,6 +131,13 @@ def configure(env): env.Append(LINKFLAGS=['-s', 'BINARYEN=1']) + # This needs to be defined for Emscripten using 'fastcomp' (default pre-1.39.0) + # and undefined if using 'upstream'. And to make things simple, earlier + # Emscripten versions didn't include 'fastcomp' in their path, so we check + # against the presence of 'upstream' to conditionally add the flag. + if not "upstream" in em_config['EMSCRIPTEN_ROOT']: + env.Append(LINKFLAGS=['-s', 'BINARYEN_TRAP_MODE=\'clamp\'']) + # Allow increasing memory buffer size during runtime. This is efficient # when using WebAssembly (in comparison to asm.js) and works well for # us since we don't know requirements at compile-time. diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index 652f6a1ce1..61919bb24a 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -970,8 +970,6 @@ Error OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, VisualServer *visual_server = memnew(VisualServerRaster()); input = memnew(InputDefault); - camera_server = memnew(CameraServer); - EMSCRIPTEN_RESULT result; #define EM_CHECK(ev) \ if (result != EMSCRIPTEN_RESULT_SUCCESS) \ @@ -1106,7 +1104,6 @@ void OS_JavaScript::delete_main_loop() { void OS_JavaScript::finalize() { - memdelete(camera_server); memdelete(input); } diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h index 10676c49f7..7c97e302e9 100644 --- a/platform/javascript/os_javascript.h +++ b/platform/javascript/os_javascript.h @@ -35,7 +35,6 @@ #include "drivers/unix/os_unix.h" #include "main/input_default.h" #include "servers/audio_server.h" -#include "servers/camera_server.h" #include "servers/visual/rasterizer.h" #include <emscripten/html5.h> @@ -67,8 +66,6 @@ class OS_JavaScript : public OS_Unix { int64_t sync_wait_time; int64_t last_sync_check_time; - CameraServer *camera_server; - static EM_BOOL fullscreen_change_callback(int p_event_type, const EmscriptenFullscreenChangeEvent *p_event, void *p_user_data); static EM_BOOL keydown_callback(int p_event_type, const EmscriptenKeyboardEvent *p_event, void *p_user_data); diff --git a/platform/osx/SCsub b/platform/osx/SCsub index 9620863b96..e15b4339a7 100644 --- a/platform/osx/SCsub +++ b/platform/osx/SCsub @@ -13,7 +13,6 @@ files = [ 'dir_access_osx.mm', 'joypad_osx.cpp', 'power_osx.cpp', - 'camera_osx.mm', ] prog = env.add_program('#bin/godot', files) diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index 9226aea369..5b6e4a4d8f 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -130,6 +130,8 @@ void EditorExportPlatformOSX::get_export_options(List<ExportOption> *r_options) r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/version"), "1.0")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/copyright"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "display/high_res"), false)); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "privacy/camera_usage_description", PROPERTY_HINT_PLACEHOLDER_TEXT, "Provide a message if you need to use the camera"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "privacy/microphone_usage_description", PROPERTY_HINT_PLACEHOLDER_TEXT, "Provide a message if you need to use the microphone"), "")); #ifdef OSX_ENABLED r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/enable"), false)); @@ -342,6 +344,12 @@ void EditorExportPlatformOSX::_fix_plist(const Ref<EditorExportPreset> &p_preset strnew += lines[i].replace("$copyright", p_preset->get("application/copyright")) + "\n"; } else if (lines[i].find("$highres") != -1) { strnew += lines[i].replace("$highres", p_preset->get("display/high_res") ? "<true/>" : "<false/>") + "\n"; + } else if (lines[i].find("$camera_usage_description") != -1) { + String description = p_preset->get("privacy/camera_usage_description"); + strnew += lines[i].replace("$camera_usage_description", description) + "\n"; + } else if (lines[i].find("$microphone_usage_description") != -1) { + String description = p_preset->get("privacy/microphone_usage_description"); + strnew += lines[i].replace("$microphone_usage_description", description) + "\n"; } else { strnew += lines[i] + "\n"; } diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h index a61b9234d1..78e1aa6c0a 100644 --- a/platform/osx/os_osx.h +++ b/platform/osx/os_osx.h @@ -33,7 +33,6 @@ #define BitMap _QDBitMap // Suppress deprecated QuickDraw definition. -#include "camera_osx.h" #include "core/os/input.h" #include "crash_handler_osx.h" #include "drivers/coreaudio/audio_driver_coreaudio.h" @@ -74,8 +73,6 @@ public: //Rasterizer *rasterizer; VisualServer *visual_server; - CameraServer *camera_server; - List<String> args; MainLoop *main_loop; diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index dac6721fb4..122e8274b9 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -340,12 +340,8 @@ static Vector2 get_mouse_pos(NSPoint locationInWindow, CGFloat backingScaleFacto //Update context if (OS_OSX::singleton->main_loop) { - [OS_OSX::singleton->context update]; - - //Force window resize ??? - NSRect frame = [OS_OSX::singleton->window_object frame]; - [OS_OSX::singleton->window_object setFrame:NSMakeRect(frame.origin.x, frame.origin.y, 1, 1) display:YES]; - [OS_OSX::singleton->window_object setFrame:frame display:YES]; + //Force window resize event + [self windowDidResize:notification]; } } } @@ -1632,8 +1628,6 @@ Error OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_a visual_server->init(); AudioDriverManager::initialize(p_audio_driver); - camera_server = memnew(CameraOSX); - input = memnew(InputDefault); joypad_osx = memnew(JoypadOSX); @@ -1663,11 +1657,6 @@ void OS_OSX::finalize() { delete_main_loop(); - if (camera_server) { - memdelete(camera_server); - camera_server = NULL; - } - memdelete(joypad_osx); memdelete(input); diff --git a/platform/server/os_server.cpp b/platform/server/os_server.cpp index 87dc6421ac..12e53054bc 100644 --- a/platform/server/os_server.cpp +++ b/platform/server/os_server.cpp @@ -88,8 +88,6 @@ Error OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int visual_server = memnew(VisualServerRaster); visual_server->init(); - camera_server = memnew(CameraServer); - AudioDriverManager::initialize(p_audio_driver); input = memnew(InputDefault); @@ -119,8 +117,6 @@ void OS_Server::finalize() { memdelete(input); - memdelete(camera_server); - memdelete(power_manager); ResourceLoader::remove_resource_format_loader(resource_loader_dummy); diff --git a/platform/server/os_server.h b/platform/server/os_server.h index b8119288ff..6d975ca7e0 100644 --- a/platform/server/os_server.h +++ b/platform/server/os_server.h @@ -71,7 +71,6 @@ class OS_Server : public OS_Unix { #endif CrashHandler crash_handler; - CameraServer *camera_server; int video_driver_index; diff --git a/platform/uwp/os_uwp.cpp b/platform/uwp/os_uwp.cpp index 60f2290355..eb0ae96111 100644 --- a/platform/uwp/os_uwp.cpp +++ b/platform/uwp/os_uwp.cpp @@ -303,9 +303,6 @@ Error OS_UWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_a visual_server->init(); - ///@TODO implement a subclass for UWP and instantiate that instead - camera_server = memnew(CameraServer); - input = memnew(InputDefault); joypad = ref new JoypadUWP(input); @@ -404,8 +401,6 @@ void OS_UWP::finalize() { memdelete(input); - memdelete(camera_server); - joypad = nullptr; } diff --git a/platform/uwp/os_uwp.h b/platform/uwp/os_uwp.h index 370cab6a9b..adca7d18cc 100644 --- a/platform/uwp/os_uwp.h +++ b/platform/uwp/os_uwp.h @@ -41,7 +41,6 @@ #include "main/input_default.h" #include "power_uwp.h" #include "servers/audio_server.h" -#include "servers/camera_server.h" #include "servers/visual/rasterizer.h" #include "servers/visual_server.h" @@ -93,8 +92,6 @@ private: VisualServer *visual_server; int pressrc; - CameraServer *camera_server; - ContextEGL_UWP *gl_context; Windows::UI::Core::CoreWindow ^ window; diff --git a/platform/windows/SCsub b/platform/windows/SCsub index 8426ccbb89..892d734734 100644 --- a/platform/windows/SCsub +++ b/platform/windows/SCsub @@ -8,7 +8,6 @@ import platform_windows_builders common_win = [ "godot_windows.cpp", - "camera_win.cpp", "context_gl_windows.cpp", "crash_handler_windows.cpp", "os_windows.cpp", diff --git a/platform/windows/context_gl_windows.cpp b/platform/windows/context_gl_windows.cpp index e715999378..34a5698394 100644 --- a/platform/windows/context_gl_windows.cpp +++ b/platform/windows/context_gl_windows.cpp @@ -34,6 +34,8 @@ #include "context_gl_windows.h" +#include <dwmapi.h> + #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 #define WGL_CONTEXT_FLAGS_ARB 0x2094 @@ -63,16 +65,52 @@ int ContextGL_Windows::get_window_height() { return OS::get_singleton()->get_video_mode().height; } +bool ContextGL_Windows::should_vsync_via_compositor() { + + if (OS::get_singleton()->is_window_fullscreen() || !OS::get_singleton()->is_vsync_via_compositor_enabled()) { + return false; + } + + // Note: All Windows versions supported by Godot have a compositor. + // It can be disabled on earlier Windows versions. + BOOL dwm_enabled; + + if (SUCCEEDED(DwmIsCompositionEnabled(&dwm_enabled))) { + return dwm_enabled; + } + + return false; +} + void ContextGL_Windows::swap_buffers() { SwapBuffers(hDC); + + if (use_vsync) { + bool vsync_via_compositor_now = should_vsync_via_compositor(); + + if (vsync_via_compositor_now) { + DwmFlush(); + } + + if (vsync_via_compositor_now != vsync_via_compositor) { + // The previous frame had a different operating mode than this + // frame. Set the 'vsync_via_compositor' member variable and the + // OpenGL swap interval to their proper values. + set_use_vsync(true); + } + } } void ContextGL_Windows::set_use_vsync(bool p_use) { + vsync_via_compositor = p_use && should_vsync_via_compositor(); + if (wglSwapIntervalEXT) { - wglSwapIntervalEXT(p_use ? 1 : 0); + int swap_interval = (p_use && !vsync_via_compositor) ? 1 : 0; + wglSwapIntervalEXT(swap_interval); } + use_vsync = p_use; } @@ -177,6 +215,7 @@ ContextGL_Windows::ContextGL_Windows(HWND hwnd, bool p_opengl_3_context) { opengl_3_context = p_opengl_3_context; hWnd = hwnd; use_vsync = false; + vsync_via_compositor = false; } ContextGL_Windows::~ContextGL_Windows() { diff --git a/platform/windows/context_gl_windows.h b/platform/windows/context_gl_windows.h index d23fba50e1..e65ea1928f 100644 --- a/platform/windows/context_gl_windows.h +++ b/platform/windows/context_gl_windows.h @@ -50,9 +50,12 @@ class ContextGL_Windows { HWND hWnd; bool opengl_3_context; bool use_vsync; + bool vsync_via_compositor; PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT; + static bool should_vsync_via_compositor(); + public: void release_current(); diff --git a/platform/windows/detect.py b/platform/windows/detect.py index 9a2b2bcb98..500736bd3f 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -151,14 +151,14 @@ def setup_msvc_auto(env): env['bits'] = '64' else: env['bits'] = '32' - print(" Found MSVC version %s, arch %s, bits=%s" % (env['MSVC_VERSION'], env['TARGET_ARCH'], env['bits'])) + print("Found MSVC version %s, arch %s, bits=%s" % (env['MSVC_VERSION'], env['TARGET_ARCH'], env['bits'])) if env['TARGET_ARCH'] in ('amd64', 'x86_64'): env["x86_libtheora_opt_vc"] = False def setup_mingw(env): """Set up env for use with mingw""" # Nothing to do here - print("Using Mingw") + print("Using MinGW") pass def configure_msvc(env, manual_msvc_config): @@ -221,7 +221,8 @@ def configure_msvc(env, manual_msvc_config): LIBS = ['winmm', 'opengl32', 'dsound', 'kernel32', 'ole32', 'oleaut32', 'user32', 'gdi32', 'IPHLPAPI', 'Shlwapi', 'wsock32', 'Ws2_32', - 'shell32', 'advapi32', 'dinput8', 'dxguid', 'imm32', 'bcrypt','Avrt'] + 'shell32', 'advapi32', 'dinput8', 'dxguid', 'imm32', 'bcrypt','Avrt', + 'dwmapi'] env.Append(LINKFLAGS=[p + env["LIBSUFFIX"] for p in LIBS]) if manual_msvc_config: @@ -293,7 +294,10 @@ def configure_mingw(env): ## Compiler configuration if (os.name == "nt"): - env['ENV']['TMP'] = os.environ['TMP'] # way to go scons, you can be so stupid sometimes + # Force splitting libmodules.a in multiple chunks to work around + # issues reaching the linker command line size limit, which also + # seem to induce huge slowdown for 'ar' (GH-30892). + env['split_libmodules'] = True else: env["PROGSUFFIX"] = env["PROGSUFFIX"] + ".exe" # for linux cross-compilation @@ -348,7 +352,7 @@ def configure_mingw(env): env.Append(CCFLAGS=['-mwindows']) env.Append(CPPDEFINES=['WINDOWS_ENABLED', 'OPENGL_ENABLED', 'WASAPI_ENABLED', 'WINMIDI_ENABLED']) env.Append(CPPDEFINES=[('WINVER', env['target_win_version']), ('_WIN32_WINNT', env['target_win_version'])]) - env.Append(LIBS=['mingw32', 'opengl32', 'dsound', 'ole32', 'd3d9', 'winmm', 'gdi32', 'iphlpapi', 'shlwapi', 'wsock32', 'ws2_32', 'kernel32', 'oleaut32', 'dinput8', 'dxguid', 'ksuser', 'imm32', 'bcrypt', 'avrt', 'uuid']) + env.Append(LIBS=['mingw32', 'opengl32', 'dsound', 'ole32', 'd3d9', 'winmm', 'gdi32', 'iphlpapi', 'shlwapi', 'wsock32', 'ws2_32', 'kernel32', 'oleaut32', 'dinput8', 'dxguid', 'ksuser', 'imm32', 'bcrypt', 'avrt', 'uuid', 'dwmapi']) env.Append(CPPDEFINES=['MINGW_ENABLED', ('MINGW_HAS_SECURE_API', 1)]) diff --git a/platform/windows/export/export.cpp b/platform/windows/export/export.cpp index 3abb05b494..858453ddfd 100644 --- a/platform/windows/export/export.cpp +++ b/platform/windows/export/export.cpp @@ -39,6 +39,7 @@ static Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, class EditorExportPlatformWindows : public EditorExportPlatformPC { + void _rcedit_add_data(const Ref<EditorExportPreset> &p_preset, const String &p_path); Error _code_sign(const Ref<EditorExportPreset> &p_preset, const String &p_path); public: @@ -62,15 +63,50 @@ Error EditorExportPlatformWindows::export_project(const Ref<EditorExportPreset> return err; } + _rcedit_add_data(p_preset, p_path); + + if (p_preset->get("codesign/enable") && err == OK) { + err = _code_sign(p_preset, p_path); + } + + return err; +} + +void EditorExportPlatformWindows::get_export_options(List<ExportOption> *r_options) { + EditorExportPlatformPC::get_export_options(r_options); + + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/enable"), false)); +#ifdef WINDOWS_ENABLED + r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "codesign/identity_type", PROPERTY_HINT_ENUM, "Select automatically,Use PKCS12 file (specify *.PFX/*.P12 file),Use certificate store (specify SHA1 hash)"), 0)); +#endif + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "codesign/identity", PROPERTY_HINT_GLOBAL_FILE, "*.pfx,*.p12"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "codesign/password"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/timestamp"), true)); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "codesign/timestamp_server_url"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "codesign/digest_algorithm", PROPERTY_HINT_ENUM, "SHA1,SHA256"), 1)); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "codesign/description"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::POOL_STRING_ARRAY, "codesign/custom_options"), PoolStringArray())); + + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/icon", PROPERTY_HINT_FILE, "*.ico"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/file_version", PROPERTY_HINT_PLACEHOLDER_TEXT, "1.0.0"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/product_version", PROPERTY_HINT_PLACEHOLDER_TEXT, "1.0.0"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/company_name", PROPERTY_HINT_PLACEHOLDER_TEXT, "Company Name"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/product_name", PROPERTY_HINT_PLACEHOLDER_TEXT, "Game Name"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/file_description"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/copyright"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/trademarks"), "")); +} + +void EditorExportPlatformWindows::_rcedit_add_data(const Ref<EditorExportPreset> &p_preset, const String &p_path) { String rcedit_path = EditorSettings::get_singleton()->get("export/windows/rcedit"); if (rcedit_path == String()) { - return OK; + return; } if (!FileAccess::exists(rcedit_path)) { - ERR_PRINTS("Could not find rcedit executable at " + rcedit_path + ", aborting."); - return ERR_FILE_NOT_FOUND; + ERR_PRINTS("Could not find rcedit executable at " + rcedit_path + ", no icon or app information data will be included."); + return; } #ifndef WINDOWS_ENABLED @@ -78,8 +114,8 @@ Error EditorExportPlatformWindows::export_project(const Ref<EditorExportPreset> String wine_path = EditorSettings::get_singleton()->get("export/windows/wine"); if (wine_path != String() && !FileAccess::exists(wine_path)) { - ERR_PRINTS("Could not find wine executable at " + wine_path + ", aborting."); - return ERR_FILE_NOT_FOUND; + ERR_PRINTS("Could not find wine executable at " + wine_path + ", no icon or app information data will be included."); + return; } if (wine_path == String()) { @@ -144,37 +180,6 @@ Error EditorExportPlatformWindows::export_project(const Ref<EditorExportPreset> args.push_front(rcedit_path); OS::get_singleton()->execute(wine_path, args, true); #endif - - if (p_preset->get("codesign/enable") && err == OK) { - err = _code_sign(p_preset, p_path); - } - - return err; -} - -void EditorExportPlatformWindows::get_export_options(List<ExportOption> *r_options) { - EditorExportPlatformPC::get_export_options(r_options); - - r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/enable"), false)); -#ifdef WINDOWS_ENABLED - r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "codesign/identity_type", PROPERTY_HINT_ENUM, "Select automatically,Use PKCS12 file (specify *.PFX/*.P12 file),Use certificate store (specify SHA1 hash)"), 0)); -#endif - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "codesign/identity", PROPERTY_HINT_GLOBAL_FILE, "*.pfx,*.p12"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "codesign/password"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/timestamp"), true)); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "codesign/timestamp_server_url"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "codesign/digest_algorithm", PROPERTY_HINT_ENUM, "SHA1,SHA256"), 1)); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "codesign/description"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::POOL_STRING_ARRAY, "codesign/custom_options"), PoolStringArray())); - - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/icon", PROPERTY_HINT_FILE, "*.ico"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/file_version", PROPERTY_HINT_PLACEHOLDER_TEXT, "1.0.0"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/product_version", PROPERTY_HINT_PLACEHOLDER_TEXT, "1.0.0"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/company_name", PROPERTY_HINT_PLACEHOLDER_TEXT, "Company Name"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/product_name", PROPERTY_HINT_PLACEHOLDER_TEXT, "Game Name"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/file_description"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/copyright"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/trademarks"), "")); } Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_preset, const String &p_path) { diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 429657f332..f749134f3c 100755 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -1480,6 +1480,7 @@ Error OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int video_driver_index = p_video_driver; gl_context->set_use_vsync(video_mode.use_vsync); + set_vsync_via_compositor(video_mode.vsync_via_compositor); #endif visual_server = memnew(VisualServerRaster); @@ -1494,8 +1495,6 @@ Error OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int power_manager = memnew(PowerWindows); - camera_server = memnew(CameraWindows); - AudioDriverManager::initialize(p_audio_driver); TRACKMOUSEEVENT tme; @@ -1649,7 +1648,6 @@ void OS_Windows::finalize() { memdelete(joypad); memdelete(input); - memdelete(camera_server); touch_state.clear(); cursors_cache.clear(); diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h index ce279fb033..28fec27216 100644 --- a/platform/windows/os_windows.h +++ b/platform/windows/os_windows.h @@ -31,7 +31,6 @@ #ifndef OS_WINDOWS_H #define OS_WINDOWS_H -#include "camera_win.h" #include "context_gl_windows.h" #include "core/os/input.h" #include "core/os/os.h" @@ -175,7 +174,6 @@ class OS_Windows : public OS { ContextGL_Windows *gl_context; #endif VisualServer *visual_server; - CameraWindows *camera_server; int pressrc; HINSTANCE hInstance; // Holds The Instance Of The Application HWND hWnd; diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 54d3759cc5..39d5c0e84e 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -596,9 +596,6 @@ Error OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_a AudioDriverManager::initialize(p_audio_driver); - ///@TODO implement a subclass for Linux and instantiate that instead - camera_server = memnew(CameraServer); - input = memnew(InputDefault); window_has_focus = true; // Set focus to true at init @@ -832,8 +829,6 @@ void OS_X11::finalize() { memdelete(input); - memdelete(camera_server); - cursors_cache.clear(); visual_server->finish(); memdelete(visual_server); diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h index a5576f4402..d02160fab7 100644 --- a/platform/x11/os_x11.h +++ b/platform/x11/os_x11.h @@ -42,7 +42,6 @@ #include "main/input_default.h" #include "power_x11.h" #include "servers/audio_server.h" -#include "servers/camera_server.h" #include "servers/visual/rasterizer.h" #include "servers/visual_server.h" //#include "servers/visual/visual_server_wrap_mt.h" @@ -150,8 +149,6 @@ class OS_X11 : public OS_Unix { void get_key_modifier_state(unsigned int p_x11_state, Ref<InputEventWithModifiers> state); void flush_mouse_motion(); - CameraServer *camera_server; - MouseMode mouse_mode; Point2i center; diff --git a/scene/2d/collision_polygon_2d.cpp b/scene/2d/collision_polygon_2d.cpp index bb144dda96..766a8a6de4 100644 --- a/scene/2d/collision_polygon_2d.cpp +++ b/scene/2d/collision_polygon_2d.cpp @@ -169,8 +169,8 @@ void CollisionPolygon2D::_notification(int p_what) { Vector<Vector2> pts; float tsize = 8; pts.push_back(line_to + (Vector2(0, tsize))); - pts.push_back(line_to + (Vector2(0.707 * tsize, 0))); - pts.push_back(line_to + (Vector2(-0.707 * tsize, 0))); + pts.push_back(line_to + (Vector2(Math_SQRT12 * tsize, 0))); + pts.push_back(line_to + (Vector2(-Math_SQRT12 * tsize, 0))); Vector<Color> cols; for (int i = 0; i < 3; i++) cols.push_back(dcol); diff --git a/scene/2d/collision_shape_2d.cpp b/scene/2d/collision_shape_2d.cpp index f79d79d039..d9c1d69b53 100644 --- a/scene/2d/collision_shape_2d.cpp +++ b/scene/2d/collision_shape_2d.cpp @@ -134,8 +134,8 @@ void CollisionShape2D::_notification(int p_what) { Vector<Vector2> pts; float tsize = 8; pts.push_back(line_to + (Vector2(0, tsize))); - pts.push_back(line_to + (Vector2(0.707 * tsize, 0))); - pts.push_back(line_to + (Vector2(-0.707 * tsize, 0))); + pts.push_back(line_to + (Vector2(Math_SQRT12 * tsize, 0))); + pts.push_back(line_to + (Vector2(-Math_SQRT12 * tsize, 0))); Vector<Color> cols; for (int i = 0; i < 3; i++) cols.push_back(draw_col); diff --git a/scene/2d/line_2d.cpp b/scene/2d/line_2d.cpp index ad405fabbb..af3ed671aa 100644 --- a/scene/2d/line_2d.cpp +++ b/scene/2d/line_2d.cpp @@ -47,6 +47,7 @@ Line2D::Line2D() { _texture_mode = LINE_TEXTURE_NONE; _sharp_limit = 2.f; _round_precision = 8; + _antialiased = false; } Rect2 Line2D::_edit_get_rect() const { @@ -260,6 +261,15 @@ int Line2D::get_round_precision() const { return _round_precision; } +void Line2D::set_antialiased(bool p_antialiased) { + _antialiased = p_antialiased; + update(); +} + +bool Line2D::get_antialiased() const { + return _antialiased; +} + void Line2D::_draw() { if (_points.size() <= 1 || _width == 0.f) return; @@ -305,8 +315,8 @@ void Line2D::_draw() { lb.vertices, lb.colors, lb.uvs, Vector<int>(), Vector<float>(), - - texture_rid); + texture_rid, -1, RID(), + _antialiased); // DEBUG // Draw wireframe @@ -386,6 +396,9 @@ void Line2D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_round_precision", "precision"), &Line2D::set_round_precision); ClassDB::bind_method(D_METHOD("get_round_precision"), &Line2D::get_round_precision); + ClassDB::bind_method(D_METHOD("set_antialiased", "antialiased"), &Line2D::set_antialiased); + ClassDB::bind_method(D_METHOD("get_antialiased"), &Line2D::get_antialiased); + ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR2_ARRAY, "points"), "set_points", "get_points"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "width"), "set_width", "get_width"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "width_curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_curve", "get_curve"); @@ -401,6 +414,7 @@ void Line2D::_bind_methods() { ADD_GROUP("Border", ""); ADD_PROPERTY(PropertyInfo(Variant::REAL, "sharp_limit"), "set_sharp_limit", "get_sharp_limit"); ADD_PROPERTY(PropertyInfo(Variant::INT, "round_precision"), "set_round_precision", "get_round_precision"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "antialiased"), "set_antialiased", "get_antialiased"); BIND_ENUM_CONSTANT(LINE_JOINT_SHARP); BIND_ENUM_CONSTANT(LINE_JOINT_BEVEL); diff --git a/scene/2d/line_2d.h b/scene/2d/line_2d.h index 14afa463ba..10b2bf16e4 100644 --- a/scene/2d/line_2d.h +++ b/scene/2d/line_2d.h @@ -108,6 +108,9 @@ public: void set_round_precision(int precision); int get_round_precision() const; + void set_antialiased(bool p_antialiased); + bool get_antialiased() const; + protected: void _notification(int p_what); void _draw(); @@ -131,6 +134,7 @@ private: LineTextureMode _texture_mode; float _sharp_limit; int _round_precision; + bool _antialiased; }; #endif // LINE2D_H diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp index 3a4f397fe0..05f8d4883f 100644 --- a/scene/2d/physics_body_2d.cpp +++ b/scene/2d/physics_body_2d.cpp @@ -1051,7 +1051,7 @@ void RigidBody2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::REAL, "gravity_scale", PROPERTY_HINT_RANGE, "-128,128,0.01"), "set_gravity_scale", "get_gravity_scale"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "custom_integrator"), "set_use_custom_integrator", "is_using_custom_integrator"); ADD_PROPERTY(PropertyInfo(Variant::INT, "continuous_cd", PROPERTY_HINT_ENUM, "Disabled,Cast Ray,Cast Shape"), "set_continuous_collision_detection_mode", "get_continuous_collision_detection_mode"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "contacts_reported"), "set_max_contacts_reported", "get_max_contacts_reported"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "contacts_reported", PROPERTY_HINT_RANGE, "0,64,1,or_greater"), "set_max_contacts_reported", "get_max_contacts_reported"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "contact_monitor"), "set_contact_monitor", "is_contact_monitor_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sleeping"), "set_sleeping", "is_sleeping"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "can_sleep"), "set_can_sleep", "is_able_to_sleep"); @@ -1214,18 +1214,20 @@ bool KinematicBody2D::move_and_collide(const Vector2 &p_motion, bool p_infinite_ Vector2 KinematicBody2D::move_and_slide(const Vector2 &p_linear_velocity, const Vector2 &p_floor_direction, bool p_stop_on_slope, int p_max_slides, float p_floor_max_angle, bool p_infinite_inertia) { - Vector2 floor_motion = floor_velocity; + Vector2 body_velocity = p_linear_velocity; + Vector2 body_velocity_normal = body_velocity.normalized(); + + Vector2 current_floor_velocity = floor_velocity; if (on_floor && on_floor_body.is_valid()) { //this approach makes sure there is less delay between the actual body velocity and the one we saved Physics2DDirectBodyState *bs = Physics2DServer::get_singleton()->body_get_direct_state(on_floor_body); if (bs) { - floor_motion = bs->get_linear_velocity(); + current_floor_velocity = bs->get_linear_velocity(); } } // Hack in order to work with calling from _process as well as from _physics_process; calling from thread is risky - Vector2 motion = (floor_motion + p_linear_velocity) * (Engine::get_singleton()->is_in_physics_frame() ? get_physics_process_delta_time() : get_process_delta_time()); - Vector2 lv = p_linear_velocity; + Vector2 motion = (current_floor_velocity + body_velocity) * (Engine::get_singleton()->is_in_physics_frame() ? get_physics_process_delta_time() : get_process_delta_time()); on_floor = false; on_floor_body = RID(); @@ -1234,14 +1236,12 @@ Vector2 KinematicBody2D::move_and_slide(const Vector2 &p_linear_velocity, const colliders.clear(); floor_velocity = Vector2(); - Vector2 lv_n = p_linear_velocity.normalized(); - while (p_max_slides) { Collision collision; bool found_collision = false; - for (int i = 0; i < 2; i++) { + for (int i = 0; i < 2; ++i) { bool collided; if (i == 0) { //collide collided = move_and_collide(motion, p_infinite_inertia, collision); @@ -1273,14 +1273,13 @@ Vector2 KinematicBody2D::move_and_slide(const Vector2 &p_linear_velocity, const floor_velocity = collision.collider_vel; if (p_stop_on_slope) { - if ((lv_n + p_floor_direction).length() < 0.01 && collision.travel.length() < 1) { + if ((body_velocity_normal + p_floor_direction).length() < 0.01 && collision.travel.length() < 1) { Transform2D gt = get_global_transform(); - gt.elements[2] -= collision.travel.project(p_floor_direction.tangent()); + gt.elements[2] -= collision.travel.slide(p_floor_direction); set_global_transform(gt); return Vector2(); } } - } else if (Math::acos(collision.normal.dot(-p_floor_direction)) <= p_floor_max_angle + FLOOR_ANGLE_THRESHOLD) { //ceiling on_ceiling = true; } else { @@ -1288,21 +1287,18 @@ Vector2 KinematicBody2D::move_and_slide(const Vector2 &p_linear_velocity, const } } - Vector2 n = collision.normal; - motion = motion.slide(n); - lv = lv.slide(n); + motion = motion.slide(collision.normal); + body_velocity = body_velocity.slide(collision.normal); } } - if (!found_collision) { - break; - } - p_max_slides--; - if (motion == Vector2()) + if (!found_collision || motion == Vector2()) break; + + --p_max_slides; } - return lv; + return body_velocity; } Vector2 KinematicBody2D::move_and_slide_with_snap(const Vector2 &p_linear_velocity, const Vector2 &p_snap, const Vector2 &p_floor_direction, bool p_stop_on_slope, int p_max_slides, float p_floor_max_angle, bool p_infinite_inertia) { diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp index 5e14959e9d..9fe67a4d7e 100644 --- a/scene/2d/polygon_2d.cpp +++ b/scene/2d/polygon_2d.cpp @@ -308,7 +308,7 @@ void Polygon2D::_notification(int p_what) { if (invert || polygons.size() == 0) { Vector<int> indices = Geometry::triangulate_polygon(points); if (indices.size()) { - VS::get_singleton()->canvas_item_add_triangle_array(get_canvas_item(), indices, points, colors, uvs, bones, weights, texture.is_valid() ? texture->get_rid() : RID()); + VS::get_singleton()->canvas_item_add_triangle_array(get_canvas_item(), indices, points, colors, uvs, bones, weights, texture.is_valid() ? texture->get_rid() : RID(), -1, RID(), antialiased); } } else { //draw individual polygons @@ -342,7 +342,7 @@ void Polygon2D::_notification(int p_what) { } if (total_indices.size()) { - VS::get_singleton()->canvas_item_add_triangle_array(get_canvas_item(), total_indices, points, colors, uvs, bones, weights, texture.is_valid() ? texture->get_rid() : RID()); + VS::get_singleton()->canvas_item_add_triangle_array(get_canvas_item(), total_indices, points, colors, uvs, bones, weights, texture.is_valid() ? texture->get_rid() : RID(), -1, RID(), antialiased); } #if 0 diff --git a/scene/2d/ray_cast_2d.cpp b/scene/2d/ray_cast_2d.cpp index bf8d008bb2..4f6f410bdc 100644 --- a/scene/2d/ray_cast_2d.cpp +++ b/scene/2d/ray_cast_2d.cpp @@ -180,8 +180,8 @@ void RayCast2D::_notification(int p_what) { Vector<Vector2> pts; float tsize = 8; pts.push_back(xf.xform(Vector2(tsize, 0))); - pts.push_back(xf.xform(Vector2(0, 0.707 * tsize))); - pts.push_back(xf.xform(Vector2(0, -0.707 * tsize))); + pts.push_back(xf.xform(Vector2(0, Math_SQRT12 * tsize))); + pts.push_back(xf.xform(Vector2(0, -Math_SQRT12 * tsize))); Vector<Color> cols; for (int i = 0; i < 3; i++) cols.push_back(draw_col); diff --git a/scene/2d/sprite.cpp b/scene/2d/sprite.cpp index 8cdfceea52..a595f6714b 100644 --- a/scene/2d/sprite.cpp +++ b/scene/2d/sprite.cpp @@ -315,6 +315,9 @@ bool Sprite::is_pixel_opaque(const Point2 &p_point) const { if (texture.is_null()) return false; + if (texture->get_size().width == 0 || texture->get_size().height == 0) + return false; + Rect2 src_rect, dst_rect; bool filter_clip; _get_rects(src_rect, dst_rect, filter_clip); diff --git a/scene/3d/collision_polygon.cpp b/scene/3d/collision_polygon.cpp index 37aa95fb43..a59cce5c66 100644 --- a/scene/3d/collision_polygon.cpp +++ b/scene/3d/collision_polygon.cpp @@ -44,7 +44,7 @@ void CollisionPolygon::_build_polygon() { if (polygon.size() == 0) return; - Vector<Vector<Vector2> > decomp = Geometry::decompose_polygon(polygon); + Vector<Vector<Vector2> > decomp = Geometry::decompose_polygon_in_convex(polygon); if (decomp.size() == 0) return; diff --git a/scene/3d/mesh_instance.cpp b/scene/3d/mesh_instance.cpp index 50ca466df3..493806fc78 100644 --- a/scene/3d/mesh_instance.cpp +++ b/scene/3d/mesh_instance.cpp @@ -154,10 +154,10 @@ void MeshInstance::_resolve_skeleton_path() { if (!skeleton_path.is_empty()) { Skeleton *skeleton = Object::cast_to<Skeleton>(get_node(skeleton_path)); if (skeleton) { - new_skin_reference = skeleton->register_skin(skin); - if (skin.is_null()) { + new_skin_reference = skeleton->register_skin(skin_internal); + if (skin_internal.is_null()) { //a skin was created for us - skin = new_skin_reference->get_skin(); + skin_internal = new_skin_reference->get_skin(); _change_notify(); } } @@ -173,6 +173,7 @@ void MeshInstance::_resolve_skeleton_path() { } void MeshInstance::set_skin(const Ref<Skin> &p_skin) { + skin_internal = p_skin; skin = p_skin; if (!is_inside_tree()) return; diff --git a/scene/3d/mesh_instance.h b/scene/3d/mesh_instance.h index 77ead75dd3..91617341ba 100644 --- a/scene/3d/mesh_instance.h +++ b/scene/3d/mesh_instance.h @@ -43,6 +43,7 @@ class MeshInstance : public GeometryInstance { protected: Ref<Mesh> mesh; Ref<Skin> skin; + Ref<Skin> skin_internal; Ref<SkinReference> skin_ref; NodePath skeleton_path; diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp index a107c3bf7a..46e7bca943 100644 --- a/scene/3d/physics_body.cpp +++ b/scene/3d/physics_body.cpp @@ -1014,7 +1014,7 @@ void RigidBody::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::REAL, "gravity_scale", PROPERTY_HINT_RANGE, "-128,128,0.01"), "set_gravity_scale", "get_gravity_scale"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "custom_integrator"), "set_use_custom_integrator", "is_using_custom_integrator"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "continuous_cd"), "set_use_continuous_collision_detection", "is_using_continuous_collision_detection"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "contacts_reported"), "set_max_contacts_reported", "get_max_contacts_reported"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "contacts_reported", PROPERTY_HINT_RANGE, "0,64,1,or_greater"), "set_max_contacts_reported", "get_max_contacts_reported"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "contact_monitor"), "set_contact_monitor", "is_contact_monitor_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sleeping"), "set_sleeping", "is_sleeping"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "can_sleep"), "set_can_sleep", "is_able_to_sleep"); @@ -1142,25 +1142,34 @@ bool KinematicBody::move_and_collide(const Vector3 &p_motion, bool p_infinite_in Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Vector3 &p_floor_direction, bool p_stop_on_slope, int p_max_slides, float p_floor_max_angle, bool p_infinite_inertia) { - Vector3 lv = p_linear_velocity; + Vector3 body_velocity = p_linear_velocity; + Vector3 body_velocity_normal = body_velocity.normalized(); for (int i = 0; i < 3; i++) { if (locked_axis & (1 << i)) { - lv[i] = 0; + body_velocity[i] = 0; + } + } + + Vector3 current_floor_velocity = floor_velocity; + if (on_floor && on_floor_body.is_valid()) { + //this approach makes sure there is less delay between the actual body velocity and the one we saved + PhysicsDirectBodyState *bs = PhysicsServer::get_singleton()->body_get_direct_state(on_floor_body); + if (bs) { + current_floor_velocity = bs->get_linear_velocity(); } } // Hack in order to work with calling from _process as well as from _physics_process; calling from thread is risky - Vector3 motion = (floor_velocity + lv) * (Engine::get_singleton()->is_in_physics_frame() ? get_physics_process_delta_time() : get_process_delta_time()); + Vector3 motion = (current_floor_velocity + body_velocity) * (Engine::get_singleton()->is_in_physics_frame() ? get_physics_process_delta_time() : get_process_delta_time()); on_floor = false; + on_floor_body = RID(); on_ceiling = false; on_wall = false; colliders.clear(); floor_velocity = Vector3(); - Vector3 lv_n = p_linear_velocity.normalized(); - while (p_max_slides) { Collision collision; @@ -1187,7 +1196,6 @@ Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Ve colliders.push_back(collision); motion = collision.remainder; - bool is_on_slope = false; if (p_floor_direction == Vector3()) { //all is a wall on_wall = true; @@ -1199,16 +1207,13 @@ Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Ve floor_velocity = collision.collider_vel; if (p_stop_on_slope) { - if ((lv_n + p_floor_direction).length() < 0.01 && collision.travel.length() < 1) { + if ((body_velocity_normal + p_floor_direction).length() < 0.01 && collision.travel.length() < 1) { Transform gt = get_global_transform(); gt.origin -= collision.travel.slide(p_floor_direction); set_global_transform(gt); return Vector3(); } } - - is_on_slope = true; - } else if (Math::acos(collision.normal.dot(-p_floor_direction)) <= p_floor_max_angle + FLOOR_ANGLE_THRESHOLD) { //ceiling on_ceiling = true; } else { @@ -1216,18 +1221,12 @@ Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Ve } } - if (p_stop_on_slope && is_on_slope) { - motion = motion.slide(p_floor_direction); - lv = lv.slide(p_floor_direction); - } else { - Vector3 n = collision.normal; - motion = motion.slide(n); - lv = lv.slide(n); - } + motion = motion.slide(collision.normal); + body_velocity = body_velocity.slide(collision.normal); for (int j = 0; j < 3; j++) { if (locked_axis & (1 << j)) { - lv[j] = 0; + body_velocity[j] = 0; } } } @@ -1239,7 +1238,7 @@ Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Ve --p_max_slides; } - return lv; + return body_velocity; } Vector3 KinematicBody::move_and_slide_with_snap(const Vector3 &p_linear_velocity, const Vector3 &p_snap, const Vector3 &p_floor_direction, bool p_stop_on_slope, int p_max_slides, float p_floor_max_angle, bool p_infinite_inertia) { @@ -1555,6 +1554,14 @@ bool PhysicalBone::JointData::_get(const StringName &p_name, Variant &r_ret) con void PhysicalBone::JointData::_get_property_list(List<PropertyInfo> *p_list) const { } +void PhysicalBone::apply_central_impulse(const Vector3 &p_impulse) { + PhysicsServer::get_singleton()->body_apply_central_impulse(get_rid(), p_impulse); +} + +void PhysicalBone::apply_impulse(const Vector3 &p_pos, const Vector3 &p_impulse) { + PhysicsServer::get_singleton()->body_apply_impulse(get_rid(), p_pos, p_impulse); +} + bool PhysicalBone::PinJointData::_set(const StringName &p_name, const Variant &p_value, RID j) { if (JointData::_set(p_name, p_value, j)) { return true; @@ -2161,6 +2168,9 @@ void PhysicalBone::_notification(int p_what) { update_bone_id(); reset_to_rest_position(); _reset_physics_simulation_state(); + if (!joint.is_valid() && joint_data) { + _reload_joint(); + } break; case NOTIFICATION_EXIT_TREE: if (parent_skeleton) { @@ -2169,7 +2179,10 @@ void PhysicalBone::_notification(int p_what) { } } parent_skeleton = NULL; - update_bone_id(); + if (joint.is_valid()) { + PhysicsServer::get_singleton()->free(joint); + joint = RID(); + } break; case NOTIFICATION_TRANSFORM_CHANGED: if (Engine::get_singleton()->is_editor_hint()) { @@ -2211,6 +2224,9 @@ void PhysicalBone::_direct_state_changed(Object *p_state) { } void PhysicalBone::_bind_methods() { + ClassDB::bind_method(D_METHOD("apply_central_impulse", "impulse"), &PhysicalBone::apply_central_impulse); + ClassDB::bind_method(D_METHOD("apply_impulse", "position", "impulse"), &PhysicalBone::apply_impulse); + ClassDB::bind_method(D_METHOD("_direct_state_changed"), &PhysicalBone::_direct_state_changed); ClassDB::bind_method(D_METHOD("set_joint_type", "joint_type"), &PhysicalBone::set_joint_type); diff --git a/scene/3d/physics_body.h b/scene/3d/physics_body.h index 0967cb9cd5..b208baf235 100644 --- a/scene/3d/physics_body.h +++ b/scene/3d/physics_body.h @@ -636,6 +636,9 @@ public: void set_gravity_scale(real_t p_gravity_scale); real_t get_gravity_scale() const; + void apply_central_impulse(const Vector3 &p_impulse); + void apply_impulse(const Vector3 &p_pos, const Vector3 &p_impulse); + PhysicalBone(); ~PhysicalBone(); diff --git a/scene/3d/spatial.cpp b/scene/3d/spatial.cpp index 9a659ef4af..043d5d5548 100644 --- a/scene/3d/spatial.cpp +++ b/scene/3d/spatial.cpp @@ -322,6 +322,7 @@ Transform Spatial::get_relative_transform(const Node *p_parent) const { void Spatial::set_translation(const Vector3 &p_translation) { data.local_transform.origin = p_translation; + _change_notify("transform"); _propagate_transform_changed(this); if (data.notify_local_transform) { notification(NOTIFICATION_LOCAL_TRANSFORM_CHANGED); @@ -337,6 +338,7 @@ void Spatial::set_rotation(const Vector3 &p_euler_rad) { data.rotation = p_euler_rad; data.dirty |= DIRTY_LOCAL; + _change_notify("transform"); _propagate_transform_changed(this); if (data.notify_local_transform) { notification(NOTIFICATION_LOCAL_TRANSFORM_CHANGED); @@ -357,6 +359,7 @@ void Spatial::set_scale(const Vector3 &p_scale) { data.scale = p_scale; data.dirty |= DIRTY_LOCAL; + _change_notify("transform"); _propagate_transform_changed(this); if (data.notify_local_transform) { notification(NOTIFICATION_LOCAL_TRANSFORM_CHANGED); diff --git a/scene/3d/voxel_light_baker.cpp b/scene/3d/voxel_light_baker.cpp index 8e09930aed..3235953730 100644 --- a/scene/3d/voxel_light_baker.cpp +++ b/scene/3d/voxel_light_baker.cpp @@ -1594,10 +1594,10 @@ Vector3 VoxelLightBaker::_compute_pixel_light_at_pos(const Vector3 &p_pos, const case BAKE_QUALITY_LOW: { //default quality static const Vector3 dirs[4] = { - Vector3(0.707107, 0, 0.707107), - Vector3(0, 0.707107, 0.707107), - Vector3(-0.707107, 0, 0.707107), - Vector3(0, -0.707107, 0.707107) + Vector3(Math_SQRT12, 0, Math_SQRT12), + Vector3(0, Math_SQRT12, Math_SQRT12), + Vector3(-Math_SQRT12, 0, Math_SQRT12), + Vector3(0, -Math_SQRT12, Math_SQRT12) }; static const float weights[4] = { 0.25, 0.25, 0.25, 0.25 }; diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp index ce3f2b3b1a..72e8ae1b26 100644 --- a/scene/animation/tween.cpp +++ b/scene/animation/tween.cpp @@ -239,14 +239,14 @@ void Tween::_bind_methods() { ClassDB::bind_method(D_METHOD("get_runtime"), &Tween::get_runtime); // Bind interpolation and follow methods - ClassDB::bind_method(D_METHOD("interpolate_property", "object", "property", "initial_val", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::interpolate_property, DEFVAL(0)); - ClassDB::bind_method(D_METHOD("interpolate_method", "object", "method", "initial_val", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::interpolate_method, DEFVAL(0)); + ClassDB::bind_method(D_METHOD("interpolate_property", "object", "property", "initial_val", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::interpolate_property, DEFVAL(TRANS_LINEAR), DEFVAL(EASE_IN_OUT), DEFVAL(0)); + ClassDB::bind_method(D_METHOD("interpolate_method", "object", "method", "initial_val", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::interpolate_method, DEFVAL(TRANS_LINEAR), DEFVAL(EASE_IN_OUT), DEFVAL(0)); ClassDB::bind_method(D_METHOD("interpolate_callback", "object", "duration", "callback", "arg1", "arg2", "arg3", "arg4", "arg5"), &Tween::interpolate_callback, DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant())); ClassDB::bind_method(D_METHOD("interpolate_deferred_callback", "object", "duration", "callback", "arg1", "arg2", "arg3", "arg4", "arg5"), &Tween::interpolate_deferred_callback, DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant())); - ClassDB::bind_method(D_METHOD("follow_property", "object", "property", "initial_val", "target", "target_property", "duration", "trans_type", "ease_type", "delay"), &Tween::follow_property, DEFVAL(0)); - ClassDB::bind_method(D_METHOD("follow_method", "object", "method", "initial_val", "target", "target_method", "duration", "trans_type", "ease_type", "delay"), &Tween::follow_method, DEFVAL(0)); - ClassDB::bind_method(D_METHOD("targeting_property", "object", "property", "initial", "initial_val", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::targeting_property, DEFVAL(0)); - ClassDB::bind_method(D_METHOD("targeting_method", "object", "method", "initial", "initial_method", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::targeting_method, DEFVAL(0)); + ClassDB::bind_method(D_METHOD("follow_property", "object", "property", "initial_val", "target", "target_property", "duration", "trans_type", "ease_type", "delay"), &Tween::follow_property, DEFVAL(TRANS_LINEAR), DEFVAL(EASE_IN_OUT), DEFVAL(0)); + ClassDB::bind_method(D_METHOD("follow_method", "object", "method", "initial_val", "target", "target_method", "duration", "trans_type", "ease_type", "delay"), &Tween::follow_method, DEFVAL(TRANS_LINEAR), DEFVAL(EASE_IN_OUT), DEFVAL(0)); + ClassDB::bind_method(D_METHOD("targeting_property", "object", "property", "initial", "initial_val", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::targeting_property, DEFVAL(TRANS_LINEAR), DEFVAL(EASE_IN_OUT), DEFVAL(0)); + ClassDB::bind_method(D_METHOD("targeting_method", "object", "method", "initial", "initial_method", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::targeting_method, DEFVAL(TRANS_LINEAR), DEFVAL(EASE_IN_OUT), DEFVAL(0)); // Add the Tween signals ADD_SIGNAL(MethodInfo("tween_started", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key"))); diff --git a/scene/animation/tween.h b/scene/animation/tween.h index 574238f5c9..f301d8d76b 100644 --- a/scene/animation/tween.h +++ b/scene/animation/tween.h @@ -101,6 +101,12 @@ private: int args; Variant arg[5]; int uid; + InterpolateData() { + active = false; + finish = false; + call_deferred = false; + uid = 0; + } }; String autoplay; @@ -173,21 +179,14 @@ public: real_t tell() const; real_t get_runtime() const; - bool interpolate_property(Object *p_object, NodePath p_property, Variant p_initial_val, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0); - - bool interpolate_method(Object *p_object, StringName p_method, Variant p_initial_val, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0); - + bool interpolate_property(Object *p_object, NodePath p_property, Variant p_initial_val, Variant p_final_val, real_t p_duration, TransitionType p_trans_type = TRANS_LINEAR, EaseType p_ease_type = EASE_IN_OUT, real_t p_delay = 0); + bool interpolate_method(Object *p_object, StringName p_method, Variant p_initial_val, Variant p_final_val, real_t p_duration, TransitionType p_trans_type = TRANS_LINEAR, EaseType p_ease_type = EASE_IN_OUT, real_t p_delay = 0); bool interpolate_callback(Object *p_object, real_t p_duration, String p_callback, VARIANT_ARG_DECLARE); - bool interpolate_deferred_callback(Object *p_object, real_t p_duration, String p_callback, VARIANT_ARG_DECLARE); - - bool follow_property(Object *p_object, NodePath p_property, Variant p_initial_val, Object *p_target, NodePath p_target_property, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0); - - bool follow_method(Object *p_object, StringName p_method, Variant p_initial_val, Object *p_target, StringName p_target_method, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0); - - bool targeting_property(Object *p_object, NodePath p_property, Object *p_initial, NodePath p_initial_property, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0); - - bool targeting_method(Object *p_object, StringName p_method, Object *p_initial, StringName p_initial_method, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0); + bool follow_property(Object *p_object, NodePath p_property, Variant p_initial_val, Object *p_target, NodePath p_target_property, real_t p_duration, TransitionType p_trans_type = TRANS_LINEAR, EaseType p_ease_type = EASE_IN_OUT, real_t p_delay = 0); + bool follow_method(Object *p_object, StringName p_method, Variant p_initial_val, Object *p_target, StringName p_target_method, real_t p_duration, TransitionType p_trans_type = TRANS_LINEAR, EaseType p_ease_type = EASE_IN_OUT, real_t p_delay = 0); + bool targeting_property(Object *p_object, NodePath p_property, Object *p_initial, NodePath p_initial_property, Variant p_final_val, real_t p_duration, TransitionType p_trans_type = TRANS_LINEAR, EaseType p_ease_type = EASE_IN_OUT, real_t p_delay = 0); + bool targeting_method(Object *p_object, StringName p_method, Object *p_initial, StringName p_initial_method, Variant p_final_val, real_t p_duration, TransitionType p_trans_type = TRANS_LINEAR, EaseType p_ease_type = EASE_IN_OUT, real_t p_delay = 0); Tween(); ~Tween(); diff --git a/scene/debugger/script_debugger_remote.cpp b/scene/debugger/script_debugger_remote.cpp index c3c6a088cb..1b37a7dbdb 100644 --- a/scene/debugger/script_debugger_remote.cpp +++ b/scene/debugger/script_debugger_remote.cpp @@ -1257,7 +1257,7 @@ ScriptDebuggerRemote::ScriptDebuggerRemote() : scene_tree(NULL) { packet_peer_stream->set_stream_peer(tcp_client); - packet_peer_stream->set_output_buffer_max_size(1024 * 1024 * 8); //8mb should be way more than enough + packet_peer_stream->set_output_buffer_max_size((1024 * 1024 * 8) - 4); // 8 MiB should be way more than enough, minus 4 bytes for separator. phl.printfunc = _print_handler; phl.userdata = this; diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp index ca4c255855..a68462f4d4 100644 --- a/scene/gui/button.cpp +++ b/scene/gui/button.cpp @@ -190,6 +190,13 @@ void Button::_notification(int p_what) { Point2 icon_ofs = !_icon.is_null() ? Point2(icon_region.size.width + get_constant("hseparation"), 0) : Point2(); int text_clip = size.width - style->get_minimum_size().width - icon_ofs.width; + if (_internal_margin[MARGIN_LEFT] > 0) { + text_clip -= _internal_margin[MARGIN_LEFT] + get_constant("hseparation"); + } + if (_internal_margin[MARGIN_RIGHT] > 0) { + text_clip -= _internal_margin[MARGIN_RIGHT] + get_constant("hseparation"); + } + Point2 text_ofs = (size - style->get_minimum_size() - icon_ofs - font->get_string_size(xl_text) - Point2(_internal_margin[MARGIN_RIGHT] - _internal_margin[MARGIN_LEFT], 0)) / 2.0; switch (align) { diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 8b4d5d4980..92e740889d 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -2012,14 +2012,15 @@ Control *Control::find_next_valid_focus() const { if (!data.focus_next.is_empty()) { Node *n = get_node(data.focus_next); + Control *c; if (n) { - from = Object::cast_to<Control>(n); - ERR_FAIL_COND_V_MSG(!from, NULL, "Next focus node is not a control: " + n->get_name() + "."); + c = Object::cast_to<Control>(n); + ERR_FAIL_COND_V_MSG(!c, NULL, "Next focus node is not a control: " + n->get_name() + "."); } else { return NULL; } - if (from->is_visible() && from->get_focus_mode() != FOCUS_NONE) - return from; + if (c->is_visible() && c->get_focus_mode() != FOCUS_NONE) + return c; } // find next child @@ -2102,14 +2103,15 @@ Control *Control::find_prev_valid_focus() const { if (!data.focus_prev.is_empty()) { Node *n = get_node(data.focus_prev); + Control *c; if (n) { - from = Object::cast_to<Control>(n); - ERR_FAIL_COND_V_MSG(!from, NULL, "Previous focus node is not a control: " + n->get_name() + "."); + c = Object::cast_to<Control>(n); + ERR_FAIL_COND_V_MSG(!c, NULL, "Previous focus node is not a control: " + n->get_name() + "."); } else { return NULL; } - if (from->is_visible() && from->get_focus_mode() != FOCUS_NONE) - return from; + if (c->is_visible() && c->get_focus_mode() != FOCUS_NONE) + return c; } // find prev child @@ -2284,7 +2286,7 @@ void Control::set_theme(const Ref<Theme> &p_theme) { } if (data.theme.is_valid()) { - data.theme->connect("changed", this, "_theme_changed"); + data.theme->connect("changed", this, "_theme_changed", varray(), CONNECT_DEFERRED); } } diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index b6e647d1af..cc2d5dd6ea 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -35,6 +35,7 @@ #ifdef TOOLS_ENABLED #include "editor/editor_node.h" +#include "editor/editor_scale.h" #include "scene/main/viewport.h" // Only used to check for more modals when dimming the editor. #endif diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index 6400061309..dd9e11508f 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -558,25 +558,25 @@ void FileDialog::update_filters() { const int max_filters = 5; for (int i = 0; i < MIN(max_filters, filters.size()); i++) { - String flt = filters[i].get_slice(";", 0); + String flt = filters[i].get_slice(";", 0).strip_edges(); if (i > 0) - all_filters += ","; + all_filters += ", "; all_filters += flt; } if (max_filters < filters.size()) all_filters += ", ..."; - filter->add_item(RTR("All Recognized") + " ( " + all_filters + " )"); + filter->add_item(RTR("All Recognized") + " (" + all_filters + ")"); } for (int i = 0; i < filters.size(); i++) { String flt = filters[i].get_slice(";", 0).strip_edges(); String desc = filters[i].get_slice(";", 1).strip_edges(); if (desc.length()) - filter->add_item(String(tr(desc)) + " ( " + flt + " )"); + filter->add_item(String(tr(desc)) + " (" + flt + ")"); else - filter->add_item("( " + flt + " )"); + filter->add_item("(" + flt + ")"); } filter->add_item(RTR("All Files (*)")); diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index 3884622942..20bbcbde80 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -973,12 +973,12 @@ void ItemList::_notification(int p_what) { float max = MAX(page, ofs.y + max_h); if (auto_height) auto_height_value = ofs.y + max_h + bg->get_minimum_size().height; + scroll_bar->set_max(max); + scroll_bar->set_page(page); if (max <= page) { scroll_bar->set_value(0); scroll_bar->hide(); } else { - scroll_bar->set_max(max); - scroll_bar->set_page(page); scroll_bar->show(); if (do_autoscroll_to_bottom) diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index ab6f80bfa9..d96ca69c87 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -704,7 +704,7 @@ void LineEdit::_notification(int p_what) { } int x_ofs = 0; - bool using_placeholder = text.empty(); + bool using_placeholder = text.empty() && ime_text.empty(); int cached_text_width = using_placeholder ? cached_placeholder_width : cached_width; switch (align) { @@ -823,7 +823,7 @@ void LineEdit::_notification(int p_what) { int yofs = y_ofs + (caret_height - font->get_height()) / 2; drawer.draw_char(ci, Point2(x_ofs, yofs + font_ascent), cchar, next, selected ? font_color_selected : font_color); - if (char_ofs == cursor_pos && draw_caret) { + if (char_ofs == cursor_pos && draw_caret && !using_placeholder) { if (ime_text.length() == 0) { #ifdef TOOLS_ENABLED VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2(x_ofs, y_ofs), Size2(Math::round(EDSCALE), caret_height)), cursor_color); @@ -866,12 +866,27 @@ void LineEdit::_notification(int p_what) { } } - if (char_ofs == cursor_pos && draw_caret) { // May be at the end. + if ((char_ofs == cursor_pos || using_placeholder) && draw_caret) { // May be at the end, or placeholder. if (ime_text.length() == 0) { + int caret_x_ofs = x_ofs; + if (using_placeholder) { + switch (align) { + case ALIGN_LEFT: + case ALIGN_FILL: { + caret_x_ofs = style->get_offset().x; + } break; + case ALIGN_CENTER: { + caret_x_ofs = ofs_max / 2; + } break; + case ALIGN_RIGHT: { + caret_x_ofs = ofs_max; + } break; + } + } #ifdef TOOLS_ENABLED - VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2(x_ofs, y_ofs), Size2(Math::round(EDSCALE), caret_height)), cursor_color); + VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2(caret_x_ofs, y_ofs), Size2(Math::round(EDSCALE), caret_height)), cursor_color); #else - VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2(x_ofs, y_ofs), Size2(1, caret_height)), cursor_color); + VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2(caret_x_ofs, y_ofs), Size2(1, caret_height)), cursor_color); #endif } } @@ -970,6 +985,8 @@ void LineEdit::undo() { undo_stack_pos = undo_stack_pos->prev(); TextOperation op = undo_stack_pos->get(); text = op.text; + cached_width = op.cached_width; + window_pos = op.window_pos; set_cursor_position(op.cursor_pos); if (expand_to_text_length) @@ -988,6 +1005,8 @@ void LineEdit::redo() { undo_stack_pos = undo_stack_pos->next(); TextOperation op = undo_stack_pos->get(); text = op.text; + cached_width = op.cached_width; + window_pos = op.window_pos; set_cursor_position(op.cursor_pos); if (expand_to_text_length) @@ -1169,6 +1188,10 @@ void LineEdit::delete_char() { set_cursor_position(get_cursor_position() - 1); + if (align == ALIGN_CENTER || align == ALIGN_RIGHT) { + window_pos = CLAMP(window_pos - 1, 0, text.length() - 1); + } + _text_changed(); } @@ -1196,6 +1219,10 @@ void LineEdit::delete_text(int p_from_column, int p_to_column) { window_pos = cursor_pos; } + if (align == ALIGN_CENTER || align == ALIGN_RIGHT) { + window_pos = CLAMP(window_pos - (p_to_column - p_from_column), 0, text.length() - 1); + } + if (!text_changed_dirty) { if (is_inside_tree()) { MessageQueue::get_singleton()->push_call(this, "_text_changed"); @@ -1677,7 +1704,9 @@ void LineEdit::_clear_undo_stack() { void LineEdit::_create_undo_state() { TextOperation op; op.text = text; + op.cached_width = cached_width; op.cursor_pos = cursor_pos; + op.window_pos = window_pos; undo_stack.push_back(op); } diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h index 3424131dad..ebe49091eb 100644 --- a/scene/gui/line_edit.h +++ b/scene/gui/line_edit.h @@ -106,6 +106,8 @@ private: struct TextOperation { int cursor_pos; + int window_pos; + int cached_width; String text; }; List<TextOperation> undo_stack; diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index 08faaf7d45..5561bce714 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -191,16 +191,20 @@ void PopupMenu::_submenu_timeout() { void PopupMenu::_scroll(float p_factor, const Point2 &p_over) { - const float global_y = get_global_position().y; - int vseparation = get_constant("vseparation"); Ref<Font> font = get_font("font"); float dy = (vseparation + font->get_height()) * 3 * p_factor * get_global_transform().get_scale().y; - if (dy > 0 && global_y < 0) - dy = MIN(dy, -global_y - 1); - else if (dy < 0 && global_y + get_size().y * get_global_transform().get_scale().y > get_viewport_rect().size.y) - dy = -MIN(-dy, global_y + get_size().y * get_global_transform().get_scale().y - get_viewport_rect().size.y - 1); + if (dy > 0) { + const float global_top = get_global_position().y; + const float limit = global_top < 0 ? -global_top : 0; + dy = MIN(dy, limit); + } else if (dy < 0) { + const float global_bottom = get_global_position().y + get_size().y * get_global_transform().get_scale().y; + const float viewport_height = get_viewport_rect().size.y; + const float limit = global_bottom > viewport_height ? global_bottom - viewport_height : 0; + dy = -MIN(-dy, limit); + } set_position(get_position() + Vector2(0, dy)); Ref<InputEventMouseMotion> ie; diff --git a/scene/gui/rich_text_effect.cpp b/scene/gui/rich_text_effect.cpp index f9e0be5b31..ab2f8d2172 100644 --- a/scene/gui/rich_text_effect.cpp +++ b/scene/gui/rich_text_effect.cpp @@ -89,8 +89,6 @@ void CharFXTransform::_bind_methods() { ClassDB::bind_method(D_METHOD("get_character"), &CharFXTransform::get_character); ClassDB::bind_method(D_METHOD("set_character", "character"), &CharFXTransform::set_character); - ClassDB::bind_method(D_METHOD("get_value_or", "key", "default_value"), &CharFXTransform::get_value_or); - ADD_PROPERTY(PropertyInfo(Variant::INT, "relative_index"), "set_relative_index", "get_relative_index"); ADD_PROPERTY(PropertyInfo(Variant::INT, "absolute_index"), "set_absolute_index", "get_absolute_index"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "elapsed_time"), "set_elapsed_time", "get_elapsed_time"); @@ -101,17 +99,6 @@ void CharFXTransform::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "character"), "set_character", "get_character"); } -Variant CharFXTransform::get_value_or(String p_key, Variant p_default_value) { - if (!this->environment.has(p_key)) - return p_default_value; - - Variant r = environment[p_key]; - if (r.get_type() != p_default_value.get_type()) - return p_default_value; - - return r; -} - CharFXTransform::CharFXTransform() { relative_index = 0; absolute_index = 0; diff --git a/scene/gui/rich_text_effect.h b/scene/gui/rich_text_effect.h index 4330cebfe6..9e0065b199 100644 --- a/scene/gui/rich_text_effect.h +++ b/scene/gui/rich_text_effect.h @@ -82,8 +82,6 @@ public: void set_character(int p_char) { character = (CharType)p_char; } Dictionary get_environment() { return environment; } void set_environment(Dictionary p_environment) { environment = p_environment; } - - Variant get_value_or(String p_key, Variant p_default_value); }; #endif // RICH_TEXT_EFFECT_H diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 0331046492..abca865ae0 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -1701,6 +1701,9 @@ bool RichTextLabel::remove_line(const int p_line) { if (!was_newline) { current_frame->lines.remove(p_line); + if (current_frame->lines.size() == 0) { + current_frame->lines.resize(1); + } } if (p_line == 0 && current->subitems.size() > 0) diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp index fa23bf91dd..cb9ae875b7 100644 --- a/scene/gui/scroll_container.cpp +++ b/scene/gui/scroll_container.cpp @@ -30,6 +30,7 @@ #include "scroll_container.h" #include "core/os/os.h" +#include "scene/main/viewport.h" bool ScrollContainer::clips_input() const { @@ -232,6 +233,27 @@ void ScrollContainer::_update_scrollbar_position() { v_scroll->raise(); } +void ScrollContainer::_ensure_focused_visible(Control *p_control) { + + if (is_a_parent_of(p_control)) { + Rect2 global_rect = get_global_rect(); + Rect2 other_rect = p_control->get_global_rect(); + float right_margin = 0; + if (v_scroll->is_visible()) { + right_margin += v_scroll->get_size().x; + } + float bottom_margin = 0; + if (h_scroll->is_visible()) { + bottom_margin += h_scroll->get_size().y; + } + + float diff = MAX(MIN(other_rect.position.y, global_rect.position.y), other_rect.position.y + other_rect.size.y - global_rect.size.y + bottom_margin); + set_v_scroll(get_v_scroll() + (diff - global_rect.position.y)); + diff = MAX(MIN(other_rect.position.x, global_rect.position.x), other_rect.position.x + other_rect.size.x - global_rect.size.x + right_margin); + set_h_scroll(get_h_scroll() + (diff - global_rect.position.x)); + } +} + void ScrollContainer::_notification(int p_what) { if (p_what == NOTIFICATION_ENTER_TREE || p_what == NOTIFICATION_THEME_CHANGED) { @@ -239,6 +261,11 @@ void ScrollContainer::_notification(int p_what) { call_deferred("_update_scrollbar_position"); }; + if (p_what == NOTIFICATION_READY) { + + get_viewport()->connect("gui_focus_changed", this, "_ensure_focused_visible"); + } + if (p_what == NOTIFICATION_SORT_CHILDREN) { child_max_size = Size2(0, 0); @@ -521,6 +548,7 @@ void ScrollContainer::_bind_methods() { ClassDB::bind_method(D_METHOD("set_enable_v_scroll", "enable"), &ScrollContainer::set_enable_v_scroll); ClassDB::bind_method(D_METHOD("is_v_scroll_enabled"), &ScrollContainer::is_v_scroll_enabled); ClassDB::bind_method(D_METHOD("_update_scrollbar_position"), &ScrollContainer::_update_scrollbar_position); + ClassDB::bind_method(D_METHOD("_ensure_focused_visible"), &ScrollContainer::_ensure_focused_visible); ClassDB::bind_method(D_METHOD("set_h_scroll", "value"), &ScrollContainer::set_h_scroll); ClassDB::bind_method(D_METHOD("get_h_scroll"), &ScrollContainer::get_h_scroll); ClassDB::bind_method(D_METHOD("set_v_scroll", "value"), &ScrollContainer::set_v_scroll); diff --git a/scene/gui/scroll_container.h b/scene/gui/scroll_container.h index 2ab169f4d0..1d247f14c6 100644 --- a/scene/gui/scroll_container.h +++ b/scene/gui/scroll_container.h @@ -75,6 +75,7 @@ protected: static void _bind_methods(); void _update_scrollbar_position(); + void _ensure_focused_visible(Control *p_node); public: int get_v_scroll() const; diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp index ba57be1686..cbb2db7788 100644 --- a/scene/gui/slider.cpp +++ b/scene/gui/slider.cpp @@ -166,7 +166,6 @@ void Slider::_notification(int p_what) { RID ci = get_canvas_item(); Size2i size = get_size(); Ref<StyleBox> style = get_stylebox("slider"); - Ref<StyleBox> focus = get_stylebox("focus"); Ref<StyleBox> grabber_area = get_stylebox("grabber_area"); Ref<Texture> grabber = get_icon(editable ? ((mouse_inside || has_focus()) ? "grabber_highlight" : "grabber") : "grabber_disabled"); Ref<Texture> tick = get_icon("tick"); @@ -178,10 +177,7 @@ void Slider::_notification(int p_what) { float areasize = size.height - grabber->get_size().height; style->draw(ci, Rect2i(Point2i(size.width / 2 - widget_width / 2, 0), Size2i(widget_width, size.height))); grabber_area->draw(ci, Rect2i(Point2i((size.width - widget_width) / 2, size.height - areasize * ratio - grabber->get_size().height / 2), Size2i(widget_width, areasize * ratio + grabber->get_size().width / 2))); - /* - if (mouse_inside||has_focus()) - focus->draw(ci,Rect2i(Point2i(),Size2i(style->get_minimum_size().width+style->get_center_size().width,size.height))); - */ + if (ticks > 1) { int grabber_offset = (grabber->get_size().height / 2 - tick->get_height() / 2); for (int i = 0; i < ticks; i++) { @@ -198,10 +194,6 @@ void Slider::_notification(int p_what) { style->draw(ci, Rect2i(Point2i(0, (size.height - widget_height) / 2), Size2i(size.width, widget_height))); grabber_area->draw(ci, Rect2i(Point2i(0, (size.height - widget_height) / 2), Size2i(areasize * ratio + grabber->get_size().width / 2, widget_height))); - /* - if (mouse_inside||has_focus()) - focus->draw(ci,Rect2i(Point2i(),Size2i(size.width,style->get_minimum_size().height+style->get_center_size().height))); - */ if (ticks > 1) { int grabber_offset = (grabber->get_size().width / 2 - tick->get_width() / 2); diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp index bf067898e6..de25d6a63d 100644 --- a/scene/gui/spin_box.cpp +++ b/scene/gui/spin_box.cpp @@ -211,6 +211,10 @@ void SpinBox::_notification(int p_what) { _adjust_width_for_icon(get_icon("updown")); _value_changed(0); + } else if (p_what == NOTIFICATION_THEME_CHANGED) { + + call_deferred("minimum_size_changed"); + get_line_edit()->call_deferred("minimum_size_changed"); } } diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 2558a930b6..2c4c7bdebe 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -1946,6 +1946,7 @@ void TextEdit::indent_right() { // Ignore if the cursor is not past the first column. if (is_selection_active() && get_selection_to_column() == 0) { + selection_offset = 0; end_line--; } @@ -4438,7 +4439,6 @@ int TextEdit::get_line_wrap_index_at_col(int p_line, int p_column) const { } void TextEdit::cursor_set_column(int p_col, bool p_adjust_viewport) { - if (p_col < 0) p_col = 0; @@ -5178,11 +5178,16 @@ void TextEdit::cut() { OS::get_singleton()->set_clipboard(clipboard); cursor_set_line(cursor.line); cursor_set_column(0); - _remove_text(cursor.line, 0, cursor.line, text[cursor.line].length()); - backspace_at_cursor(); + if (cursor.line == 0 && get_line_count() > 1) { + _remove_text(cursor.line, 0, cursor.line + 1, 0); + } else { + _remove_text(cursor.line, 0, cursor.line, text[cursor.line].length()); + backspace_at_cursor(); + cursor_set_line(cursor.line + 1); + } + update(); - cursor_set_line(cursor.line + 1); cut_copy_line = clipboard; } else { @@ -7141,6 +7146,7 @@ TextEdit::TextEdit() { max_chars = 0; clear(); wrap_enabled = false; + wrap_at = 0; wrap_right_offset = 10; set_focus_mode(FOCUS_ALL); syntax_highlighter = NULL; diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index 594366de7d..4f11e9bb50 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -69,6 +69,10 @@ public: int region; bool end; + ColorRegionInfo() { + region = 0; + end = false; + } }; struct Line { @@ -84,6 +88,16 @@ public: Ref<Texture> info_icon; String info; String data; + Line() { + width_cache = 0; + marked = false; + breakpoint = false; + bookmark = false; + hidden = false; + safe = false; + has_info = false; + wrap_amount_cache = 0; + } }; private: @@ -143,6 +157,14 @@ private: int last_fit_x; int line, column; ///< cursor int x_ofs, line_ofs, wrap_ofs; + Cursor() { + last_fit_x = 0; + line = 0; + column = 0; ///< cursor + x_ofs = 0; + line_ofs = 0; + wrap_ofs = 0; + } } cursor; struct Selection { @@ -167,7 +189,21 @@ private: int to_line, to_column; bool shiftclick_left; - + Selection() { + selecting_mode = MODE_NONE; + selecting_line = 0; + selecting_column = 0; + selected_word_beg = 0; + selected_word_end = 0; + selected_word_origin = 0; + selecting_text = false; + active = false; + from_line = 0; + from_column = 0; + to_line = 0; + to_column = 0; + shiftclick_left = false; + } } selection; struct Cache { @@ -219,6 +255,16 @@ private: int fold_gutter_width; int info_gutter_width; int minimap_width; + Cache() { + + row_height = 0; + line_spacing = 0; + line_number_w = 0; + breakpoint_gutter_width = 0; + fold_gutter_width = 0; + info_gutter_width = 0; + minimap_width = 0; + } } cache; Map<int, int> color_region_cache; @@ -240,6 +286,17 @@ private: uint32_t version; bool chain_forward; bool chain_backward; + TextOperation() { + type = TYPE_NONE; + from_line = 0; + from_column = 0; + to_line = 0; + to_column = 0; + prev_version = 0; + version = 0; + chain_forward = false; + chain_backward = false; + } }; String ime_text; diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index 3a6fff45c5..48f6a0cc95 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -423,7 +423,7 @@ void SceneTree::input_event(const Ref<InputEvent> &p_event) { input_handled = false; - Ref<InputEvent> ev = p_event; + const Ref<InputEvent> &ev = p_event; MainLoop::input_event(ev); diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 3ad44a4a2e..a7c7322b0e 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -2407,12 +2407,12 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { Input *input = Input::get_singleton(); - if (!mods && p_event->is_action_pressed("ui_focus_next") && input->is_action_just_pressed("ui_focus_next")) { + if (p_event->is_action_pressed("ui_focus_next") && input->is_action_just_pressed("ui_focus_next")) { next = from->find_next_valid_focus(); } - if (!mods && p_event->is_action_pressed("ui_focus_prev") && input->is_action_just_pressed("ui_focus_prev")) { + if (p_event->is_action_pressed("ui_focus_prev") && input->is_action_just_pressed("ui_focus_prev")) { next = from->find_prev_valid_focus(); } @@ -2634,6 +2634,7 @@ void Viewport::_gui_control_grab_focus(Control *p_control) { return; get_tree()->call_group_flags(SceneTree::GROUP_CALL_REALTIME, "_viewports", "_gui_remove_focus"); gui.key_focus = p_control; + emit_signal("gui_focus_changed", p_control); p_control->notification(Control::NOTIFICATION_FOCUS_ENTER); p_control->update(); } @@ -3216,6 +3217,7 @@ void Viewport::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "global_canvas_transform", PROPERTY_HINT_NONE, "", 0), "set_global_canvas_transform", "get_global_canvas_transform"); ADD_SIGNAL(MethodInfo("size_changed")); + ADD_SIGNAL(MethodInfo("gui_focus_changed", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_RESOURCE_TYPE, "Control"))); BIND_ENUM_CONSTANT(UPDATE_DISABLED); BIND_ENUM_CONSTANT(UPDATE_ONCE); diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index e82819f270..c67e5a928c 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -496,9 +496,6 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const theme->set_stylebox("slider", "HSlider", make_stylebox(hslider_bg_png, 4, 4, 4, 4)); theme->set_stylebox("grabber_area", "HSlider", make_stylebox(hslider_bg_png, 4, 4, 4, 4)); - theme->set_stylebox("grabber_highlight", "HSlider", make_stylebox(hslider_grabber_hl_png, 6, 6, 6, 6)); - theme->set_stylebox("grabber_disabled", "HSlider", make_stylebox(hslider_grabber_disabled_png, 6, 6, 6, 6)); - theme->set_stylebox("focus", "HSlider", focus); theme->set_icon("grabber", "HSlider", make_icon(hslider_grabber_png)); theme->set_icon("grabber_highlight", "HSlider", make_icon(hslider_grabber_hl_png)); @@ -509,9 +506,6 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const theme->set_stylebox("slider", "VSlider", make_stylebox(vslider_bg_png, 4, 4, 4, 4)); theme->set_stylebox("grabber_area", "VSlider", make_stylebox(vslider_bg_png, 4, 4, 4, 4)); - theme->set_stylebox("grabber_highlight", "VSlider", make_stylebox(vslider_grabber_hl_png, 6, 6, 6, 6)); - theme->set_stylebox("grabber_disabled", "VSlider", make_stylebox(vslider_grabber_disabled_png, 6, 6, 6, 6)); - theme->set_stylebox("focus", "VSlider", focus); theme->set_icon("grabber", "VSlider", make_icon(vslider_grabber_png)); theme->set_icon("grabber_highlight", "VSlider", make_icon(vslider_grabber_hl_png)); diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp index 99a2881d58..7524571956 100644 --- a/scene/resources/dynamic_font.cpp +++ b/scene/resources/dynamic_font.cpp @@ -657,6 +657,7 @@ void DynamicFont::_reload_cache() { if (!data.is_valid()) { data_at_size.unref(); outline_data_at_size.unref(); + fallbacks.resize(0); fallback_data_at_size.resize(0); fallback_outline_data_at_size.resize(0); return; diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index 4afb07cb6f..0d94d4dbf4 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -483,6 +483,7 @@ void Mesh::_bind_methods() { ClassDB::bind_method(D_METHOD("set_lightmap_size_hint", "size"), &Mesh::set_lightmap_size_hint); ClassDB::bind_method(D_METHOD("get_lightmap_size_hint"), &Mesh::get_lightmap_size_hint); + ClassDB::bind_method(D_METHOD("get_aabb"), &Mesh::get_aabb); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "lightmap_size_hint"), "set_lightmap_size_hint", "get_lightmap_size_hint"); diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp index 7d62873bbd..5ce269fff9 100644 --- a/scene/resources/packed_scene.cpp +++ b/scene/resources/packed_scene.cpp @@ -397,6 +397,9 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map if (p_owner->get_scene_inherited_state().is_null() && (p_node == p_owner || (p_node->get_owner() == p_owner && (p_node->get_parent() == p_owner || p_node->get_parent()->get_owner() == p_owner)))) { //do not save index, because it belongs to saved scene and scene is not inherited nd.index = -1; + } else if (p_node == p_owner) { + //This (hopefully) happens if the node is a scene root, so its index is irrelevant. + nd.index = -1; } else { //part of an inherited scene, or parent is from an instanced scene nd.index = p_node->get_index(); diff --git a/scene/resources/resource_format_text.cpp b/scene/resources/resource_format_text.cpp index baffc1396d..d4567abc07 100644 --- a/scene/resources/resource_format_text.cpp +++ b/scene/resources/resource_format_text.cpp @@ -1459,20 +1459,6 @@ void ResourceFormatSaverTextInstance::_find_resources(const Variant &p_variant, } } -static String _valprop(const String &p_name) { - - // Escape and quote strings with extended ASCII or further Unicode characters - // as well as '"', '=' or ' ' (32) - const CharType *cstr = p_name.c_str(); - for (int i = 0; cstr[i]; i++) { - if (cstr[i] == '=' || cstr[i] == '"' || cstr[i] < 33 || cstr[i] > 126) { - return "\"" + p_name.c_escape_multiline() + "\""; - } - } - // Keep as is - return p_name; -} - Error ResourceFormatSaverTextInstance::save(const String &p_path, const RES &p_resource, uint32_t p_flags) { if (p_path.ends_with(".tscn")) { @@ -1675,7 +1661,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path, const RES &p_r String vars; VariantWriter::write_to_string(value, vars, _write_resources, this); - f->store_string(_valprop(name) + " = " + vars + "\n"); + f->store_string(name.property_name_encode() + " = " + vars + "\n"); } } @@ -1747,7 +1733,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path, const RES &p_r String vars; VariantWriter::write_to_string(state->get_node_property_value(i, j), vars, _write_resources, this); - f->store_string(_valprop(String(state->get_node_property_name(i, j))) + " = " + vars + "\n"); + f->store_string(String(state->get_node_property_name(i, j)).property_name_encode() + " = " + vars + "\n"); } if (i < state->get_node_count() - 1) diff --git a/scene/resources/segment_shape_2d.cpp b/scene/resources/segment_shape_2d.cpp index 62c5f9bab3..cc6ec93d74 100644 --- a/scene/resources/segment_shape_2d.cpp +++ b/scene/resources/segment_shape_2d.cpp @@ -120,8 +120,8 @@ void RayShape2D::draw(const RID &p_to_rid, const Color &p_color) { Vector<Vector2> pts; float tsize = 4; pts.push_back(tip + Vector2(0, tsize)); - pts.push_back(tip + Vector2(0.707 * tsize, 0)); - pts.push_back(tip + Vector2(-0.707 * tsize, 0)); + pts.push_back(tip + Vector2(Math_SQRT12 * tsize, 0)); + pts.push_back(tip + Vector2(-Math_SQRT12 * tsize, 0)); Vector<Color> cols; for (int i = 0; i < 3; i++) cols.push_back(p_color); @@ -134,7 +134,7 @@ Rect2 RayShape2D::get_rect() const { Rect2 rect; rect.position = Vector2(); rect.expand_to(Vector2(0, length)); - rect = rect.grow(0.707 * 4); + rect = rect.grow(Math_SQRT12 * 4); return rect; } diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp index f26b57b572..e0286b9238 100644 --- a/scene/resources/style_box.cpp +++ b/scene/resources/style_box.cpp @@ -554,7 +554,7 @@ int StyleBoxFlat::get_aa_size() const { } void StyleBoxFlat::set_corner_detail(const int &p_corner_detail) { - corner_detail = CLAMP(p_corner_detail, 1, 128); + corner_detail = CLAMP(p_corner_detail, 1, 20); emit_changed(); } int StyleBoxFlat::get_corner_detail() const { @@ -590,8 +590,8 @@ inline void set_inner_corner_radius(const Rect2 style_rect, const Rect2 inner_re inner_corner_radius[3] = MAX(corner_radius[3] - rad, 0); } -inline void draw_ring(Vector<Vector2> &verts, Vector<int> &indices, Vector<Color> &colors, const Rect2 style_rect, const int corner_radius[4], - const Rect2 ring_rect, const int border_width[4], const Color &inner_color, const Color &outer_color, const int corner_detail, const bool fill_center = false) { +inline void draw_ring(Vector<Vector2> &verts, Vector<int> &indices, Vector<Color> &colors, const Rect2 &style_rect, const int corner_radius[4], + const Rect2 &ring_rect, const Rect2 &inner_rect, const Color &inner_color, const Color &outer_color, const int corner_detail, const bool fill_center = false) { int vert_offset = verts.size(); if (!vert_offset) { @@ -610,9 +610,6 @@ inline void draw_ring(Vector<Vector2> &verts, Vector<int> &indices, Vector<Color outer_points.push_back(ring_rect.position + ring_rect.size - Vector2(ring_corner_radius[2], ring_corner_radius[2])); //br outer_points.push_back(Point2(ring_rect.position.x + ring_corner_radius[3], ring_rect.position.y + ring_rect.size.y - ring_corner_radius[3])); //bl - Rect2 inner_rect; - inner_rect = ring_rect.grow_individual(-border_width[MARGIN_LEFT], -border_width[MARGIN_TOP], -border_width[MARGIN_RIGHT], -border_width[MARGIN_BOTTOM]); - int inner_corner_radius[4]; set_inner_corner_radius(style_rect, inner_rect, corner_radius, inner_corner_radius); @@ -723,20 +720,11 @@ void StyleBoxFlat::draw(RID p_canvas_item, const Rect2 &p_rect) const { bool rounded_corners = (corner_radius[0] > 0) || (corner_radius[1] > 0) || (corner_radius[2] > 0) || (corner_radius[3] > 0); bool aa_on = rounded_corners && anti_aliased; - Color border_color_alpha = Color(border_color.r, border_color.g, border_color.b, 0); - bool blend_on = blend_border && draw_border; - Rect2 border_style_rect = style_rect; - if (aa_on && !blend_on) { - float aa_size_grow = 0.5 * ((aa_size + 1) / 2); - style_rect = style_rect.grow(-aa_size_grow); - for (int i = 0; i < 4; i++) { - if (border_width[i] > 0) { - border_style_rect = border_style_rect.grow_margin((Margin)i, -aa_size_grow); - } - } - } + Color border_color_alpha = Color(border_color.r, border_color.g, border_color.b, 0); + Color border_color_blend = (draw_center ? bg_color : border_color_alpha); + Color border_color_inner = blend_on ? border_color_blend : border_color; //adapt borders (prevent weird overlapping/glitchy drawings) int width = MAX(style_rect.size.width, 0); @@ -754,6 +742,16 @@ void StyleBoxFlat::draw(RID p_canvas_item, const Rect2 &p_rect) const { Rect2 infill_rect = style_rect.grow_individual(-adapted_border[MARGIN_LEFT], -adapted_border[MARGIN_TOP], -adapted_border[MARGIN_RIGHT], -adapted_border[MARGIN_BOTTOM]); + Rect2 border_style_rect = style_rect; + if (aa_on) { + float aa_size_grow = 0.5 * ((aa_size + 1) / 2); + for (int i = 0; i < 4; i++) { + if (border_width[i] > 0) { + border_style_rect = border_style_rect.grow_margin((Margin)i, -aa_size_grow); + } + } + } + Vector<Point2> verts; Vector<int> indices; Vector<Color> colors; @@ -761,8 +759,6 @@ void StyleBoxFlat::draw(RID p_canvas_item, const Rect2 &p_rect) const { //DRAW SHADOW if (draw_shadow) { - int shadow_width[4] = { shadow_size, shadow_size, shadow_size, shadow_size }; - Rect2 shadow_inner_rect = style_rect; shadow_inner_rect.position += shadow_offset; @@ -772,59 +768,65 @@ void StyleBoxFlat::draw(RID p_canvas_item, const Rect2 &p_rect) const { Color shadow_color_transparent = Color(shadow_color.r, shadow_color.g, shadow_color.b, 0); draw_ring(verts, indices, colors, shadow_inner_rect, adapted_corner, - shadow_rect, shadow_width, shadow_color, shadow_color_transparent, corner_detail); + shadow_rect, shadow_inner_rect, shadow_color, shadow_color_transparent, corner_detail); if (draw_center) { - int no_border[4] = { 0, 0, 0, 0 }; draw_ring(verts, indices, colors, shadow_inner_rect, adapted_corner, - shadow_inner_rect, no_border, shadow_color, shadow_color, corner_detail, true); + shadow_inner_rect, shadow_inner_rect, shadow_color, shadow_color, corner_detail, true); } } //DRAW border if (draw_border) { draw_ring(verts, indices, colors, border_style_rect, adapted_corner, - border_style_rect, adapted_border, blend_on ? (draw_center ? bg_color : border_color_alpha) : border_color, border_color, corner_detail); + border_style_rect, infill_rect, border_color_inner, border_color, corner_detail); } //DRAW INFILL - if (draw_center) { - int no_border[4] = { 0, 0, 0, 0 }; - draw_ring(verts, indices, colors, style_rect, adapted_corner, - infill_rect, no_border, bg_color, bg_color, corner_detail, true); + if (draw_center && (!aa_on || blend_on || !draw_border)) { + draw_ring(verts, indices, colors, border_style_rect, adapted_corner, + infill_rect, infill_rect, bg_color, bg_color, corner_detail, true); } if (aa_on) { - Rect2 border_inner_rect = infill_rect; + float aa_size_grow = 0.5 * ((aa_size + 1) / 2); int aa_border_width[4]; int aa_fill_width[4]; if (draw_border) { - border_inner_rect = border_style_rect.grow_individual(-adapted_border[MARGIN_LEFT], -adapted_border[MARGIN_TOP], -adapted_border[MARGIN_RIGHT], -adapted_border[MARGIN_BOTTOM]); for (int i = 0; i < 4; i++) { if (border_width[i] > 0) { - aa_border_width[i] = aa_size; + aa_border_width[i] = aa_size_grow; aa_fill_width[i] = 0; } else { aa_border_width[i] = 0; - aa_fill_width[i] = aa_size; + aa_fill_width[i] = aa_size_grow; } } } else { for (int i = 0; i < 4; i++) { - aa_fill_width[i] = aa_size; + aa_fill_width[i] = aa_size_grow; } } + Rect2 infill_inner_rect = infill_rect.grow_individual(-aa_border_width[MARGIN_LEFT], -aa_border_width[MARGIN_TOP], + -aa_border_width[MARGIN_RIGHT], -aa_border_width[MARGIN_BOTTOM]); + if (draw_center) { - if (!draw_border || !blend_on) { - Rect2 aa_rect = infill_rect.grow_individual(aa_fill_width[MARGIN_LEFT], aa_fill_width[MARGIN_TOP], + if (!blend_on && draw_border) { + //DRAW INFILL WITHIN BORDER AA + draw_ring(verts, indices, colors, border_style_rect, adapted_corner, + infill_inner_rect, infill_inner_rect, bg_color, bg_color, corner_detail, true); + } + + if (!blend_on || !draw_border) { + Rect2 infill_aa_rect = infill_rect.grow_individual(aa_fill_width[MARGIN_LEFT], aa_fill_width[MARGIN_TOP], aa_fill_width[MARGIN_RIGHT], aa_fill_width[MARGIN_BOTTOM]); Color alpha_bg = Color(bg_color.r, bg_color.g, bg_color.b, 0); //INFILL AA draw_ring(verts, indices, colors, style_rect, adapted_corner, - aa_rect, aa_fill_width, bg_color, alpha_bg, corner_detail); + infill_aa_rect, infill_rect, bg_color, alpha_bg, corner_detail); } } @@ -832,15 +834,12 @@ void StyleBoxFlat::draw(RID p_canvas_item, const Rect2 &p_rect) const { if (!blend_on) { //DRAW INNER BORDER AA draw_ring(verts, indices, colors, border_style_rect, adapted_corner, - border_inner_rect, aa_border_width, border_color_alpha, border_color, corner_detail); + infill_rect, infill_inner_rect, border_color_blend, border_color, corner_detail); } - Rect2 aa_rect = border_style_rect.grow_individual(aa_border_width[MARGIN_LEFT], aa_border_width[MARGIN_TOP], - aa_border_width[MARGIN_RIGHT], aa_border_width[MARGIN_BOTTOM]); - //DRAW OUTER BORDER AA draw_ring(verts, indices, colors, border_style_rect, adapted_corner, - aa_rect, aa_border_width, border_color, border_color_alpha, corner_detail); + style_rect, border_style_rect, border_color, border_color_alpha, corner_detail); } } @@ -931,7 +930,7 @@ void StyleBoxFlat::_bind_methods() { ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_bottom_right", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_BOTTOM_RIGHT); ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_bottom_left", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_BOTTOM_LEFT); - ADD_PROPERTY(PropertyInfo(Variant::INT, "corner_detail", PROPERTY_HINT_RANGE, "1,128,1"), "set_corner_detail", "get_corner_detail"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "corner_detail", PROPERTY_HINT_RANGE, "1,20,1"), "set_corner_detail", "get_corner_detail"); ADD_GROUP("Expand Margin", "expand_margin_"); ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_left", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin", "get_expand_margin", MARGIN_LEFT); diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp index 593c399f62..b21546af2f 100644 --- a/scene/resources/texture.cpp +++ b/scene/resources/texture.cpp @@ -1333,6 +1333,7 @@ void LargeTexture::set_piece_offset(int p_idx, const Point2 &p_offset) { void LargeTexture::set_piece_texture(int p_idx, const Ref<Texture> &p_texture) { ERR_FAIL_COND(p_texture == this); + ERR_FAIL_COND(p_texture.is_null()); ERR_FAIL_INDEX(p_idx, pieces.size()); pieces.write[p_idx].texture = p_texture; }; diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp index c897365b21..bf9079c9f4 100644 --- a/scene/resources/theme.cpp +++ b/scene/resources/theme.cpp @@ -720,7 +720,10 @@ void Theme::clear() { while ((K = icon_map.next(K))) { const StringName *L = NULL; while ((L = icon_map[*K].next(L))) { - icon_map[*K][*L]->disconnect("changed", this, "_emit_theme_changed"); + Ref<Texture> icon = icon_map[*K][*L]; + if (icon.is_valid()) { + icon->disconnect("changed", this, "_emit_theme_changed"); + } } } } @@ -730,7 +733,10 @@ void Theme::clear() { while ((K = style_map.next(K))) { const StringName *L = NULL; while ((L = style_map[*K].next(L))) { - style_map[*K][*L]->disconnect("changed", this, "_emit_theme_changed"); + Ref<StyleBox> style = style_map[*K][*L]; + if (style.is_valid()) { + style->disconnect("changed", this, "_emit_theme_changed"); + } } } } @@ -740,7 +746,10 @@ void Theme::clear() { while ((K = font_map.next(K))) { const StringName *L = NULL; while ((L = font_map[*K].next(L))) { - font_map[*K][*L]->disconnect("changed", this, "_emit_theme_changed"); + Ref<Font> font = font_map[*K][*L]; + if (font.is_valid()) { + font->disconnect("changed", this, "_emit_theme_changed"); + } } } } diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 9f99732714..797de1d863 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -2259,6 +2259,8 @@ void VisualShaderNodeGroupBase::set_input_port_type(int p_id, int p_type) { int index = 0; for (int i = 0; i < inputs_strings.size(); i++) { Vector<String> arr = inputs_strings[i].split(","); + ERR_FAIL_COND(arr.size() != 3); + if (arr[0].to_int() == p_id) { index += arr[0].size(); count = arr[1].size() - 1; @@ -2292,6 +2294,8 @@ void VisualShaderNodeGroupBase::set_input_port_name(int p_id, const String &p_na int index = 0; for (int i = 0; i < inputs_strings.size(); i++) { Vector<String> arr = inputs_strings[i].split(","); + ERR_FAIL_COND(arr.size() != 3); + if (arr[0].to_int() == p_id) { index += arr[0].size() + arr[1].size(); count = arr[2].size() - 1; @@ -2325,6 +2329,8 @@ void VisualShaderNodeGroupBase::set_output_port_type(int p_id, int p_type) { int index = 0; for (int i = 0; i < output_strings.size(); i++) { Vector<String> arr = output_strings[i].split(","); + ERR_FAIL_COND(arr.size() != 3); + if (arr[0].to_int() == p_id) { index += arr[0].size(); count = arr[1].size() - 1; @@ -2358,6 +2364,8 @@ void VisualShaderNodeGroupBase::set_output_port_name(int p_id, const String &p_n int index = 0; for (int i = 0; i < output_strings.size(); i++) { Vector<String> arr = output_strings[i].split(","); + ERR_FAIL_COND(arr.size() != 3); + if (arr[0].to_int() == p_id) { index += arr[0].size() + arr[1].size(); count = arr[2].size() - 1; @@ -2405,6 +2413,8 @@ void VisualShaderNodeGroupBase::_apply_port_changes() { for (int i = 0; i < inputs_strings.size(); i++) { Vector<String> arr = inputs_strings[i].split(","); + ERR_FAIL_COND(arr.size() != 3); + Port port; port.type = (PortType)arr[1].to_int(); port.name = arr[2]; @@ -2412,6 +2422,8 @@ void VisualShaderNodeGroupBase::_apply_port_changes() { } for (int i = 0; i < outputs_strings.size(); i++) { Vector<String> arr = outputs_strings[i].split(","); + ERR_FAIL_COND(arr.size() != 3); + Port port; port.type = (PortType)arr[1].to_int(); port.name = arr[2]; diff --git a/scene/resources/visual_shader_nodes.cpp b/scene/resources/visual_shader_nodes.cpp index a94fdd9d7b..6e4b5d9af0 100644 --- a/scene/resources/visual_shader_nodes.cpp +++ b/scene/resources/visual_shader_nodes.cpp @@ -715,6 +715,7 @@ void VisualShaderNodeTexture::_bind_methods() { BIND_ENUM_CONSTANT(SOURCE_2D_TEXTURE); BIND_ENUM_CONSTANT(SOURCE_2D_NORMAL); BIND_ENUM_CONSTANT(SOURCE_DEPTH); + BIND_ENUM_CONSTANT(SOURCE_PORT); BIND_ENUM_CONSTANT(TYPE_DATA); BIND_ENUM_CONSTANT(TYPE_COLOR); BIND_ENUM_CONSTANT(TYPE_NORMALMAP); diff --git a/servers/audio/effects/audio_effect_record.cpp b/servers/audio/effects/audio_effect_record.cpp index 83d78daff4..3b6b1de806 100644 --- a/servers/audio/effects/audio_effect_record.cpp +++ b/servers/audio/effects/audio_effect_record.cpp @@ -192,10 +192,11 @@ void AudioEffectRecord::set_recording_active(bool p_record) { } ensure_thread_stopped(); + recording_active = true; current_instance->init(); + } else { + recording_active = false; } - - recording_active = p_record; } bool AudioEffectRecord::is_recording_active() const { diff --git a/servers/camera_server.cpp b/servers/camera_server.cpp index 0f93221072..6912a37fc5 100644 --- a/servers/camera_server.cpp +++ b/servers/camera_server.cpp @@ -35,6 +35,8 @@ //////////////////////////////////////////////////////// // CameraServer +CameraServer::CreateFunc CameraServer::create_func = NULL; + void CameraServer::_bind_methods() { ClassDB::bind_method(D_METHOD("get_feed", "index"), &CameraServer::get_feed); ClassDB::bind_method(D_METHOD("get_feed_count"), &CameraServer::get_feed_count); diff --git a/servers/camera_server.h b/servers/camera_server.h index c76d046e58..aa10f4dbb9 100644 --- a/servers/camera_server.h +++ b/servers/camera_server.h @@ -59,17 +59,36 @@ public: FEED_IMAGES = 2 }; + typedef CameraServer *(*CreateFunc)(); + private: protected: + static CreateFunc create_func; + Vector<Ref<CameraFeed> > feeds; static CameraServer *singleton; static void _bind_methods(); + template <class T> + static CameraServer *_create_builtin() { + return memnew(T); + } + public: static CameraServer *get_singleton(); + template <class T> + static void make_default() { + create_func = _create_builtin<T>; + } + + static CameraServer *create() { + CameraServer *server = create_func ? create_func() : memnew(CameraServer); + return server; + }; + // Right now we identify our feed by it's ID when it's used in the background. // May see if we can change this to purely relying on CameraFeed objects or by name. int get_free_id(); diff --git a/servers/physics/joints/cone_twist_joint_sw.cpp b/servers/physics/joints/cone_twist_joint_sw.cpp index 1b3de3e913..cd86128dc3 100644 --- a/servers/physics/joints/cone_twist_joint_sw.cpp +++ b/servers/physics/joints/cone_twist_joint_sw.cpp @@ -53,7 +53,7 @@ Written by: Marcus Hennix static void plane_space(const Vector3 &n, Vector3 &p, Vector3 &q) { - if (Math::abs(n.z) > 0.707106781186547524400844362) { + if (Math::abs(n.z) > Math_SQRT12) { // choose p in y-z plane real_t a = n[1] * n[1] + n[2] * n[2]; real_t k = 1.0 / Math::sqrt(a); diff --git a/servers/physics/joints/hinge_joint_sw.cpp b/servers/physics/joints/hinge_joint_sw.cpp index 209cddda5e..633f0b4921 100644 --- a/servers/physics/joints/hinge_joint_sw.cpp +++ b/servers/physics/joints/hinge_joint_sw.cpp @@ -51,7 +51,7 @@ subject to the following restrictions: static void plane_space(const Vector3 &n, Vector3 &p, Vector3 &q) { - if (Math::abs(n.z) > 0.707106781186547524400844362) { + if (Math::abs(n.z) > Math_SQRT12) { // choose p in y-z plane real_t a = n[1] * n[1] + n[2] * n[2]; real_t k = 1.0 / Math::sqrt(a); diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp index 80e204087a..73baab2dd6 100644 --- a/servers/physics_2d/physics_2d_server_sw.cpp +++ b/servers/physics_2d/physics_2d_server_sw.cpp @@ -174,7 +174,7 @@ void Physics2DServerSW::_shape_col_cbk(const Vector2 &p_point_A, const Vector2 & } Vector2 rel_dir = (p_point_A - p_point_B).normalized(); - if (cbk->valid_dir.dot(rel_dir) < 0.7071) { //sqrt(2)/2.0 - 45 degrees + if (cbk->valid_dir.dot(rel_dir) < Math_SQRT12) { //sqrt(2)/2.0 - 45 degrees cbk->invalid_by_dir++; /* diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index 316a94556d..1aceb8dcd8 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -2912,7 +2912,7 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons tk = _get_token(); if (tk.type == TK_PARENTHESIS_OPEN) { //a function - StringName name = identifier; + const StringName &name = identifier; OperatorNode *func = alloc_node<OperatorNode>(); func->op = OP_CALL; @@ -5099,7 +5099,7 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct if (!expr) return ERR_PARSE_ERROR; - if (expr->type != Node::TYPE_CONSTANT) { + if (expr->type == Node::TYPE_OPERATOR && ((OperatorNode *)expr)->op == OP_CALL) { _set_error("Expected constant expression after '='"); return ERR_PARSE_ERROR; } diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp index 7bb97e0577..49b5562b6c 100644 --- a/servers/visual/visual_server_canvas.cpp +++ b/servers/visual/visual_server_canvas.cpp @@ -783,7 +783,7 @@ void VisualServerCanvas::canvas_item_add_polygon(RID p_item, const Vector<Point2 canvas_item->commands.push_back(polygon); } -void VisualServerCanvas::canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, const Vector<int> &p_bones, const Vector<float> &p_weights, RID p_texture, int p_count, RID p_normal_map) { +void VisualServerCanvas::canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, const Vector<int> &p_bones, const Vector<float> &p_weights, RID p_texture, int p_count, RID p_normal_map, bool p_antialiased) { Item *canvas_item = canvas_item_owner.getornull(p_item); ERR_FAIL_COND(!canvas_item); @@ -822,7 +822,7 @@ void VisualServerCanvas::canvas_item_add_triangle_array(RID p_item, const Vector polygon->weights = p_weights; polygon->indices = indices; polygon->count = count; - polygon->antialiased = false; + polygon->antialiased = p_antialiased; canvas_item->rect_dirty = true; canvas_item->commands.push_back(polygon); diff --git a/servers/visual/visual_server_canvas.h b/servers/visual/visual_server_canvas.h index 822e3f8ce3..cf2eefdec6 100644 --- a/servers/visual/visual_server_canvas.h +++ b/servers/visual/visual_server_canvas.h @@ -200,7 +200,7 @@ public: void canvas_item_add_nine_patch(RID p_item, const Rect2 &p_rect, const Rect2 &p_source, RID p_texture, const Vector2 &p_topleft, const Vector2 &p_bottomright, VS::NinePatchAxisMode p_x_axis_mode = VS::NINE_PATCH_STRETCH, VS::NinePatchAxisMode p_y_axis_mode = VS::NINE_PATCH_STRETCH, bool p_draw_center = true, const Color &p_modulate = Color(1, 1, 1), RID p_normal_map = RID()); void canvas_item_add_primitive(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, float p_width = 1.0, RID p_normal_map = RID()); void canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), RID p_normal_map = RID(), bool p_antialiased = false); - void canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), const Vector<int> &p_bones = Vector<int>(), const Vector<float> &p_weights = Vector<float>(), RID p_texture = RID(), int p_count = -1, RID p_normal_map = RID()); + void canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), const Vector<int> &p_bones = Vector<int>(), const Vector<float> &p_weights = Vector<float>(), RID p_texture = RID(), int p_count = -1, RID p_normal_map = RID(), bool p_antialiased = false); void canvas_item_add_mesh(RID p_item, const RID &p_mesh, const Transform2D &p_transform = Transform2D(), const Color &p_modulate = Color(1, 1, 1), RID p_texture = RID(), RID p_normal_map = RID()); void canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_texture = RID(), RID p_normal_map = RID()); void canvas_item_add_particles(RID p_item, RID p_particles, RID p_texture, RID p_normal); diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 06096781fe..4cef86db30 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -602,7 +602,7 @@ public: BIND11(canvas_item_add_nine_patch, RID, const Rect2 &, const Rect2 &, RID, const Vector2 &, const Vector2 &, NinePatchAxisMode, NinePatchAxisMode, bool, const Color &, RID) BIND7(canvas_item_add_primitive, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, float, RID) BIND7(canvas_item_add_polygon, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, RID, bool) - BIND10(canvas_item_add_triangle_array, RID, const Vector<int> &, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, const Vector<int> &, const Vector<float> &, RID, int, RID) + BIND11(canvas_item_add_triangle_array, RID, const Vector<int> &, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, const Vector<int> &, const Vector<float> &, RID, int, RID, bool) BIND6(canvas_item_add_mesh, RID, const RID &, const Transform2D &, const Color &, RID, RID) BIND4(canvas_item_add_multimesh, RID, RID, RID, RID) BIND4(canvas_item_add_particles, RID, RID, RID, RID) diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index 59df51ff19..ff42dcf00b 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -520,7 +520,7 @@ public: FUNC11(canvas_item_add_nine_patch, RID, const Rect2 &, const Rect2 &, RID, const Vector2 &, const Vector2 &, NinePatchAxisMode, NinePatchAxisMode, bool, const Color &, RID) FUNC7(canvas_item_add_primitive, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, float, RID) FUNC7(canvas_item_add_polygon, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, RID, bool) - FUNC10(canvas_item_add_triangle_array, RID, const Vector<int> &, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, const Vector<int> &, const Vector<float> &, RID, int, RID) + FUNC11(canvas_item_add_triangle_array, RID, const Vector<int> &, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, const Vector<int> &, const Vector<float> &, RID, int, RID, bool) FUNC6(canvas_item_add_mesh, RID, const RID &, const Transform2D &, const Color &, RID, RID) FUNC4(canvas_item_add_multimesh, RID, RID, RID, RID) FUNC4(canvas_item_add_particles, RID, RID, RID, RID) diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp index a1ba946d8c..b09a191cdc 100644 --- a/servers/visual_server.cpp +++ b/servers/visual_server.cpp @@ -1693,7 +1693,7 @@ void VisualServer::_bind_methods() { ClassDB::bind_method(D_METHOD("mesh_create"), &VisualServer::mesh_create); ClassDB::bind_method(D_METHOD("mesh_surface_get_format_offset", "format", "vertex_len", "index_len", "array_index"), &VisualServer::mesh_surface_get_format_offset); ClassDB::bind_method(D_METHOD("mesh_surface_get_format_stride", "format", "vertex_len", "index_len"), &VisualServer::mesh_surface_get_format_stride); - ClassDB::bind_method(D_METHOD("mesh_add_surface_from_arrays", "mesh", "primtive", "arrays", "blend_shapes", "compress_format"), &VisualServer::mesh_add_surface_from_arrays, DEFVAL(Array()), DEFVAL(ARRAY_COMPRESS_DEFAULT)); + ClassDB::bind_method(D_METHOD("mesh_add_surface_from_arrays", "mesh", "primitive", "arrays", "blend_shapes", "compress_format"), &VisualServer::mesh_add_surface_from_arrays, DEFVAL(Array()), DEFVAL(ARRAY_COMPRESS_DEFAULT)); ClassDB::bind_method(D_METHOD("mesh_set_blend_shape_count", "mesh", "amount"), &VisualServer::mesh_set_blend_shape_count); ClassDB::bind_method(D_METHOD("mesh_get_blend_shape_count", "mesh"), &VisualServer::mesh_get_blend_shape_count); ClassDB::bind_method(D_METHOD("mesh_set_blend_shape_mode", "mesh", "mode"), &VisualServer::mesh_set_blend_shape_mode); @@ -1717,6 +1717,7 @@ void VisualServer::_bind_methods() { ClassDB::bind_method(D_METHOD("mesh_get_custom_aabb", "mesh"), &VisualServer::mesh_get_custom_aabb); ClassDB::bind_method(D_METHOD("mesh_clear", "mesh"), &VisualServer::mesh_clear); + ClassDB::bind_method(D_METHOD("multimesh_create"), &VisualServer::multimesh_create); ClassDB::bind_method(D_METHOD("multimesh_allocate", "multimesh", "instances", "transform_format", "color_format", "custom_data_format"), &VisualServer::multimesh_allocate, DEFVAL(MULTIMESH_CUSTOM_DATA_NONE)); ClassDB::bind_method(D_METHOD("multimesh_get_instance_count", "multimesh"), &VisualServer::multimesh_get_instance_count); ClassDB::bind_method(D_METHOD("multimesh_set_mesh", "multimesh", "mesh"), &VisualServer::multimesh_set_mesh); @@ -1973,7 +1974,7 @@ void VisualServer::_bind_methods() { ClassDB::bind_method(D_METHOD("canvas_item_add_nine_patch", "item", "rect", "source", "texture", "topleft", "bottomright", "x_axis_mode", "y_axis_mode", "draw_center", "modulate", "normal_map"), &VisualServer::canvas_item_add_nine_patch, DEFVAL(NINE_PATCH_STRETCH), DEFVAL(NINE_PATCH_STRETCH), DEFVAL(true), DEFVAL(Color(1, 1, 1)), DEFVAL(RID())); ClassDB::bind_method(D_METHOD("canvas_item_add_primitive", "item", "points", "colors", "uvs", "texture", "width", "normal_map"), &VisualServer::canvas_item_add_primitive, DEFVAL(1.0), DEFVAL(RID())); ClassDB::bind_method(D_METHOD("canvas_item_add_polygon", "item", "points", "colors", "uvs", "texture", "normal_map", "antialiased"), &VisualServer::canvas_item_add_polygon, DEFVAL(Vector<Point2>()), DEFVAL(RID()), DEFVAL(RID()), DEFVAL(false)); - ClassDB::bind_method(D_METHOD("canvas_item_add_triangle_array", "item", "indices", "points", "colors", "uvs", "bones", "weights", "texture", "count", "normal_map"), &VisualServer::canvas_item_add_triangle_array, DEFVAL(Vector<Point2>()), DEFVAL(Vector<int>()), DEFVAL(Vector<float>()), DEFVAL(RID()), DEFVAL(-1), DEFVAL(RID())); + ClassDB::bind_method(D_METHOD("canvas_item_add_triangle_array", "item", "indices", "points", "colors", "uvs", "bones", "weights", "texture", "count", "normal_map", "antialiased"), &VisualServer::canvas_item_add_triangle_array, DEFVAL(Vector<Point2>()), DEFVAL(Vector<int>()), DEFVAL(Vector<float>()), DEFVAL(RID()), DEFVAL(-1), DEFVAL(RID()), DEFVAL(false)); ClassDB::bind_method(D_METHOD("canvas_item_add_mesh", "item", "mesh", "transform", "modulate", "texture", "normal_map"), &VisualServer::canvas_item_add_mesh, DEFVAL(Transform2D()), DEFVAL(Color(1, 1, 1)), DEFVAL(RID()), DEFVAL(RID())); ClassDB::bind_method(D_METHOD("canvas_item_add_multimesh", "item", "mesh", "texture", "normal_map"), &VisualServer::canvas_item_add_multimesh, DEFVAL(RID())); ClassDB::bind_method(D_METHOD("canvas_item_add_particles", "item", "particles", "texture", "normal_map"), &VisualServer::canvas_item_add_particles); diff --git a/servers/visual_server.h b/servers/visual_server.h index b1daf87e56..acf02eee56 100644 --- a/servers/visual_server.h +++ b/servers/visual_server.h @@ -903,7 +903,7 @@ public: virtual void canvas_item_add_nine_patch(RID p_item, const Rect2 &p_rect, const Rect2 &p_source, RID p_texture, const Vector2 &p_topleft, const Vector2 &p_bottomright, NinePatchAxisMode p_x_axis_mode = NINE_PATCH_STRETCH, NinePatchAxisMode p_y_axis_mode = NINE_PATCH_STRETCH, bool p_draw_center = true, const Color &p_modulate = Color(1, 1, 1), RID p_normal_map = RID()) = 0; virtual void canvas_item_add_primitive(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, float p_width = 1.0, RID p_normal_map = RID()) = 0; virtual void canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), RID p_normal_map = RID(), bool p_antialiased = false) = 0; - virtual void canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), const Vector<int> &p_bones = Vector<int>(), const Vector<float> &p_weights = Vector<float>(), RID p_texture = RID(), int p_count = -1, RID p_normal_map = RID()) = 0; + virtual void canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), const Vector<int> &p_bones = Vector<int>(), const Vector<float> &p_weights = Vector<float>(), RID p_texture = RID(), int p_count = -1, RID p_normal_map = RID(), bool p_antialiased = false) = 0; virtual void canvas_item_add_mesh(RID p_item, const RID &p_mesh, const Transform2D &p_transform = Transform2D(), const Color &p_modulate = Color(1, 1, 1), RID p_texture = RID(), RID p_normal_map = RID()) = 0; virtual void canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_texture = RID(), RID p_normal_map = RID()) = 0; virtual void canvas_item_add_particles(RID p_item, RID p_particles, RID p_texture, RID p_normal_map) = 0; diff --git a/thirdparty/README.md b/thirdparty/README.md index 9571ee49b9..2ab0aedf1c 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -8,21 +8,6 @@ - License: BSD-3-Clause -## b2d_convexdecomp - -- Upstream: https://github.com/erincatto/Box2D/tree/master/Contributions/Utilities/ConvexDecomposition -- Version: git (25615e0, 2015) with modifications -- License: zlib - -The files were adapted to Godot by removing the dependency on b2Math (replacing -it by b2Glue.h) and commenting out some verbose printf calls. -Upstream code has not changed in 10 years, no need to keep track of changes. - -Important: Some files have Godot-made changes. -They are marked with `// -- GODOT start --` and `// -- GODOT end --` -comments. - - ## bullet - Upstream: https://github.com/bulletphysics/bullet3 diff --git a/thirdparty/b2d_convexdecomp/b2Glue.h b/thirdparty/b2d_convexdecomp/b2Glue.h deleted file mode 100644 index 175f75be75..0000000000 --- a/thirdparty/b2d_convexdecomp/b2Glue.h +++ /dev/null @@ -1,174 +0,0 @@ -/* -* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef B2GLUE_H -#define B2GLUE_H - -#include "core/math/vector2.h" - -#include <limits.h> - -namespace b2ConvexDecomp { - -typedef real_t float32; -typedef int32_t int32; - -static inline float32 b2Sqrt(float32 val) { return Math::sqrt(val); } -#define b2_maxFloat FLT_MAX -#define b2_epsilon CMP_EPSILON -#define b2_pi 3.14159265359f -#define b2_maxPolygonVertices 16 -#define b2Max MAX -#define b2Min MIN -#define b2Clamp CLAMP -#define b2Abs ABS -/// A small length used as a collision and constraint tolerance. Usually it is -/// chosen to be numerically significant, but visually insignificant. -#define b2_linearSlop 0.005f - -/// A small angle used as a collision and constraint tolerance. Usually it is -/// chosen to be numerically significant, but visually insignificant. -#define b2_angularSlop (2.0f / 180.0f * b2_pi) - -/// A 2D column vector. -struct b2Vec2 -{ - /// Default constructor does nothing (for performance). - b2Vec2() {} - - /// Construct using coordinates. - b2Vec2(float32 x, float32 y) : x(x), y(y) {} - - /// Set this vector to all zeros. - void SetZero() { x = 0.0f; y = 0.0f; } - - /// Set this vector to some specified coordinates. - void Set(float32 x_, float32 y_) { x = x_; y = y_; } - - /// Negate this vector. - b2Vec2 operator -() const { b2Vec2 v; v.Set(-x, -y); return v; } - - /// Read from and indexed element. - float32 operator () (int32 i) const - { - return (&x)[i]; - } - - /// Write to an indexed element. - float32& operator () (int32 i) - { - return (&x)[i]; - } - - /// Add a vector to this vector. - void operator += (const b2Vec2& v) - { - x += v.x; y += v.y; - } - - /// Subtract a vector from this vector. - void operator -= (const b2Vec2& v) - { - x -= v.x; y -= v.y; - } - - /// Multiply this vector by a scalar. - void operator *= (float32 a) - { - x *= a; y *= a; - } - - /// Get the length of this vector (the norm). - float32 Length() const - { - return b2Sqrt(x * x + y * y); - } - - /// Get the length squared. For performance, use this instead of - /// b2Vec2::Length (if possible). - float32 LengthSquared() const - { - return x * x + y * y; - } - - bool operator==(const b2Vec2& p_v) const { - return x==p_v.x && y==p_v.y; - } - b2Vec2 operator+(const b2Vec2& p_v) const { - return b2Vec2(x+p_v.x,y+p_v.y); - } - b2Vec2 operator-(const b2Vec2& p_v) const { - return b2Vec2(x-p_v.x,y-p_v.y); - } - - b2Vec2 operator*(float32 f) const { - return b2Vec2(f*x,f*y); - } - - /// Convert this vector into a unit vector. Returns the length. - float32 Normalize() - { - float32 length = Length(); - if (length < b2_epsilon) - { - return 0.0f; - } - float32 invLength = 1.0f / length; - x *= invLength; - y *= invLength; - - return length; - } - - /* - /// Does this vector contain finite coordinates? - bool IsValid() const - { - return b2IsValid(x) && b2IsValid(y); - } - */ - - float32 x, y; -}; - -inline b2Vec2 operator*(float32 f,const b2Vec2& p_v) { - return b2Vec2(f*p_v.x,f*p_v.y); -} - -/// Perform the dot product on two vectors. -inline float32 b2Dot(const b2Vec2& a, const b2Vec2& b) -{ - return a.x * b.x + a.y * b.y; -} - -/// Perform the cross product on two vectors. In 2D this produces a scalar. -inline float32 b2Cross(const b2Vec2& a, const b2Vec2& b) -{ - return a.x * b.y - a.y * b.x; -} - -/// Perform the cross product on a vector and a scalar. In 2D this produces -/// a vector. -inline b2Vec2 b2Cross(const b2Vec2& a, float32 s) -{ - return b2Vec2(s * a.y, -s * a.x); -} - -} - -#endif diff --git a/thirdparty/b2d_convexdecomp/b2Polygon.cpp b/thirdparty/b2d_convexdecomp/b2Polygon.cpp deleted file mode 100644 index c80204ae21..0000000000 --- a/thirdparty/b2d_convexdecomp/b2Polygon.cpp +++ /dev/null @@ -1,1591 +0,0 @@ -/* - * Copyright (c) 2007 Eric Jordan - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -// This utility works with Box2d version 2.0 (or higher), and not with 1.4.3 - -#include "b2Triangle.h" -#include "b2Polygon.h" - -#include <math.h> -#include <limits.h> -#include <assert.h> -#define b2Assert assert - -namespace b2ConvexDecomp { - - -//If you're using 1.4.3, b2_toiSlop won't exist, so set this equal to 0 -static const float32 toiSlop = 0.0f; - -/* - * Check if the lines a0->a1 and b0->b1 cross. - * If they do, intersectionPoint will be filled - * with the point of crossing. - * - * Grazing lines should not return true. - */ -bool intersect(const b2Vec2& a0, const b2Vec2& a1, - const b2Vec2& b0, const b2Vec2& b1, - b2Vec2& intersectionPoint) { - - if (a0 == b0 || a0 == b1 || a1 == b0 || a1 == b1) return false; - float x1 = a0.x; float y1 = a0.y; - float x2 = a1.x; float y2 = a1.y; - float x3 = b0.x; float y3 = b0.y; - float x4 = b1.x; float y4 = b1.y; - - //AABB early exit - if (b2Max(x1,x2) < b2Min(x3,x4) || b2Max(x3,x4) < b2Min(x1,x2) ) return false; - if (b2Max(y1,y2) < b2Min(y3,y4) || b2Max(y3,y4) < b2Min(y1,y2) ) return false; - - float ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)); - float ub = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)); - float denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1); - if (b2Abs(denom) < CMP_EPSILON) { - //Lines are too close to parallel to call - return false; - } - ua /= denom; - ub /= denom; - - if ((0 < ua) && (ua < 1) && (0 < ub) && (ub < 1)) { - //if (intersectionPoint){ - intersectionPoint.x = (x1 + ua * (x2 - x1)); - intersectionPoint.y = (y1 + ua * (y2 - y1)); - //} - //printf("%f, %f -> %f, %f crosses %f, %f -> %f, %f\n",x1,y1,x2,y2,x3,y3,x4,y4); - return true; - } - - return false; -} - -/* - * True if line from a0->a1 intersects b0->b1 - */ -bool intersect(const b2Vec2& a0, const b2Vec2& a1, - const b2Vec2& b0, const b2Vec2& b1) { - b2Vec2 myVec(0.0f,0.0f); - return intersect(a0, a1, b0, b1, myVec); -} - -b2Polygon::b2Polygon(float32* _x, float32* _y, int32 nVert) { - nVertices = nVert; - x = new float32[nVertices]; - y = new float32[nVertices]; - for (int32 i = 0; i < nVertices; ++i) { - x[i] = _x[i]; - y[i] = _y[i]; - } - areaIsSet = false; -} - -b2Polygon::b2Polygon(b2Vec2* v, int32 nVert) { - nVertices = nVert; - x = new float32[nVertices]; - y = new float32[nVertices]; - for (int32 i = 0; i < nVertices; ++i) { - x[i] = v[i].x; - y[i] = v[i].y; - - } - areaIsSet = false; -} - -b2Polygon::b2Polygon() { - x = NULL; - y = NULL; - nVertices = 0; - areaIsSet = false; -} - -b2Polygon::~b2Polygon() { - //printf("About to delete poly with %d vertices\n",nVertices); - delete[] x; - delete[] y; -} - -float32 b2Polygon::GetArea() { - // TODO: fix up the areaIsSet caching so that it can be used - //if (areaIsSet) return area; - area = 0.0f; - - //First do wraparound - area += x[nVertices-1]*y[0]-x[0]*y[nVertices-1]; - for (int i=0; i<nVertices-1; ++i){ - area += x[i]*y[i+1]-x[i+1]*y[i]; - } - area *= .5f; - areaIsSet = true; - return area; -} - -bool b2Polygon::IsCCW() { - return (GetArea() > 0.0f); -} - -void b2Polygon::MergeParallelEdges(float32 tolerance) { - if (nVertices <= 3) return; //Can't do anything useful here to a triangle - bool* mergeMe = new bool[nVertices]; - int32 newNVertices = nVertices; - for (int32 i = 0; i < nVertices; ++i) { - int32 lower = (i == 0) ? (nVertices - 1) : (i - 1); - int32 middle = i; - int32 upper = (i == nVertices - 1) ? (0) : (i + 1); - float32 dx0 = x[middle] - x[lower]; - float32 dy0 = y[middle] - y[lower]; - float32 dx1 = x[upper] - x[middle]; - float32 dy1 = y[upper] - y[middle]; - float32 norm0 = sqrtf(dx0*dx0+dy0*dy0); - float32 norm1 = sqrtf(dx1*dx1+dy1*dy1); - if ( !(norm0 > 0.0f && norm1 > 0.0f) && newNVertices > 3 ) { - //Merge identical points - mergeMe[i] = true; - --newNVertices; - } - dx0 /= norm0; dy0 /= norm0; - dx1 /= norm1; dy1 /= norm1; - float32 cross = dx0 * dy1 - dx1 * dy0; - float32 dot = dx0 * dx1 + dy0 * dy1; - if (fabs(cross) < tolerance && dot > 0 && newNVertices > 3) { - mergeMe[i] = true; - --newNVertices; - } else { - mergeMe[i] = false; - } - } - if(newNVertices == nVertices || newNVertices == 0) { - delete[] mergeMe; - return; - } - float32* newx = new float32[newNVertices]; - float32* newy = new float32[newNVertices]; - int32 currIndex = 0; - for (int32 i=0; i < nVertices; ++i) { - if (mergeMe[i] || newNVertices == 0 || currIndex == newNVertices) continue; - b2Assert(currIndex < newNVertices); - newx[currIndex] = x[i]; - newy[currIndex] = y[i]; - ++currIndex; - } - delete[] x; - delete[] y; - delete[] mergeMe; - x = newx; - y = newy; - nVertices = newNVertices; - //printf("%d \n", newNVertices); -} - - /* - * Allocates and returns pointer to vector vertex array. - * Length of array is nVertices. - */ -b2Vec2* b2Polygon::GetVertexVecs() { - b2Vec2* out = new b2Vec2[nVertices]; - for (int32 i = 0; i < nVertices; ++i) { - out[i].Set(x[i], y[i]); - } - return out; -} - -b2Polygon::b2Polygon(b2Triangle& t) { - nVertices = 3; - x = new float[nVertices]; - y = new float[nVertices]; - for (int32 i = 0; i < nVertices; ++i) { - x[i] = t.x[i]; - y[i] = t.y[i]; - } -} - -void b2Polygon::Set(const b2Polygon& p) { - if (nVertices != p.nVertices){ - nVertices = p.nVertices; - delete[] x; - delete[] y; - x = new float32[nVertices]; - y = new float32[nVertices]; - } - - for (int32 i = 0; i < nVertices; ++i) { - x[i] = p.x[i]; - y[i] = p.y[i]; - } - areaIsSet = false; -} - - /* - * Assuming the polygon is simple, checks if it is convex. - */ -bool b2Polygon::IsConvex() { - bool isPositive = false; - for (int32 i = 0; i < nVertices; ++i) { - int32 lower = (i == 0) ? (nVertices - 1) : (i - 1); - int32 middle = i; - int32 upper = (i == nVertices - 1) ? (0) : (i + 1); - float32 dx0 = x[middle] - x[lower]; - float32 dy0 = y[middle] - y[lower]; - float32 dx1 = x[upper] - x[middle]; - float32 dy1 = y[upper] - y[middle]; - float32 cross = dx0 * dy1 - dx1 * dy0; - // Cross product should have same sign - // for each vertex if poly is convex. - bool newIsP = (cross >= 0) ? true : false; - if (i == 0) { - isPositive = newIsP; - } - else if (isPositive != newIsP) { - return false; - } - } - return true; -} - -/* - * Pulled from b2Shape.cpp, assertions removed - */ -static b2Vec2 PolyCentroid(const b2Vec2* vs, int32 count) -{ - b2Vec2 c; c.Set(0.0f, 0.0f); - float32 area = 0.0f; - - const float32 inv3 = 1.0f / 3.0f; - b2Vec2 pRef(0.0f, 0.0f); - for (int32 i = 0; i < count; ++i) - { - // Triangle vertices. - b2Vec2 p1 = pRef; - b2Vec2 p2 = vs[i]; - b2Vec2 p3 = i + 1 < count ? vs[i+1] : vs[0]; - - b2Vec2 e1 = p2 - p1; - b2Vec2 e2 = p3 - p1; - - float32 D = b2Cross(e1, e2); - - float32 triangleArea = 0.5f * D; - area += triangleArea; - - // Area weighted centroid - c += (p1 + p2 + p3) * triangleArea * inv3; - } - - // Centroid - c *= 1.0f / area; - return c; -} - - -/* - * Checks if polygon is valid for use in Box2d engine. - * Last ditch effort to ensure no invalid polygons are - * added to world geometry. - * - * Performs a full check, for simplicity, convexity, - * orientation, minimum angle, and volume. This won't - * be very efficient, and a lot of it is redundant when - * other tools in this section are used. - */ -bool b2Polygon::IsUsable(bool printErrors){ - int32 error = -1; - bool noError = true; - if (nVertices < 3 || nVertices > b2_maxPolygonVertices) {noError = false; error = 0;} - if (!IsConvex()) {noError = false; error = 1;} - if (!IsSimple()) {noError = false; error = 2;} - if (GetArea() < CMP_EPSILON) {noError = false; error = 3;} - - //Compute normals - b2Vec2* normals = new b2Vec2[nVertices]; - b2Vec2* vertices = new b2Vec2[nVertices]; - for (int32 i = 0; i < nVertices; ++i){ - vertices[i].Set(x[i],y[i]); - int32 i1 = i; - int32 i2 = i + 1 < nVertices ? i + 1 : 0; - b2Vec2 edge(x[i2]-x[i1],y[i2]-y[i1]); - normals[i] = b2Cross(edge, 1.0f); - normals[i].Normalize(); - } - - //Required side checks - for (int32 i=0; i<nVertices; ++i){ - int32 iminus = (i==0)?nVertices-1:i-1; - //int32 iplus = (i==nVertices-1)?0:i+1; - - //Parallel sides check - float32 cross = b2Cross(normals[iminus], normals[i]); - cross = b2Clamp(cross, -1.0f, 1.0f); - float32 angle = asinf(cross); - if(angle <= b2_angularSlop){ - noError = false; - error = 4; - break; - } - - //Too skinny check - for (int32 j=0; j<nVertices; ++j){ - if (j == i || j == (i + 1) % nVertices){ - continue; - } - float32 s = b2Dot(normals[i], vertices[j] - vertices[i]); - if (s >= -b2_linearSlop){ - noError = false; - error = 5; - } - } - - - b2Vec2 centroid = PolyCentroid(vertices,nVertices); - b2Vec2 n1 = normals[iminus]; - b2Vec2 n2 = normals[i]; - b2Vec2 v = vertices[i] - centroid; - - b2Vec2 d; - d.x = b2Dot(n1, v) - toiSlop; - d.y = b2Dot(n2, v) - toiSlop; - - // Shifting the edge inward by b2_toiSlop should - // not cause the plane to pass the centroid. - if ((d.x < 0.0f)||(d.y < 0.0f)){ - noError = false; - error = 6; - } - - } - delete[] vertices; - delete[] normals; - - if (!noError && printErrors){ - printf("Found invalid polygon, "); - switch(error){ - case 0: - printf("must have between 3 and %d vertices.\n",b2_maxPolygonVertices); - break; - case 1: - printf("must be convex.\n"); - break; - case 2: - printf("must be simple (cannot intersect itself).\n"); - break; - case 3: - printf("area is too small.\n"); - break; - case 4: - printf("sides are too close to parallel.\n"); - break; - case 5: - printf("polygon is too thin.\n"); - break; - case 6: - printf("core shape generation would move edge past centroid (too thin).\n"); - break; - default: - printf("don't know why.\n"); - } - } - return noError; -} - - -bool b2Polygon::IsUsable(){ - return IsUsable(B2_POLYGON_REPORT_ERRORS); -} - -//Check for edge crossings -bool b2Polygon::IsSimple() { - for (int32 i=0; i<nVertices; ++i){ - int32 iplus = (i+1 > nVertices-1)?0:i+1; - b2Vec2 a1(x[i],y[i]); - b2Vec2 a2(x[iplus],y[iplus]); - for (int32 j=i+1; j<nVertices; ++j){ - int32 jplus = (j+1 > nVertices-1)?0:j+1; - b2Vec2 b1(x[j],y[j]); - b2Vec2 b2(x[jplus],y[jplus]); - if (intersect(a1,a2,b1,b2)){ - return false; - } - } - } - return true; -} - - /* - * Tries to add a triangle to the polygon. Returns null if it can't connect - * properly, otherwise returns a pointer to the new Polygon. Assumes bitwise - * equality of joined vertex positions. - * - * Remember to delete the pointer afterwards. - * Todo: Make this return a b2Polygon instead - * of a pointer to a heap-allocated one. - * - * For internal use. - */ -b2Polygon* b2Polygon::Add(b2Triangle& t) { - // First, find vertices that connect - int32 firstP = -1; - int32 firstT = -1; - int32 secondP = -1; - int32 secondT = -1; - for (int32 i = 0; i < nVertices; i++) { - if (t.x[0] == x[i] && t.y[0] == y[i]) { - if (firstP == -1) { - firstP = i; - firstT = 0; - } - else { - secondP = i; - secondT = 0; - } - } - else if (t.x[1] == x[i] && t.y[1] == y[i]) { - if (firstP == -1) { - firstP = i; - firstT = 1; - } - else { - secondP = i; - secondT = 1; - } - } - else if (t.x[2] == x[i] && t.y[2] == y[i]) { - if (firstP == -1) { - firstP = i; - firstT = 2; - } - else { - secondP = i; - secondT = 2; - } - } - else { - } - } - // Fix ordering if first should be last vertex of poly - if (firstP == 0 && secondP == nVertices - 1) { - firstP = nVertices - 1; - secondP = 0; - } - - // Didn't find it - if (secondP == -1) { - return NULL; - } - - // Find tip index on triangle - int32 tipT = 0; - if (tipT == firstT || tipT == secondT) - tipT = 1; - if (tipT == firstT || tipT == secondT) - tipT = 2; - - float32* newx = new float[nVertices + 1]; - float32* newy = new float[nVertices + 1]; - int32 currOut = 0; - for (int32 i = 0; i < nVertices; i++) { - newx[currOut] = x[i]; - newy[currOut] = y[i]; - if (i == firstP) { - ++currOut; - newx[currOut] = t.x[tipT]; - newy[currOut] = t.y[tipT]; - } - ++currOut; - } - b2Polygon* result = new b2Polygon(newx, newy, nVertices+1); - delete[] newx; - delete[] newy; - return result; -} - - /** - * Adds this polygon to a PolyDef. - */ -#if 0 -void b2Polygon::AddTo(b2FixtureDef& pd) { - if (nVertices < 3) return; - - b2Assert(nVertices <= b2_maxPolygonVertices); - - b2Vec2* vecs = GetVertexVecs(); - b2Vec2* vecsToAdd = new b2Vec2[nVertices]; - - int32 offset = 0; - - b2PolygonShape *polyShape = new b2PolygonShape; - int32 ind; - - for (int32 i = 0; i < nVertices; ++i) { - - //Omit identical neighbors (including wraparound) - ind = i - offset; - if (vecs[i].x==vecs[remainder(i+1,nVertices)].x && - vecs[i].y==vecs[remainder(i+1,nVertices)].y){ - offset++; - continue; - } - - vecsToAdd[ind] = vecs[i]; - - } - - polyShape->Set((const b2Vec2*)vecsToAdd, ind+1); - pd.shape = polyShape; - - delete[] vecs; - delete[] vecsToAdd; -} -#endif - /** - * Finds and fixes "pinch points," points where two polygon - * vertices are at the same point. - * - * If a pinch point is found, pin is broken up into poutA and poutB - * and true is returned; otherwise, returns false. - * - * Mostly for internal use. - */ -bool ResolvePinchPoint(const b2Polygon& pin, b2Polygon& poutA, b2Polygon& poutB){ - if (pin.nVertices < 3) return false; - float32 tol = .001f; - bool hasPinchPoint = false; - int32 pinchIndexA = -1; - int32 pinchIndexB = -1; - for (int i=0; i<pin.nVertices; ++i){ - for (int j=i+1; j<pin.nVertices; ++j){ - //Don't worry about pinch points where the points - //are actually just dupe neighbors - if (b2Abs(pin.x[i]-pin.x[j])<tol&&b2Abs(pin.y[i]-pin.y[j])<tol&&j!=i+1){ - pinchIndexA = i; - pinchIndexB = j; - //printf("pinch: %f, %f == %f, %f\n",pin.x[i],pin.y[i],pin.x[j],pin.y[j]); - //printf("at indexes %d, %d\n",i,j); - hasPinchPoint = true; - break; - } - } - if (hasPinchPoint) break; - } - if (hasPinchPoint){ - //printf("Found pinch point\n"); - int32 sizeA = pinchIndexB - pinchIndexA; - if (sizeA == pin.nVertices) return false;//has dupe points at wraparound, not a problem here - float32* xA = new float32[sizeA]; - float32* yA = new float32[sizeA]; - for (int32 i=0; i < sizeA; ++i){ - int32 ind = remainder(pinchIndexA+i,pin.nVertices); - xA[i] = pin.x[ind]; - yA[i] = pin.y[ind]; - } - b2Polygon tempA(xA,yA,sizeA); - poutA.Set(tempA); - delete[] xA; - delete[] yA; - - int32 sizeB = pin.nVertices - sizeA; - float32* xB = new float32[sizeB]; - float32* yB = new float32[sizeB]; - for (int32 i=0; i<sizeB; ++i){ - int32 ind = remainder(pinchIndexB+i,pin.nVertices); - xB[i] = pin.x[ind]; - yB[i] = pin.y[ind]; - } - b2Polygon tempB(xB,yB,sizeB); - poutB.Set(tempB); - //printf("Size of a: %d, size of b: %d\n",sizeA,sizeB); - delete[] xB; - delete[] yB; - } - return hasPinchPoint; -} - - /** - * Triangulates a polygon using simple ear-clipping algorithm. Returns - * size of Triangle array unless the polygon can't be triangulated. - * This should only happen if the polygon self-intersects, - * though it will not _always_ return null for a bad polygon - it is the - * caller's responsibility to check for self-intersection, and if it - * doesn't, it should at least check that the return value is non-null - * before using. You're warned! - * - * Triangles may be degenerate, especially if you have identical points - * in the input to the algorithm. Check this before you use them. - * - * This is totally unoptimized, so for large polygons it should not be part - * of the simulation loop. - * - * Returns: - * -1 if algorithm fails (self-intersection most likely) - * 0 if there are not enough vertices to triangulate anything. - * Number of triangles if triangulation was successful. - * - * results will be filled with results - ear clipping always creates vNum - 2 - * or fewer (due to pinch point polygon snipping), so allocate an array of - * this size. - */ - -int32 TriangulatePolygon(float32* xv, float32* yv, int32 vNum, b2Triangle* results) { - if (vNum < 3) - return 0; - - //Recurse and split on pinch points - b2Polygon pA,pB; - b2Polygon pin(xv,yv,vNum); - if (ResolvePinchPoint(pin,pA,pB)){ - b2Triangle* mergeA = new b2Triangle[pA.nVertices]; - b2Triangle* mergeB = new b2Triangle[pB.nVertices]; - int32 nA = TriangulatePolygon(pA.x,pA.y,pA.nVertices,mergeA); - int32 nB = TriangulatePolygon(pB.x,pB.y,pB.nVertices,mergeB); - if (nA==-1 || nB==-1){ - delete[] mergeA; - delete[] mergeB; - return -1; - } - for (int32 i=0; i<nA; ++i){ - results[i].Set(mergeA[i]); - } - for (int32 i=0; i<nB; ++i){ - results[nA+i].Set(mergeB[i]); - } - delete[] mergeA; - delete[] mergeB; - return (nA+nB); - } - - b2Triangle* buffer = new b2Triangle[vNum-2]; - int32 bufferSize = 0; - float32* xrem = new float32[vNum]; - float32* yrem = new float32[vNum]; - for (int32 i = 0; i < vNum; ++i) { - xrem[i] = xv[i]; - yrem[i] = yv[i]; - } - - int xremLength = vNum; - - while (vNum > 3) { - // Find an ear - int32 earIndex = -1; - //float32 earVolume = -1.0f; - float32 earMaxMinCross = -10.0f; - for (int32 i = 0; i < vNum; ++i) { - if (IsEar(i, xrem, yrem, vNum)) { - int32 lower = remainder(i-1,vNum); - int32 upper = remainder(i+1,vNum); - b2Vec2 d1(xrem[upper]-xrem[i],yrem[upper]-yrem[i]); - b2Vec2 d2(xrem[i]-xrem[lower],yrem[i]-yrem[lower]); - b2Vec2 d3(xrem[lower]-xrem[upper],yrem[lower]-yrem[upper]); - - d1.Normalize(); - d2.Normalize(); - d3.Normalize(); - float32 cross12 = b2Abs( b2Cross(d1,d2) ); - float32 cross23 = b2Abs( b2Cross(d2,d3) ); - float32 cross31 = b2Abs( b2Cross(d3,d1) ); - //Find the maximum minimum angle - float32 minCross = b2Min(cross12, b2Min(cross23,cross31)); - if (minCross > earMaxMinCross){ - earIndex = i; - earMaxMinCross = minCross; - } - - /*//This bit chooses the ear with greatest volume first - float32 testVol = b2Abs( d1.x*d2.y-d2.x*d1.y ); - if (testVol > earVolume){ - earIndex = i; - earVolume = testVol; - }*/ - } - } - - // If we still haven't found an ear, we're screwed. - // Note: sometimes this is happening because the - // remaining points are collinear. Really these - // should just be thrown out without halting triangulation. - if (earIndex == -1){ - if (B2_POLYGON_REPORT_ERRORS){ - b2Polygon dump(xrem,yrem,vNum); - printf("Couldn't find an ear, dumping remaining poly:\n"); - dump.printFormatted(); - printf("Please submit this dump to ewjordan at Box2d forums\n"); - } - for (int32 i = 0; i < bufferSize; i++) { - results[i].Set(buffer[i]); - } - - delete[] buffer; - - if (bufferSize > 0) return bufferSize; - else return -1; - } - - // Clip off the ear: - // - remove the ear tip from the list - - --vNum; - float32* newx = new float32[vNum]; - float32* newy = new float32[vNum]; - int32 currDest = 0; - for (int32 i = 0; i < vNum; ++i) { - if (currDest == earIndex) ++currDest; - newx[i] = xrem[currDest]; - newy[i] = yrem[currDest]; - ++currDest; - } - - // - add the clipped triangle to the triangle list - int32 under = (earIndex == 0) ? (vNum) : (earIndex - 1); - int32 over = (earIndex == vNum) ? 0 : (earIndex + 1); - b2Triangle toAdd = b2Triangle(xrem[earIndex], yrem[earIndex], xrem[over], yrem[over], xrem[under], yrem[under]); - buffer[bufferSize].Set(toAdd); - ++bufferSize; - - // - replace the old list with the new one - delete[] xrem; - delete[] yrem; - xrem = newx; - yrem = newy; - } - - b2Triangle toAdd = b2Triangle(xrem[1], yrem[1], xrem[2], yrem[2], - xrem[0], yrem[0]); - buffer[bufferSize].Set(toAdd); - ++bufferSize; - - delete[] xrem; - delete[] yrem; - - b2Assert(bufferSize == xremLength-2); - - for (int32 i = 0; i < bufferSize; i++) { - results[i].Set(buffer[i]); - } - - delete[] buffer; - - return bufferSize; -} - - /** - * Turns a list of triangles into a list of convex polygons. Very simple - * method - start with a seed triangle, keep adding triangles to it until - * you can't add any more without making the polygon non-convex. - * - * Returns an integer telling how many polygons were created. Will fill - * polys array up to polysLength entries, which may be smaller or larger - * than the return value. - * - * Takes O(N*P) where P is the number of resultant polygons, N is triangle - * count. - * - * The final polygon list will not necessarily be minimal, though in - * practice it works fairly well. - */ -int32 PolygonizeTriangles(b2Triangle* triangulated, int32 triangulatedLength, b2Polygon* polys, int32 polysLength) { - int32 polyIndex = 0; - - if (triangulatedLength <= 0) { - return 0; - } - else { - int* covered = new int[triangulatedLength]; - for (int32 i = 0; i < triangulatedLength; ++i) { - covered[i] = 0; - //Check here for degenerate triangles - if ( ( (triangulated[i].x[0] == triangulated[i].x[1]) && (triangulated[i].y[0] == triangulated[i].y[1]) ) - || ( (triangulated[i].x[1] == triangulated[i].x[2]) && (triangulated[i].y[1] == triangulated[i].y[2]) ) - || ( (triangulated[i].x[0] == triangulated[i].x[2]) && (triangulated[i].y[0] == triangulated[i].y[2]) ) ) { - covered[i] = 1; - } - } - - bool notDone = true; - while (notDone) { - int32 currTri = -1; - for (int32 i = 0; i < triangulatedLength; ++i) { - if (covered[i]) - continue; - currTri = i; - break; - } - if (currTri == -1) { - notDone = false; - } - else { - b2Polygon poly(triangulated[currTri]); - covered[currTri] = 1; - int32 index = 0; - for (int32 i = 0; i < 2*triangulatedLength; ++i,++index) { - while (index >= triangulatedLength) index -= triangulatedLength; - if (covered[index]) { - continue; - } - b2Polygon* newP = poly.Add(triangulated[index]); - if (!newP) { - continue; - } - if (newP->nVertices > b2Polygon::maxVerticesPerPolygon) { - delete newP; - newP = NULL; - continue; - } - if (newP->IsConvex()) { //Or should it be IsUsable? Maybe re-write IsConvex to apply the angle threshold from Box2d - poly.Set(*newP); - delete newP; - newP = NULL; - covered[index] = 1; - } else { - delete newP; - newP = NULL; - } - } - if (polyIndex < polysLength){ - poly.MergeParallelEdges(b2_angularSlop); - //If identical points are present, a triangle gets - //borked by the MergeParallelEdges function, hence - //the vertex number check - if (poly.nVertices >= 3) polys[polyIndex].Set(poly); - //else printf("Skipping corrupt poly\n"); - } - if (poly.nVertices >= 3) polyIndex++; //Must be outside (polyIndex < polysLength) test - } - //printf("MEMCHECK: %d\n",_CrtCheckMemory()); - } - delete[] covered; - } - return polyIndex; -} - - /** - * Checks if vertex i is the tip of an ear in polygon defined by xv[] and - * yv[]. - * - * Assumes clockwise orientation of polygon...ick - */ -bool IsEar(int32 i, float32* xv, float32* yv, int32 xvLength) { - float32 dx0, dy0, dx1, dy1; - dx0 = dy0 = dx1 = dy1 = 0; - if (i >= xvLength || i < 0 || xvLength < 3) { - return false; - } - int32 upper = i + 1; - int32 lower = i - 1; - if (i == 0) { - dx0 = xv[0] - xv[xvLength - 1]; - dy0 = yv[0] - yv[xvLength - 1]; - dx1 = xv[1] - xv[0]; - dy1 = yv[1] - yv[0]; - lower = xvLength - 1; - } - else if (i == xvLength - 1) { - dx0 = xv[i] - xv[i - 1]; - dy0 = yv[i] - yv[i - 1]; - dx1 = xv[0] - xv[i]; - dy1 = yv[0] - yv[i]; - upper = 0; - } - else { - dx0 = xv[i] - xv[i - 1]; - dy0 = yv[i] - yv[i - 1]; - dx1 = xv[i + 1] - xv[i]; - dy1 = yv[i + 1] - yv[i]; - } - float32 cross = dx0 * dy1 - dx1 * dy0; - if (cross > 0) - return false; - b2Triangle myTri(xv[i], yv[i], xv[upper], yv[upper], - xv[lower], yv[lower]); - for (int32 j = 0; j < xvLength; ++j) { - if (j == i || j == lower || j == upper) - continue; - if (myTri.IsInside(xv[j], yv[j])) - return false; - } - return true; -} - -void ReversePolygon(b2Polygon& p){ - ReversePolygon(p.x,p.y,p.nVertices); -} - -void ReversePolygon(float* x, float* y, int n) { - if (n == 1) - return; - int32 low = 0; - int32 high = n - 1; - while (low < high) { - float32 buffer = x[low]; - x[low] = x[high]; - x[high] = buffer; - buffer = y[low]; - y[low] = y[high]; - y[high] = buffer; - ++low; - --high; - } -} - - /** - * Decomposes a non-convex polygon into a number of convex polygons, up - * to maxPolys (remaining pieces are thrown out, but the total number - * is returned, so the return value can be greater than maxPolys). - * - * Each resulting polygon will have no more than maxVerticesPerPolygon - * vertices (set to b2MaxPolyVertices by default, though you can change - * this). - * - * Returns -1 if operation fails (usually due to self-intersection of - * polygon). - */ -int32 DecomposeConvex(b2Polygon* p, b2Polygon* results, int32 maxPolys) { - if (p->nVertices < 3) return 0; - - b2Triangle* triangulated = new b2Triangle[p->nVertices - 2]; - int32 nTri; - if (p->IsCCW()) { - //printf("It is ccw \n"); - b2Polygon tempP; - tempP.Set(*p); - ReversePolygon(tempP.x, tempP.y, tempP.nVertices); - nTri = TriangulatePolygon(tempP.x, tempP.y, tempP.nVertices, triangulated); - //ReversePolygon(p->x, p->y, p->nVertices); //reset orientation - } else { - //printf("It is not ccw \n"); - nTri = TriangulatePolygon(p->x, p->y, p->nVertices, triangulated); - } - if (nTri < 1) { - //Still no luck? Oh well... - delete[] triangulated; - return -1; - } - int32 nPolys = PolygonizeTriangles(triangulated, nTri, results, maxPolys); - delete[] triangulated; - return nPolys; -} - - /** - * Decomposes a polygon into convex polygons and adds all pieces to a b2BodyDef - * using a prototype b2PolyDef. All fields of the prototype are used for every - * shape except the vertices (friction, restitution, density, etc). - * - * If you want finer control, you'll have to add everything by hand. - * - * This is the simplest method to add a complicated polygon to a body. - * - * Until Box2D's b2BodyDef behavior changes, this method returns a pointer to - * a heap-allocated array of b2PolyDefs, which must be deleted by the user - * after the b2BodyDef is added to the world. - */ -#if 0 -void DecomposeConvexAndAddTo(b2Polygon* p, b2Body* bd, b2FixtureDef* prototype) { - - if (p->nVertices < 3) return; - b2Polygon* decomposed = new b2Polygon[p->nVertices - 2]; //maximum number of polys - int32 nPolys = DecomposeConvex(p, decomposed, p->nVertices - 2); - //printf("npolys: %d",nPolys); - b2FixtureDef* pdarray = new b2FixtureDef[2*p->nVertices];//extra space in case of splits - int32 extra = 0; - for (int32 i = 0; i < nPolys; ++i) { - b2FixtureDef* toAdd = &pdarray[i+extra]; - *toAdd = *prototype; - //Hmm, shouldn't have to do all this... - /* - toAdd->type = prototype->type; - toAdd->friction = prototype->friction; - toAdd->restitution = prototype->restitution; - toAdd->density = prototype->density; - toAdd->userData = prototype->userData; - toAdd->categoryBits = prototype->categoryBits; - toAdd->maskBits = prototype->maskBits; - toAdd->groupIndex = prototype->groupIndex;//*/ - //decomposed[i].print(); - b2Polygon curr = decomposed[i]; - //TODO ewjordan: move this triangle handling to a better place so that - //it happens even if this convenience function is not called. - if (curr.nVertices == 3){ - //Check here for near-parallel edges, since we can't - //handle this in merge routine - for (int j=0; j<3; ++j){ - int32 lower = (j == 0) ? (curr.nVertices - 1) : (j - 1); - int32 middle = j; - int32 upper = (j == curr.nVertices - 1) ? (0) : (j + 1); - float32 dx0 = curr.x[middle] - curr.x[lower]; float32 dy0 = curr.y[middle] - curr.y[lower]; - float32 dx1 = curr.x[upper] - curr.x[middle]; float32 dy1 = curr.y[upper] - curr.y[middle]; - float32 norm0 = sqrtf(dx0*dx0+dy0*dy0); float32 norm1 = sqrtf(dx1*dx1+dy1*dy1); - if ( !(norm0 > 0.0f && norm1 > 0.0f) ) { - //Identical points, don't do anything! - goto Skip; - } - dx0 /= norm0; dy0 /= norm0; - dx1 /= norm1; dy1 /= norm1; - float32 cross = dx0 * dy1 - dx1 * dy0; - float32 dot = dx0*dx1 + dy0*dy1; - if (fabs(cross) < b2_angularSlop && dot > 0) { - //Angle too close, split the triangle across from this point. - //This is guaranteed to result in two triangles that satify - //the tolerance (one of the angles is 90 degrees) - float32 dx2 = curr.x[lower] - curr.x[upper]; float32 dy2 = curr.y[lower] - curr.y[upper]; - float32 norm2 = sqrtf(dx2*dx2+dy2*dy2); - if (norm2 == 0.0f) { - goto Skip; - } - dx2 /= norm2; dy2 /= norm2; - float32 thisArea = curr.GetArea(); - float32 thisHeight = 2.0f * thisArea / norm2; - float32 buffer2 = dx2; - dx2 = dy2; dy2 = -buffer2; - //Make two new polygons - //printf("dx2: %f, dy2: %f, thisHeight: %f, middle: %d\n",dx2,dy2,thisHeight,middle); - float32 newX1[3] = { curr.x[middle]+dx2*thisHeight, curr.x[lower], curr.x[middle] }; - float32 newY1[3] = { curr.y[middle]+dy2*thisHeight, curr.y[lower], curr.y[middle] }; - float32 newX2[3] = { newX1[0], curr.x[middle], curr.x[upper] }; - float32 newY2[3] = { newY1[0], curr.y[middle], curr.y[upper] }; - b2Polygon p1(newX1,newY1,3); - b2Polygon p2(newX2,newY2,3); - if (p1.IsUsable()){ - p1.AddTo(*toAdd); - - - bd->CreateFixture(toAdd); - ++extra; - } else if (B2_POLYGON_REPORT_ERRORS){ - printf("Didn't add unusable polygon. Dumping vertices:\n"); - p1.print(); - } - if (p2.IsUsable()){ - p2.AddTo(pdarray[i+extra]); - - bd->CreateFixture(toAdd); - } else if (B2_POLYGON_REPORT_ERRORS){ - printf("Didn't add unusable polygon. Dumping vertices:\n"); - p2.print(); - } - goto Skip; - } - } - - } - if (decomposed[i].IsUsable()){ - decomposed[i].AddTo(*toAdd); - - bd->CreateFixture((const b2FixtureDef*)toAdd); - } else if (B2_POLYGON_REPORT_ERRORS){ - printf("Didn't add unusable polygon. Dumping vertices:\n"); - decomposed[i].print(); - } -Skip: - ; - } - delete[] pdarray; - delete[] decomposed; - return;// pdarray; //needs to be deleted after body is created -} - -#endif - /** - * Find the convex hull of a point cloud using "Gift-wrap" algorithm - start - * with an extremal point, and walk around the outside edge by testing - * angles. - * - * Runs in O(N*S) time where S is number of sides of resulting polygon. - * Worst case: point cloud is all vertices of convex polygon -> O(N^2). - * - * There may be faster algorithms to do this, should you need one - - * this is just the simplest. You can get O(N log N) expected time if you - * try, I think, and O(N) if you restrict inputs to simple polygons. - * - * Returns null if number of vertices passed is less than 3. - * - * Results should be passed through convex decomposition afterwards - * to ensure that each shape has few enough points to be used in Box2d. - * - * FIXME?: May be buggy with colinear points on hull. Couldn't find a test - * case that resulted in wrong behavior. If one turns up, the solution is to - * supplement angle check with an equality resolver that always picks the - * longer edge. I think the current solution is working, though it sometimes - * creates an extra edge along a line. - */ - -b2Polygon ConvexHull(b2Vec2* v, int nVert) { - float32* cloudX = new float32[nVert]; - float32* cloudY = new float32[nVert]; - for (int32 i = 0; i < nVert; ++i) { - cloudX[i] = v[i].x; - cloudY[i] = v[i].y; - } - b2Polygon result = ConvexHull(cloudX, cloudY, nVert); - delete[] cloudX; - delete[] cloudY; - return result; -} - -b2Polygon ConvexHull(float32* cloudX, float32* cloudY, int32 nVert) { - b2Assert(nVert > 2); - int32* edgeList = new int32[nVert]; - int32 numEdges = 0; - - float32 minY = 1e10; - int32 minYIndex = nVert; - for (int32 i = 0; i < nVert; ++i) { - if (cloudY[i] < minY) { - minY = cloudY[i]; - minYIndex = i; - } - } - - int32 startIndex = minYIndex; - int32 winIndex = -1; - float32 dx = -1.0f; - float32 dy = 0.0f; - while (winIndex != minYIndex) { - float32 newdx = 0.0f; - float32 newdy = 0.0f; - float32 maxDot = -2.0f; - for (int32 i = 0; i < nVert; ++i) { - if (i == startIndex) - continue; - newdx = cloudX[i] - cloudX[startIndex]; - newdy = cloudY[i] - cloudY[startIndex]; - float32 nrm = sqrtf(newdx * newdx + newdy * newdy); - nrm = (nrm == 0.0f) ? 1.0f : nrm; - newdx /= nrm; - newdy /= nrm; - - //Cross and dot products act as proxy for angle - //without requiring inverse trig. - //FIXED: don't need cross test - //float32 newCross = newdx * dy - newdy * dx; - float32 newDot = newdx * dx + newdy * dy; - if (newDot > maxDot) {//newCross >= 0.0f && newDot > maxDot) { - maxDot = newDot; - winIndex = i; - } - } - edgeList[numEdges++] = winIndex; - dx = cloudX[winIndex] - cloudX[startIndex]; - dy = cloudY[winIndex] - cloudY[startIndex]; - float32 nrm = sqrtf(dx * dx + dy * dy); - nrm = (nrm == 0.0f) ? 1.0f : nrm; - dx /= nrm; - dy /= nrm; - startIndex = winIndex; - } - - float32* xres = new float32[numEdges]; - float32* yres = new float32[numEdges]; - for (int32 i = 0; i < numEdges; i++) { - xres[i] = cloudX[edgeList[i]]; - yres[i] = cloudY[edgeList[i]]; - //("%f, %f\n",xres[i],yres[i]); - } - - b2Polygon returnVal(xres, yres, numEdges); - - delete[] xres; - delete[] yres; - delete[] edgeList; - returnVal.MergeParallelEdges(b2_angularSlop); - return returnVal; -} - - -/* - * Given sines and cosines, tells if A's angle is less than B's on -Pi, Pi - * (in other words, is A "righter" than B) - */ -bool IsRighter(float32 sinA, float32 cosA, float32 sinB, float32 cosB){ - if (sinA < 0){ - if (sinB > 0 || cosA <= cosB) return true; - else return false; - } else { - if (sinB < 0 || cosA <= cosB) return false; - else return true; - } -} - -//Fix for obnoxious behavior for the % operator for negative numbers... -int32 remainder(int32 x, int32 modulus){ - int32 rem = x % modulus; - while (rem < 0){ - rem += modulus; - } - return rem; -} - -/* -Method: -Start at vertex with minimum y (pick maximum x one if there are two). -We aim our "lastDir" vector at (1.0, 0) -We look at the two rays going off from our start vertex, and follow whichever -has the smallest angle (in -Pi -> Pi) wrt lastDir ("rightest" turn) - -Loop until we hit starting vertex: - -We add our current vertex to the list. -We check the seg from current vertex to next vertex for intersections - - if no intersections, follow to next vertex and continue - - if intersections, pick one with minimum distance - - if more than one, pick one with "rightest" next point (two possibilities for each) - -*/ - -b2Polygon TraceEdge(b2Polygon* p){ - b2PolyNode* nodes = new b2PolyNode[p->nVertices*p->nVertices];//overkill, but sufficient (order of mag. is right) - int32 nNodes = 0; - - //Add base nodes (raw outline) - for (int32 i=0; i < p->nVertices; ++i){ - b2Vec2 pos(p->x[i],p->y[i]); - nodes[i].position = pos; - ++nNodes; - int32 iplus = (i==p->nVertices-1)?0:i+1; - int32 iminus = (i==0)?p->nVertices-1:i-1; - nodes[i].AddConnection(nodes[iplus]); - nodes[i].AddConnection(nodes[iminus]); - } - - //Process intersection nodes - horribly inefficient - bool dirty = true; - int counter = 0; - while (dirty){ - dirty = false; - for (int32 i=0; i < nNodes; ++i){ - for (int32 j=0; j < nodes[i].nConnected; ++j){ - for (int32 k=0; k < nNodes; ++k){ - if (k==i || &nodes[k] == nodes[i].connected[j]) continue; - for (int32 l=0; l < nodes[k].nConnected; ++l){ - - if ( nodes[k].connected[l] == nodes[i].connected[j] || - nodes[k].connected[l] == &nodes[i]) continue; - //Check intersection - b2Vec2 intersectPt; - //if (counter > 100) printf("checking intersection: %d, %d, %d, %d\n",i,j,k,l); - bool crosses = intersect(nodes[i].position,nodes[i].connected[j]->position, - nodes[k].position,nodes[k].connected[l]->position, - intersectPt); - if (crosses){ - /*if (counter > 100) { - printf("Found crossing at %f, %f\n",intersectPt.x, intersectPt.y); - printf("Locations: %f,%f - %f,%f | %f,%f - %f,%f\n", - nodes[i].position.x, nodes[i].position.y, - nodes[i].connected[j]->position.x, nodes[i].connected[j]->position.y, - nodes[k].position.x,nodes[k].position.y, - nodes[k].connected[l]->position.x,nodes[k].connected[l]->position.y); - printf("Memory addresses: %d, %d, %d, %d\n",(int)&nodes[i],(int)nodes[i].connected[j],(int)&nodes[k],(int)nodes[k].connected[l]); - }*/ - dirty = true; - //Destroy and re-hook connections at crossing point - b2PolyNode* connj = nodes[i].connected[j]; - b2PolyNode* connl = nodes[k].connected[l]; - nodes[i].connected[j]->RemoveConnection(nodes[i]); - nodes[i].RemoveConnection(*connj); - nodes[k].connected[l]->RemoveConnection(nodes[k]); - nodes[k].RemoveConnection(*connl); - nodes[nNodes] = b2PolyNode(intersectPt); - nodes[nNodes].AddConnection(nodes[i]); - nodes[i].AddConnection(nodes[nNodes]); - nodes[nNodes].AddConnection(nodes[k]); - nodes[k].AddConnection(nodes[nNodes]); - nodes[nNodes].AddConnection(*connj); - connj->AddConnection(nodes[nNodes]); - nodes[nNodes].AddConnection(*connl); - connl->AddConnection(nodes[nNodes]); - ++nNodes; - goto SkipOut; - } - } - } - } - } - SkipOut: - ++counter; - //if (counter > 100) printf("Counter: %d\n",counter); - } - - /* - // Debugging: check for connection consistency - for (int32 i=0; i<nNodes; ++i) { - int32 nConn = nodes[i].nConnected; - for (int32 j=0; j<nConn; ++j) { - if (nodes[i].connected[j]->nConnected == 0) b2Assert(false); - b2PolyNode* connect = nodes[i].connected[j]; - bool found = false; - for (int32 k=0; k<connect->nConnected; ++k) { - if (connect->connected[k] == &nodes[i]) found = true; - } - b2Assert(found); - } - }*/ - - //Collapse duplicate points - bool foundDupe = true; - int nActive = nNodes; - while (foundDupe){ - foundDupe = false; - for (int32 i=0; i < nNodes; ++i){ - if (nodes[i].nConnected == 0) continue; - for (int32 j=i+1; j < nNodes; ++j){ - if (nodes[j].nConnected == 0) continue; - b2Vec2 diff = nodes[i].position - nodes[j].position; - if (diff.LengthSquared() <= COLLAPSE_DIST_SQR){ - if (nActive <= 3) { - // -- GODOT start -- - delete[] nodes; - // -- GODOT end -- - return b2Polygon(); - } - //printf("Found dupe, %d left\n",nActive); - --nActive; - foundDupe = true; - b2PolyNode* inode = &nodes[i]; - b2PolyNode* jnode = &nodes[j]; - //Move all of j's connections to i, and orphan j - int32 njConn = jnode->nConnected; - for (int32 k=0; k < njConn; ++k){ - b2PolyNode* knode = jnode->connected[k]; - b2Assert(knode != jnode); - if (knode != inode) { - inode->AddConnection(*knode); - knode->AddConnection(*inode); - } - knode->RemoveConnection(*jnode); - //printf("knode %d on node %d now has %d connections\n",k,j,knode->nConnected); - //printf("Found duplicate point.\n"); - } - /* - printf("Orphaning node at address %d\n",(int)jnode); - for (int32 k=0; k<njConn; ++k) { - if (jnode->connected[k]->IsConnectedTo(*jnode)) printf("Problem!!!\n"); - } - for (int32 k=0; k < njConn; ++k){ - jnode->RemoveConnectionByIndex(k); - } - */ - jnode->nConnected = 0; - } - } - } - } - - /* - // Debugging: check for connection consistency - for (int32 i=0; i<nNodes; ++i) { - int32 nConn = nodes[i].nConnected; - printf("Node %d has %d connections\n",i,nConn); - for (int32 j=0; j<nConn; ++j) { - if (nodes[i].connected[j]->nConnected == 0) { - printf("Problem with node %d connection at address %d\n",i,(int)(nodes[i].connected[j])); - b2Assert(false); - } - b2PolyNode* connect = nodes[i].connected[j]; - bool found = false; - for (int32 k=0; k<connect->nConnected; ++k) { - if (connect->connected[k] == &nodes[i]) found = true; - } - if (!found) printf("Connection %d (of %d) on node %d (of %d) did not have reciprocal connection.\n",j,nConn,i,nNodes); - b2Assert(found); - } - }//*/ - - //Now walk the edge of the list - - //Find node with minimum y value (max x if equal) - float32 minY = 1e10; - float32 maxX = -1e10; - int32 minYIndex = -1; - for (int32 i = 0; i < nNodes; ++i) { - if (nodes[i].position.y < minY && nodes[i].nConnected > 1) { - minY = nodes[i].position.y; - minYIndex = i; - maxX = nodes[i].position.x; - } else if (nodes[i].position.y == minY && nodes[i].position.x > maxX && nodes[i].nConnected > 1) { - minYIndex = i; - maxX = nodes[i].position.x; - } - } - - b2Vec2 origDir(1.0f,0.0f); - b2Vec2* resultVecs = new b2Vec2[4*nNodes];// nodes may be visited more than once, unfortunately - change to growable array! - int32 nResultVecs = 0; - b2PolyNode* currentNode = &nodes[minYIndex]; - b2PolyNode* startNode = currentNode; - b2Assert(currentNode->nConnected > 0); - b2PolyNode* nextNode = currentNode->GetRightestConnection(origDir); - if (!nextNode) goto CleanUp; // Borked, clean up our mess and return - resultVecs[0] = startNode->position; - ++nResultVecs; - while (nextNode != startNode){ - if (nResultVecs > 4*nNodes){ - /* - printf("%d, %d, %d\n",(int)startNode,(int)currentNode,(int)nextNode); - printf("%f, %f -> %f, %f\n",currentNode->position.x,currentNode->position.y, nextNode->position.x, nextNode->position.y); - p->printFormatted(); - printf("Dumping connection graph: \n"); - for (int32 i=0; i<nNodes; ++i) { - printf("nodex[%d] = %f; nodey[%d] = %f;\n",i,nodes[i].position.x,i,nodes[i].position.y); - printf("//connected to\n"); - for (int32 j=0; j<nodes[i].nConnected; ++j) { - printf("connx[%d][%d] = %f; conny[%d][%d] = %f;\n",i,j,nodes[i].connected[j]->position.x, i,j,nodes[i].connected[j]->position.y); - } - } - printf("Dumping results thus far: \n"); - for (int32 i=0; i<nResultVecs; ++i) { - printf("x[%d]=map(%f,-3,3,0,width); y[%d] = map(%f,-3,3,height,0);\n",i,resultVecs[i].x,i,resultVecs[i].y); - } - //*/ - b2Assert(false); //nodes should never be visited four times apiece (proof?), so we've probably hit a loop...crap - } - resultVecs[nResultVecs++] = nextNode->position; - b2PolyNode* oldNode = currentNode; - currentNode = nextNode; - //printf("Old node connections = %d; address %d\n",oldNode->nConnected, (int)oldNode); - //printf("Current node connections = %d; address %d\n",currentNode->nConnected, (int)currentNode); - nextNode = currentNode->GetRightestConnection(oldNode); - if (!nextNode) goto CleanUp; // There was a problem, so jump out of the loop and use whatever garbage we've generated so far - //printf("nextNode address: %d\n",(int)nextNode); - } - - CleanUp: - - float32* xres = new float32[nResultVecs]; - float32* yres = new float32[nResultVecs]; - for (int32 i=0; i<nResultVecs; ++i){ - xres[i] = resultVecs[i].x; - yres[i] = resultVecs[i].y; - } - b2Polygon retval(xres,yres,nResultVecs); - delete[] resultVecs; - delete[] yres; - delete[] xres; - delete[] nodes; - return retval; -} - -b2PolyNode::b2PolyNode(){ - nConnected = 0; - visited = false; -} -b2PolyNode::b2PolyNode(b2Vec2& pos){ - position = pos; - nConnected = 0; - visited = false; -} - -void b2PolyNode::AddConnection(b2PolyNode& toMe){ - b2Assert(nConnected < MAX_CONNECTED); - // Ignore duplicate additions - for (int32 i=0; i<nConnected; ++i) { - if (connected[i] == &toMe) return; - } - connected[nConnected] = &toMe; - ++nConnected; -} - -void b2PolyNode::RemoveConnection(b2PolyNode& fromMe){ - bool isFound = false; - int32 foundIndex = -1; - for (int32 i=0; i<nConnected; ++i){ - if (&fromMe == connected[i]) {//.position == connected[i]->position){ - isFound = true; - foundIndex = i; - break; - } - } - b2Assert(isFound); - --nConnected; - //printf("nConnected: %d\n",nConnected); - for (int32 i=foundIndex; i < nConnected; ++i){ - connected[i] = connected[i+1]; - } -} -void b2PolyNode::RemoveConnectionByIndex(int32 index){ - --nConnected; - //printf("New nConnected = %d\n",nConnected); - for (int32 i=index; i < nConnected; ++i){ - connected[i] = connected[i+1]; - } -} -bool b2PolyNode::IsConnectedTo(b2PolyNode& me){ - bool isFound = false; - for (int32 i=0; i<nConnected; ++i){ - if (&me == connected[i]) {//.position == connected[i]->position){ - isFound = true; - break; - } - } - return isFound; -} -b2PolyNode* b2PolyNode::GetRightestConnection(b2PolyNode* incoming){ - if (nConnected == 0) b2Assert(false); // This means the connection graph is inconsistent - if (nConnected == 1) { - //b2Assert(false); - // Because of the possibility of collapsing nearby points, - // we may end up with "spider legs" dangling off of a region. - // The correct behavior here is to turn around. - return incoming; - } - b2Vec2 inDir = position - incoming->position; - float32 inLength = inDir.Normalize(); - b2Assert(inLength > CMP_EPSILON); - - b2PolyNode* result = NULL; - for (int32 i=0; i<nConnected; ++i){ - if (connected[i] == incoming) continue; - b2Vec2 testDir = connected[i]->position - position; - float32 testLengthSqr = testDir.LengthSquared(); - testDir.Normalize(); - /* - if (testLengthSqr < COLLAPSE_DIST_SQR) { - printf("Problem with connection %d\n",i); - printf("This node has %d connections\n",nConnected); - printf("That one has %d\n",connected[i]->nConnected); - if (this == connected[i]) printf("This points at itself.\n"); - }*/ - b2Assert (testLengthSqr >= COLLAPSE_DIST_SQR); - float32 myCos = b2Dot(inDir,testDir); - float32 mySin = b2Cross(inDir,testDir); - if (result){ - b2Vec2 resultDir = result->position - position; - resultDir.Normalize(); - float32 resCos = b2Dot(inDir,resultDir); - float32 resSin = b2Cross(inDir,resultDir); - if (IsRighter(mySin,myCos,resSin,resCos)){ - result = connected[i]; - } - } else{ - result = connected[i]; - } - } - if (B2_POLYGON_REPORT_ERRORS && !result) { - printf("nConnected = %d\n",nConnected); - for (int32 i=0; i<nConnected; ++i) { - printf("connected[%d] @ %d\n",i,0);//(int)connected[i]); - } - } - b2Assert(result); - - return result; -} - -b2PolyNode* b2PolyNode::GetRightestConnection(b2Vec2& incomingDir){ - b2Vec2 diff = position-incomingDir; - b2PolyNode temp(diff); - b2PolyNode* res = GetRightestConnection(&temp); - b2Assert(res); - return res; -} -} diff --git a/thirdparty/b2d_convexdecomp/b2Polygon.h b/thirdparty/b2d_convexdecomp/b2Polygon.h deleted file mode 100644 index c466e28f7e..0000000000 --- a/thirdparty/b2d_convexdecomp/b2Polygon.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 2007 Eric Jordan - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -#ifndef B2_POLYGON_H -#define B2_POLYGON_H - -#include "b2Triangle.h" -#include "stdio.h" -#include <string.h> -#include <limits.h> -namespace b2ConvexDecomp { - -static bool B2_POLYGON_REPORT_ERRORS = false; - -class b2Polygon; - -int32 remainder(int32 x, int32 modulus); -int32 TriangulatePolygon(float32* xv, float32* yv, int32 vNum, b2Triangle* results); -bool IsEar(int32 i, float32* xv, float32* yv, int32 xvLength); //Not for external use -int32 PolygonizeTriangles(b2Triangle* triangulated, int32 triangulatedLength, b2Polygon* polys, int32 polysLength); -int32 DecomposeConvex(b2Polygon* p, b2Polygon* results, int32 maxPolys); -//void DecomposeConvexAndAddTo(b2Polygon* p, b2Body* bd, b2FixtureDef* prototype); - -void ReversePolygon(float32* x, float32* y, int n); - -b2Polygon TraceEdge(b2Polygon* p); //For use with self-intersecting polygons, finds outline - -class b2Polygon { - -public: - const static int32 maxVerticesPerPolygon = b2_maxPolygonVertices; - - float32* x; //vertex arrays - float32* y; - int32 nVertices; - - float32 area; - bool areaIsSet; - - b2Polygon(float32* _x, float32* _y, int32 nVert); - b2Polygon(b2Vec2* v, int32 nVert); - b2Polygon(); - ~b2Polygon(); - - float32 GetArea(); - - void MergeParallelEdges(float32 tolerance); - b2Vec2* GetVertexVecs(); - b2Polygon(b2Triangle& t); - void Set(const b2Polygon& p); - bool IsConvex(); - bool IsCCW(); - bool IsUsable(bool printError); - bool IsUsable(); - bool IsSimple(); - // void AddTo(b2FixtureDef& pd); - - b2Polygon* Add(b2Triangle& t); - - void print(){ - printFormatted(); - /* - for (int32 i=0; i<nVertices; ++i){ - printf("i: %d, x:%f, y:%f\n",i,x[i],y[i]); - } - */ - } - - void printFormatted(){ - printf("float xv[] = {"); - for (int32 i=0; i<nVertices; ++i){ - printf("%ff,",x[i]); - } - printf("};\nfloat yv[] = {"); - for (int32 i=0; i<nVertices; ++i){ - printf("%ff,",y[i]); - } - printf("};\n"); - } - - b2Polygon(const b2Polygon& p){ - nVertices = p.nVertices; - area = p.area; - areaIsSet = p.areaIsSet; - x = new float32[nVertices]; - y = new float32[nVertices]; - memcpy(x, p.x, nVertices * sizeof(float32)); - memcpy(y, p.y, nVertices * sizeof(float32)); - } - - -}; - -const int32 MAX_CONNECTED = 32; -const float32 COLLAPSE_DIST_SQR = CMP_EPSILON*CMP_EPSILON;//0.1f;//1000*CMP_EPSILON*1000*CMP_EPSILON; - -class b2PolyNode{ -public: - b2Vec2 position; - b2PolyNode* connected[MAX_CONNECTED]; - int32 nConnected; - bool visited; - - b2PolyNode(b2Vec2& pos); - b2PolyNode(); - void AddConnection(b2PolyNode& toMe); - void RemoveConnection(b2PolyNode& fromMe); - void RemoveConnectionByIndex(int32 index); - bool IsConnectedTo(b2PolyNode& me); - b2PolyNode* GetRightestConnection(b2PolyNode* incoming); - b2PolyNode* GetRightestConnection(b2Vec2& incomingDir); -}; - - -b2Polygon ConvexHull(b2Vec2* v, int nVert); -b2Polygon ConvexHull(float32* cloudX, float32* cloudY, int32 nVert); -} -#endif diff --git a/thirdparty/b2d_convexdecomp/b2Triangle.cpp b/thirdparty/b2d_convexdecomp/b2Triangle.cpp deleted file mode 100644 index a0a30b9407..0000000000 --- a/thirdparty/b2d_convexdecomp/b2Triangle.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2007 Eric Jordan - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -#include "b2Triangle.h" - -namespace b2ConvexDecomp { - -//Constructor automatically fixes orientation to ccw -b2Triangle::b2Triangle(float32 x1, float32 y1, float32 x2, float32 y2, float32 x3, float32 y3){ - x = new float32[3]; - y = new float32[3]; - float32 dx1 = x2-x1; - float32 dx2 = x3-x1; - float32 dy1 = y2-y1; - float32 dy2 = y3-y1; - float32 cross = dx1*dy2-dx2*dy1; - bool ccw = (cross>0); - if (ccw){ - x[0] = x1; x[1] = x2; x[2] = x3; - y[0] = y1; y[1] = y2; y[2] = y3; - } else{ - x[0] = x1; x[1] = x3; x[2] = x2; - y[0] = y1; y[1] = y3; y[2] = y2; - } -} - -b2Triangle::b2Triangle(){ - x = new float32[3]; - y = new float32[3]; -} - -b2Triangle::~b2Triangle(){ - delete[] x; - delete[] y; -} - -void b2Triangle::Set(const b2Triangle& toMe) { - for (int32 i=0; i<3; ++i) { - x[i] = toMe.x[i]; - y[i] = toMe.y[i]; - } -} - -bool b2Triangle::IsInside(float32 _x, float32 _y){ - if (_x < x[0] && _x < x[1] && _x < x[2]) return false; - if (_x > x[0] && _x > x[1] && _x > x[2]) return false; - if (_y < y[0] && _y < y[1] && _y < y[2]) return false; - if (_y > y[0] && _y > y[1] && _y > y[2]) return false; - - float32 vx2 = _x-x[0]; float32 vy2 = _y-y[0]; - float32 vx1 = x[1]-x[0]; float32 vy1 = y[1]-y[0]; - float32 vx0 = x[2]-x[0]; float32 vy0 = y[2]-y[0]; - - float32 dot00 = vx0*vx0+vy0*vy0; - float32 dot01 = vx0*vx1+vy0*vy1; - float32 dot02 = vx0*vx2+vy0*vy2; - float32 dot11 = vx1*vx1+vy1*vy1; - float32 dot12 = vx1*vx2+vy1*vy2; - float32 invDenom = 1.0f / (dot00*dot11 - dot01*dot01); - float32 u = (dot11*dot02 - dot01*dot12)*invDenom; - float32 v = (dot00*dot12 - dot01*dot02)*invDenom; - - return ((u>=0)&&(v>=0)&&(u+v<=1)); -} - - -} diff --git a/thirdparty/b2d_convexdecomp/b2Triangle.h b/thirdparty/b2d_convexdecomp/b2Triangle.h deleted file mode 100644 index 99ab5cba69..0000000000 --- a/thirdparty/b2d_convexdecomp/b2Triangle.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2007 Eric Jordan - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -#ifndef B2_TRIANGLE_H -#define B2_TRIANGLE_H - -#include "b2Glue.h" - -namespace b2ConvexDecomp { - - - -class b2Triangle{ -public: - float* x; - float* y; - b2Triangle(); - b2Triangle(float32 x1, float32 y1, float32 x2, float32 y2, float32 x3, float32 y3); - ~b2Triangle(); - bool IsInside(float32 _x, float32 _y); - void Set(const b2Triangle& toMe); - -}; - -} -#endif diff --git a/thirdparty/misc/ifaddrs-android.h b/thirdparty/misc/ifaddrs-android.h index 6e204af26f..8de94324b8 100644 --- a/thirdparty/misc/ifaddrs-android.h +++ b/thirdparty/misc/ifaddrs-android.h @@ -32,6 +32,11 @@ // Fills out a list of ifaddr structs (see below) which contain information // about every network interface available on the host. // See 'man getifaddrs' on Linux or OS X (nb: it is not a POSIX function). +// -- GODOT start -- +#ifdef __cplusplus +extern "C" { +#endif +// -- GODOT end -- struct ifaddrs { struct ifaddrs* ifa_next; char* ifa_name; @@ -40,7 +45,21 @@ struct ifaddrs { struct sockaddr* ifa_netmask; // Real ifaddrs has broadcast, point to point and data members. // We don't need them (yet?). + // -- GODOT start -- + // We never initialize the following members. We only define them to match the ifaddrs struct. + union + { + struct sockaddr *ifu_broadaddr; + struct sockaddr *ifu_dstaddr; + } ifa_ifu; + void *ifa_data; + // -- GODOT end -- }; +// -- GODOT start -- +#ifdef __cplusplus +} +#endif +// -- GODOT end -- int getifaddrs(struct ifaddrs** result); void freeifaddrs(struct ifaddrs* addrs); #endif // TALK_BASE_IFADDRS_ANDROID_H_ diff --git a/thirdparty/vhacd/0003-fix-musl-build.patch b/thirdparty/vhacd/0003-fix-musl-build.patch new file mode 100644 index 0000000000..67af8546f3 --- /dev/null +++ b/thirdparty/vhacd/0003-fix-musl-build.patch @@ -0,0 +1,15 @@ +diff --git a/thirdparty/vhacd/inc/vhacdMutex.h b/thirdparty/vhacd/inc/vhacdMutex.h +index 6b09259200..d587dd6387 100644 +--- a/thirdparty/vhacd/inc/vhacdMutex.h ++++ b/thirdparty/vhacd/inc/vhacdMutex.h +@@ -71,7 +71,9 @@ + #include <pthread.h> + #endif + +-#if defined(__APPLE__) ++// -- GODOT start -- ++#if defined(__APPLE__) || !defined(__GLIBC__) ++// -- GODOT end -- + #define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE + #endif + diff --git a/thirdparty/vhacd/0004-fix-uwp-arm-build.patch b/thirdparty/vhacd/0004-fix-uwp-arm-build.patch new file mode 100644 index 0000000000..a5bba3fd7d --- /dev/null +++ b/thirdparty/vhacd/0004-fix-uwp-arm-build.patch @@ -0,0 +1,16 @@ +diff --git a/thirdparty/vhacd/inc/btScalar.h b/thirdparty/vhacd/inc/btScalar.h +index 3999a71521..4c9e0cf7ab 100644 +--- a/thirdparty/vhacd/inc/btScalar.h ++++ b/thirdparty/vhacd/inc/btScalar.h +@@ -72,7 +72,10 @@ inline int32_t btGetVersion() + #define btFsel(a, b, c) __fsel((a), (b), (c)) + #else + +-#if (defined(_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined(BT_USE_DOUBLE_PRECISION)) ++// -- GODOT start -- ++//#if (defined(_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined(BT_USE_DOUBLE_PRECISION)) ++#if (defined(_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined(BT_USE_DOUBLE_PRECISION)) && (!defined(_M_ARM)) ++// -- GODOT end -- + #define BT_USE_SSE + #include <emmintrin.h> + #endif diff --git a/thirdparty/vhacd/inc/btScalar.h b/thirdparty/vhacd/inc/btScalar.h index 3999a71521..4c9e0cf7ab 100644 --- a/thirdparty/vhacd/inc/btScalar.h +++ b/thirdparty/vhacd/inc/btScalar.h @@ -72,7 +72,10 @@ inline int32_t btGetVersion() #define btFsel(a, b, c) __fsel((a), (b), (c)) #else -#if (defined(_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined(BT_USE_DOUBLE_PRECISION)) +// -- GODOT start -- +//#if (defined(_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined(BT_USE_DOUBLE_PRECISION)) +#if (defined(_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined(BT_USE_DOUBLE_PRECISION)) && (!defined(_M_ARM)) +// -- GODOT end -- #define BT_USE_SSE #include <emmintrin.h> #endif diff --git a/thirdparty/vhacd/inc/vhacdMutex.h b/thirdparty/vhacd/inc/vhacdMutex.h index 6b09259200..d587dd6387 100644 --- a/thirdparty/vhacd/inc/vhacdMutex.h +++ b/thirdparty/vhacd/inc/vhacdMutex.h @@ -71,7 +71,9 @@ #include <pthread.h> #endif -#if defined(__APPLE__) +// -- GODOT start -- +#if defined(__APPLE__) || !defined(__GLIBC__) +// -- GODOT end -- #define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE #endif |