diff options
2282 files changed, 58789 insertions, 23254 deletions
diff --git a/.gitignore b/.gitignore index 0ee2a8b382..25a36c8e5f 100644 --- a/.gitignore +++ b/.gitignore @@ -73,7 +73,7 @@ logs/ # for projects that use SCons for building: http://http://www.scons.org/ .sconf_temp -.sconsign.dblite +.sconsign*.dblite *.pyc # https://github.com/github/gitignore/blob/master/VisualStudio.gitignore @@ -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..e5330770d1 100644 --- a/COPYRIGHT.txt +++ b/COPYRIGHT.txt @@ -43,8 +43,8 @@ Source: https://github.com/godotengine/godot Files: * Comment: Godot Engine -Copyright: 2007-2019, Juan Linietsky, Ariel Manzur. - 2014-2019, Godot Engine contributors. +Copyright: 2007-2020, Juan Linietsky, Ariel Manzur. + 2014-2020, Godot Engine contributors. License: Expat Files: ./icon.png @@ -77,8 +77,8 @@ Files: ./platform/android/power_android.cpp ./platform/x11/power_x11.cpp Comment: Simple DirectMedia Layer Copyright: 1997-2017, Sam Lantinga - 2007-2019, Juan Linietsky, Ariel Manzur. - 2014-2019, Godot Engine contributors. + 2007-2020, Juan Linietsky, Ariel Manzur. + 2014-2020, Godot Engine contributors. License: Expat and Zlib Files: ./scene/animation/tween_interpolaters.cpp @@ -98,16 +98,16 @@ Files: ./servers/physics/gjk_epa.cpp ./servers/physics/joints/slider_joint_sw.h Comment: Bullet Continuous Collision Detection and Physics Library Copyright: 2003-2008, Erwin Coumans - 2007-2019, Juan Linietsky, Ariel Manzur. - 2014-2019, Godot Engine contributors. + 2007-2020, Juan Linietsky, Ariel Manzur. + 2014-2020, Godot Engine contributors. License: Expat and Zlib Files: ./servers/physics/joints/cone_twist_joint_sw.cpp ./servers/physics/joints/cone_twist_joint_sw.h Comment: Bullet Continuous Collision Detection and Physics Library Copyright: 2007, Starbreeze Studios - 2007-2019, Juan Linietsky, Ariel Manzur. - 2014-2019, Godot Engine contributors. + 2007-2020, Juan Linietsky, Ariel Manzur. + 2014-2020, Godot Engine contributors. License: Expat and Zlib Files: ./thirdparty/assimp/ @@ -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/LICENSE.txt b/LICENSE.txt index 11b3b89c8e..52bd041102 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,5 +1,5 @@ -Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/SConstruct b/SConstruct index 0e282a1f12..6703038bed 100644 --- a/SConstruct +++ b/SConstruct @@ -5,6 +5,7 @@ EnsureSConsVersion(0, 98, 1) # System import glob import os +import pickle import sys # Local @@ -68,8 +69,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 @@ -90,6 +89,9 @@ env_base.__class__.disable_warnings = methods.disable_warnings env_base["x86_libtheora_opt_gcc"] = False env_base["x86_libtheora_opt_vc"] = False +# avoid issues when building with different versions of python out of the same directory +env_base.SConsignFile(".sconsign{0}.dblite".format(pickle.HIGHEST_PROTOCOL)) + # Build options customs = ['custom.py'] @@ -129,6 +131,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/array.cpp b/core/array.cpp index fd507f46c3..2253d05605 100644 --- a/core/array.cpp +++ b/core/array.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/array.h b/core/array.h index 7a754d53ea..3b14bdb9fe 100644 --- a/core/array.h +++ b/core/array.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index 1544503045..0eacffeb88 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -400,6 +400,10 @@ bool _OS::is_window_always_on_top() const { return OS::get_singleton()->is_window_always_on_top(); } +bool _OS::is_window_focused() const { + return OS::get_singleton()->is_window_focused(); +} + void _OS::set_borderless_window(bool p_borderless) { OS::get_singleton()->set_borderless_window(p_borderless); } @@ -584,6 +588,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()); } @@ -677,6 +690,10 @@ int _OS::get_exit_code() const { void _OS::set_exit_code(int p_code) { + if (p_code < 0 || p_code > 125) { + WARN_PRINT("For portability reasons, the exit code should be set between 0 and 125 (inclusive)."); + } + OS::get_singleton()->set_exit_code(p_code); } @@ -1213,6 +1230,7 @@ void _OS::_bind_methods() { ClassDB::bind_method(D_METHOD("is_window_maximized"), &_OS::is_window_maximized); ClassDB::bind_method(D_METHOD("set_window_always_on_top", "enabled"), &_OS::set_window_always_on_top); ClassDB::bind_method(D_METHOD("is_window_always_on_top"), &_OS::is_window_always_on_top); + ClassDB::bind_method(D_METHOD("is_window_focused"), &_OS::is_window_focused); ClassDB::bind_method(D_METHOD("request_attention"), &_OS::request_attention); ClassDB::bind_method(D_METHOD("get_real_window_size"), &_OS::get_real_window_size); ClassDB::bind_method(D_METHOD("center_window"), &_OS::center_window); @@ -1335,6 +1353,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 +1370,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 +1393,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..7c5031cad4 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -198,6 +198,7 @@ public: virtual bool is_window_maximized() const; virtual void set_window_always_on_top(bool p_enabled); virtual bool is_window_always_on_top() const; + virtual bool is_window_focused() const; virtual void request_attention(); virtual void center_window(); virtual void move_window_to_foreground(); @@ -345,6 +346,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.cpp b/core/class_db.cpp index f52937bdca..65f0c6008c 100644 --- a/core/class_db.cpp +++ b/core/class_db.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -389,6 +389,13 @@ uint64_t ClassDB::get_api_hash(APIType p_api) { while ((k = t->method_map.next(k))) { + String name = k->operator String(); + + ERR_CONTINUE(name.empty()); + + if (name[0] == '_') + continue; // Ignore non-virtual methods that start with an underscore + snames.push_back(*k); } diff --git a/core/class_db.h b/core/class_db.h index 092469beb7..34301d6cba 100644 --- a/core/class_db.h +++ b/core/class_db.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -114,6 +114,7 @@ public: APIType api; ClassInfo *inherits_ptr; + void *class_ptr; HashMap<StringName, MethodBind *> method_map; HashMap<StringName, int> constant_map; HashMap<StringName, List<StringName> > enum_map; @@ -177,6 +178,7 @@ public: ERR_FAIL_COND(!t); t->creation_func = &creator<T>; t->exposed = true; + t->class_ptr = T::get_class_ptr_static(); T::register_custom_data_to_otdb(); } @@ -188,6 +190,7 @@ public: ClassInfo *t = classes.getptr(T::get_class_static()); ERR_FAIL_COND(!t); t->exposed = true; + t->class_ptr = T::get_class_ptr_static(); //nothing } @@ -206,6 +209,7 @@ public: ERR_FAIL_COND(!t); t->creation_func = &_create_ptr_func<T>; t->exposed = true; + t->class_ptr = T::get_class_ptr_static(); T::register_custom_data_to_otdb(); } @@ -284,12 +288,30 @@ 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 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, const Variant &p_def8) { + + MethodBind *bind = create_method_bind(p_method); + const Variant *ptr[8] = { &p_def1, &p_def2, &p_def3, &p_def4, &p_def5, &p_def6, &p_def7, &p_def8 }; + + return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 8); + } + 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>()) { + 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>(), bool p_return_nil_is_variant = true) { GLOBAL_LOCK_FUNCTION; - MethodBind *bind = create_vararg_method_bind(p_method, p_info); + MethodBind *bind = create_vararg_method_bind(p_method, p_info, p_return_nil_is_variant); ERR_FAIL_COND_V(!bind, NULL); bind->set_name(p_name); diff --git a/core/color.cpp b/core/color.cpp index a6ad50b745..5cbe02067e 100644 --- a/core/color.cpp +++ b/core/color.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/color.h b/core/color.h index b34a82ef19..cfdd211b69 100644 --- a/core/color.h +++ b/core/color.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/command_queue_mt.cpp b/core/command_queue_mt.cpp index 2bdf02295c..c20735939d 100644 --- a/core/command_queue_mt.cpp +++ b/core/command_queue_mt.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/command_queue_mt.h b/core/command_queue_mt.h index 98f5bc56d7..e5f93bcc36 100644 --- a/core/command_queue_mt.h +++ b/core/command_queue_mt.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/compressed_translation.cpp b/core/compressed_translation.cpp index d927b74897..69b4ec292f 100644 --- a/core/compressed_translation.cpp +++ b/core/compressed_translation.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/compressed_translation.h b/core/compressed_translation.h index 0b49907a68..a72be739a1 100644 --- a/core/compressed_translation.h +++ b/core/compressed_translation.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/core_string_names.cpp b/core/core_string_names.cpp index eeaae96754..bafb800e41 100644 --- a/core/core_string_names.cpp +++ b/core/core_string_names.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/core_string_names.h b/core/core_string_names.h index 85f8bb7f62..a507a20935 100644 --- a/core/core_string_names.h +++ b/core/core_string_names.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/cowdata.h b/core/cowdata.h index c92e20920c..4fdcaf3cea 100644 --- a/core/cowdata.h +++ b/core/cowdata.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/crypto/crypto.cpp b/core/crypto/crypto.cpp index 83a25da901..3bee34f8e4 100644 --- a/core/crypto/crypto.cpp +++ b/core/crypto/crypto.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/crypto/crypto.h b/core/crypto/crypto.h index 2de81f5b57..adc36255b6 100644 --- a/core/crypto/crypto.h +++ b/core/crypto/crypto.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/crypto/crypto_core.cpp b/core/crypto/crypto_core.cpp index 51c2e3c9e5..dec52d8ca4 100644 --- a/core/crypto/crypto_core.cpp +++ b/core/crypto/crypto_core.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/crypto/crypto_core.h b/core/crypto/crypto_core.h index c859d612d4..b3be58e8ee 100644 --- a/core/crypto/crypto_core.h +++ b/core/crypto/crypto_core.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/crypto/hashing_context.cpp b/core/crypto/hashing_context.cpp index b5aa0ddc18..7bee8f1200 100644 --- a/core/crypto/hashing_context.cpp +++ b/core/crypto/hashing_context.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/crypto/hashing_context.h b/core/crypto/hashing_context.h index aa69636f2c..af6ed3aa0b 100644 --- a/core/crypto/hashing_context.h +++ b/core/crypto/hashing_context.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/dictionary.cpp b/core/dictionary.cpp index 0d9945991e..cdb518228b 100644 --- a/core/dictionary.cpp +++ b/core/dictionary.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/dictionary.h b/core/dictionary.h index b68d3f5737..0ce817f3d4 100644 --- a/core/dictionary.h +++ b/core/dictionary.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/engine.cpp b/core/engine.cpp index b9dc057257..1772cc7c48 100644 --- a/core/engine.cpp +++ b/core/engine.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -94,11 +94,7 @@ Dictionary Engine::get_version_info() const { Dictionary dict; dict["major"] = VERSION_MAJOR; dict["minor"] = VERSION_MINOR; -#ifdef VERSION_PATCH dict["patch"] = VERSION_PATCH; -#else - dict["patch"] = 0; -#endif dict["hex"] = VERSION_HEX; dict["status"] = VERSION_STATUS; dict["build"] = VERSION_BUILD; diff --git a/core/engine.h b/core/engine.h index 192e8e67a0..1aab907ac8 100644 --- a/core/engine.h +++ b/core/engine.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/error_list.h b/core/error_list.h index dc5a5e68dd..b464a93341 100644 --- a/core/error_list.h +++ b/core/error_list.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/error_macros.cpp b/core/error_macros.cpp index 55a215cfb6..6dd7dd5e1c 100644 --- a/core/error_macros.cpp +++ b/core/error_macros.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/error_macros.h b/core/error_macros.h index 00e830f73a..ed7f601089 100644 --- a/core/error_macros.h +++ b/core/error_macros.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/func_ref.cpp b/core/func_ref.cpp index 66ef27f6b9..2dffb30bab 100644 --- a/core/func_ref.cpp +++ b/core/func_ref.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/func_ref.h b/core/func_ref.h index af0bf63203..1d1ca47ad7 100644 --- a/core/func_ref.h +++ b/core/func_ref.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/global_constants.cpp b/core/global_constants.cpp index 5bfdc8ab8f..e48556c064 100644 --- a/core/global_constants.cpp +++ b/core/global_constants.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/global_constants.h b/core/global_constants.h index c798a3b9bc..a20b5ecd9a 100644 --- a/core/global_constants.h +++ b/core/global_constants.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/hash_map.h b/core/hash_map.h index edc67e7806..c9d3a690e7 100644 --- a/core/hash_map.h +++ b/core/hash_map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/hashfuncs.h b/core/hashfuncs.h index 07d78dcbde..647e8a40b2 100644 --- a/core/hashfuncs.h +++ b/core/hashfuncs.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/image.cpp b/core/image.cpp index 74706535b3..672f850a1f 100644 --- a/core/image.cpp +++ b/core/image.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -2432,19 +2432,19 @@ Color Image::get_pixel(int p_x, int p_y) const { } case FORMAT_RGBA4444: { uint16_t u = ((uint16_t *)ptr)[ofs]; - float r = (u & 0xF) / 15.0; - float g = ((u >> 4) & 0xF) / 15.0; - float b = ((u >> 8) & 0xF) / 15.0; - float a = ((u >> 12) & 0xF) / 15.0; + float r = ((u >> 12) & 0xF) / 15.0; + float g = ((u >> 8) & 0xF) / 15.0; + float b = ((u >> 4) & 0xF) / 15.0; + float a = (u & 0xF) / 15.0; return Color(r, g, b, a); } case FORMAT_RGBA5551: { uint16_t u = ((uint16_t *)ptr)[ofs]; - float r = (u & 0x1F) / 15.0; - float g = ((u >> 5) & 0x1F) / 15.0; - float b = ((u >> 10) & 0x1F) / 15.0; - float a = ((u >> 15) & 0x1) / 1.0; + float r = ((u >> 11) & 0x1F) / 15.0; + float g = ((u >> 6) & 0x1F) / 15.0; + float b = ((u >> 1) & 0x1F) / 15.0; + float a = (u & 0x1) / 1.0; return Color(r, g, b, a); } case FORMAT_RF: { @@ -2558,10 +2558,10 @@ void Image::set_pixel(int p_x, int p_y, const Color &p_color) { uint16_t rgba = 0; - rgba = uint16_t(CLAMP(p_color.r * 15.0, 0, 15)); - rgba |= uint16_t(CLAMP(p_color.g * 15.0, 0, 15)) << 4; - rgba |= uint16_t(CLAMP(p_color.b * 15.0, 0, 15)) << 8; - rgba |= uint16_t(CLAMP(p_color.a * 15.0, 0, 15)) << 12; + rgba = uint16_t(CLAMP(p_color.r * 15.0, 0, 15)) << 12; + rgba |= uint16_t(CLAMP(p_color.g * 15.0, 0, 15)) << 8; + rgba |= uint16_t(CLAMP(p_color.b * 15.0, 0, 15)) << 4; + rgba |= uint16_t(CLAMP(p_color.a * 15.0, 0, 15)); ((uint16_t *)ptr)[ofs] = rgba; @@ -2570,10 +2570,10 @@ void Image::set_pixel(int p_x, int p_y, const Color &p_color) { uint16_t rgba = 0; - rgba = uint16_t(CLAMP(p_color.r * 31.0, 0, 31)); - rgba |= uint16_t(CLAMP(p_color.g * 31.0, 0, 31)) << 5; - rgba |= uint16_t(CLAMP(p_color.b * 31.0, 0, 31)) << 10; - rgba |= uint16_t(p_color.a > 0.5 ? 1 : 0) << 15; + rgba = uint16_t(CLAMP(p_color.r * 31.0, 0, 31)) << 11; + rgba |= uint16_t(CLAMP(p_color.g * 31.0, 0, 31)) << 6; + rgba |= uint16_t(CLAMP(p_color.b * 31.0, 0, 31)) << 1; + rgba |= uint16_t(p_color.a > 0.5 ? 1 : 0); ((uint16_t *)ptr)[ofs] = rgba; diff --git a/core/image.h b/core/image.h index 94ee8a2c33..c15cfc9f6f 100644 --- a/core/image.h +++ b/core/image.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/input_map.cpp b/core/input_map.cpp index 05c75febf2..36a0e88ae0 100644 --- a/core/input_map.cpp +++ b/core/input_map.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/input_map.h b/core/input_map.h index 895fd26928..19d550af77 100644 --- a/core/input_map.h +++ b/core/input_map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/int_types.h b/core/int_types.h index 891b6172fa..e7de053766 100644 --- a/core/int_types.h +++ b/core/int_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/compression.cpp b/core/io/compression.cpp index b51e50150e..20c9fdca6f 100644 --- a/core/io/compression.cpp +++ b/core/io/compression.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/compression.h b/core/io/compression.h index 883dbf3a99..8354b581fa 100644 --- a/core/io/compression.h +++ b/core/io/compression.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/config_file.cpp b/core/io/config_file.cpp index 5684c82d1c..5c25cad770 100644 --- a/core/io/config_file.cpp +++ b/core/io/config_file.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/config_file.h b/core/io/config_file.h index d927779f9c..95a581d156 100644 --- a/core/io/config_file.h +++ b/core/io/config_file.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_buffered.cpp b/core/io/file_access_buffered.cpp index f72ad61da6..6ac065a19b 100644 --- a/core/io/file_access_buffered.cpp +++ b/core/io/file_access_buffered.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_buffered.h b/core/io/file_access_buffered.h index 4065d77c58..5e2939c1a2 100644 --- a/core/io/file_access_buffered.h +++ b/core/io/file_access_buffered.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_buffered_fa.h b/core/io/file_access_buffered_fa.h index c8cee04208..c17652080c 100644 --- a/core/io/file_access_buffered_fa.h +++ b/core/io/file_access_buffered_fa.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_compressed.cpp b/core/io/file_access_compressed.cpp index a52c6f79c9..87ead37b91 100644 --- a/core/io/file_access_compressed.cpp +++ b/core/io/file_access_compressed.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_compressed.h b/core/io/file_access_compressed.h index 773fed6a3a..0bb311faa8 100644 --- a/core/io/file_access_compressed.h +++ b/core/io/file_access_compressed.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_encrypted.cpp b/core/io/file_access_encrypted.cpp index c2e4e0f575..20b6fc81dc 100644 --- a/core/io/file_access_encrypted.cpp +++ b/core/io/file_access_encrypted.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_encrypted.h b/core/io/file_access_encrypted.h index c3be0f7de8..7a9f4ecdd8 100644 --- a/core/io/file_access_encrypted.h +++ b/core/io/file_access_encrypted.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_memory.cpp b/core/io/file_access_memory.cpp index c0acd36751..fc318b3dd2 100644 --- a/core/io/file_access_memory.cpp +++ b/core/io/file_access_memory.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_memory.h b/core/io/file_access_memory.h index 4db7811aaa..2db14db265 100644 --- a/core/io/file_access_memory.h +++ b/core/io/file_access_memory.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_network.cpp b/core/io/file_access_network.cpp index e653a924ba..1b09ac7208 100644 --- a/core/io/file_access_network.cpp +++ b/core/io/file_access_network.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_network.h b/core/io/file_access_network.h index 073b75a37b..e2da1d0893 100644 --- a/core/io/file_access_network.h +++ b/core/io/file_access_network.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_pack.cpp b/core/io/file_access_pack.cpp index 34d3eb5344..83ce03418a 100644 --- a/core/io/file_access_pack.cpp +++ b/core/io/file_access_pack.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -34,8 +34,6 @@ #include <stdio.h> -#define PACK_VERSION 1 - Error PackedData::add_pack(const String &p_path, bool p_replace_files) { for (int i = 0; i < sources.size(); i++) { @@ -140,16 +138,14 @@ bool PackedSourcePCK::try_open_pack(const String &p_path, bool p_replace_files) if (!f) return false; - //printf("try open %ls!\n", p_path.c_str()); - uint32_t magic = f->get_32(); - if (magic != 0x43504447) { + if (magic != PACK_HEADER_MAGIC) { //maybe at the end.... self contained exe f->seek_end(); f->seek(f->get_position() - 4); magic = f->get_32(); - if (magic != 0x43504447) { + if (magic != PACK_HEADER_MAGIC) { f->close(); memdelete(f); @@ -161,7 +157,7 @@ bool PackedSourcePCK::try_open_pack(const String &p_path, bool p_replace_files) f->seek(f->get_position() - ds - 8); magic = f->get_32(); - if (magic != 0x43504447) { + if (magic != PACK_HEADER_MAGIC) { f->close(); memdelete(f); @@ -172,9 +168,9 @@ bool PackedSourcePCK::try_open_pack(const String &p_path, bool p_replace_files) uint32_t version = f->get_32(); uint32_t ver_major = f->get_32(); uint32_t ver_minor = f->get_32(); - f->get_32(); // ver_rev + f->get_32(); // patch number, not used for validation. - if (version != PACK_VERSION) { + if (version != PACK_FORMAT_VERSION) { f->close(); memdelete(f); ERR_FAIL_V_MSG(false, "Pack version unsupported: " + itos(version) + "."); diff --git a/core/io/file_access_pack.h b/core/io/file_access_pack.h index 8c34069f3a..b6ea9c158f 100644 --- a/core/io/file_access_pack.h +++ b/core/io/file_access_pack.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -37,6 +37,11 @@ #include "core/os/file_access.h" #include "core/print_string.h" +// Godot's packed file magic header ("GDPC" in ASCII). +#define PACK_HEADER_MAGIC 0x43504447 +// The current packed file format version number. +#define PACK_FORMAT_VERSION 1 + class PackSource; class PackedData { diff --git a/core/io/file_access_zip.cpp b/core/io/file_access_zip.cpp index 3187f3bab6..680450ba43 100644 --- a/core/io/file_access_zip.cpp +++ b/core/io/file_access_zip.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/file_access_zip.h b/core/io/file_access_zip.h index cdd50f9eb3..d5ce7d7a8d 100644 --- a/core/io/file_access_zip.h +++ b/core/io/file_access_zip.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp index 170bef4430..541bd3a7c8 100644 --- a/core/io/http_client.cpp +++ b/core/io/http_client.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -98,6 +98,8 @@ Error HTTPClient::connect_to_host(const String &p_host, int p_port, bool p_ssl, void HTTPClient::set_connection(const Ref<StreamPeer> &p_connection) { + ERR_FAIL_COND_MSG(p_connection.is_null(), "Connection is not a reference to a valid StreamPeer object."); + close(); connection = p_connection; status = STATUS_CONNECTED; @@ -171,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; } @@ -226,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; } @@ -267,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); @@ -468,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; @@ -713,11 +724,16 @@ void HTTPClient::set_read_chunk_size(int p_size) { read_chunk_size = p_size; } +int HTTPClient::get_read_chunk_size() const { + return read_chunk_size; +} + HTTPClient::HTTPClient() { tcp_connection.instance(); resolving = IP::RESOLVER_INVALID_ID; status = STATUS_DISCONNECTED; + head_request = false; conn_port = -1; body_size = -1; chunked = false; @@ -816,6 +832,7 @@ void HTTPClient::_bind_methods() { ClassDB::bind_method(D_METHOD("get_response_body_length"), &HTTPClient::get_response_body_length); ClassDB::bind_method(D_METHOD("read_response_body_chunk"), &HTTPClient::read_response_body_chunk); ClassDB::bind_method(D_METHOD("set_read_chunk_size", "bytes"), &HTTPClient::set_read_chunk_size); + ClassDB::bind_method(D_METHOD("get_read_chunk_size"), &HTTPClient::get_read_chunk_size); ClassDB::bind_method(D_METHOD("set_blocking_mode", "enabled"), &HTTPClient::set_blocking_mode); ClassDB::bind_method(D_METHOD("is_blocking_mode_enabled"), &HTTPClient::is_blocking_mode_enabled); @@ -827,6 +844,7 @@ void HTTPClient::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "blocking_mode_enabled"), "set_blocking_mode", "is_blocking_mode_enabled"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "connection", PROPERTY_HINT_RESOURCE_TYPE, "StreamPeer", 0), "set_connection", "get_connection"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "read_chunk_size", PROPERTY_HINT_RANGE, "256,16777216"), "set_read_chunk_size", "get_read_chunk_size"); BIND_ENUM_CONSTANT(METHOD_GET); BIND_ENUM_CONSTANT(METHOD_HEAD); diff --git a/core/io/http_client.h b/core/io/http_client.h index 85ee1959a2..3796eb992c 100644 --- a/core/io/http_client.h +++ b/core/io/http_client.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -166,6 +166,7 @@ private: bool ssl_verify_host; bool blocking; bool handshaking; + bool head_request; Vector<uint8_t> response_str; @@ -220,6 +221,7 @@ public: bool is_blocking_mode_enabled() const; void set_read_chunk_size(int p_size); + int get_read_chunk_size() const; Error poll(); diff --git a/core/io/image_loader.cpp b/core/io/image_loader.cpp index 095c2abb54..05929ee8ed 100644 --- a/core/io/image_loader.cpp +++ b/core/io/image_loader.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/image_loader.h b/core/io/image_loader.h index af6b0551a3..d6dfd261ca 100644 --- a/core/io/image_loader.h +++ b/core/io/image_loader.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/ip.cpp b/core/io/ip.cpp index f1b6570799..ea791fb327 100644 --- a/core/io/ip.cpp +++ b/core/io/ip.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/ip.h b/core/io/ip.h index 59b18ef986..d434d02f9b 100644 --- a/core/io/ip.h +++ b/core/io/ip.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/ip_address.cpp b/core/io/ip_address.cpp index 0980027f42..f5fd8ae205 100644 --- a/core/io/ip_address.cpp +++ b/core/io/ip_address.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/ip_address.h b/core/io/ip_address.h index 3a5f87b617..89cf37ff8f 100644 --- a/core/io/ip_address.h +++ b/core/io/ip_address.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/json.cpp b/core/io/json.cpp index 4e729cb355..dbf1676e62 100644 --- a/core/io/json.cpp +++ b/core/io/json.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/json.h b/core/io/json.h index 7c6877c2cc..2e851afcf4 100644 --- a/core/io/json.h +++ b/core/io/json.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/logger.cpp b/core/io/logger.cpp index 9175f6a262..c3ea0d024e 100644 --- a/core/io/logger.cpp +++ b/core/io/logger.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/logger.h b/core/io/logger.h index ff5b8ce489..ab2f9d8bc7 100644 --- a/core/io/logger.h +++ b/core/io/logger.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp index 2ae542bca7..8c8f65c3a0 100644 --- a/core/io/marshalls.cpp +++ b/core/io/marshalls.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/marshalls.h b/core/io/marshalls.h index f361c29754..484f0755de 100644 --- a/core/io/marshalls.h +++ b/core/io/marshalls.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/multiplayer_api.cpp b/core/io/multiplayer_api.cpp index 1426dbbd4d..2708cb8c01 100644 --- a/core/io/multiplayer_api.cpp +++ b/core/io/multiplayer_api.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -139,6 +139,9 @@ void MultiplayerAPI::set_network_peer(const Ref<NetworkedMultiplayerPeer> &p_pee if (p_peer == network_peer) return; // Nothing to do + ERR_FAIL_COND_MSG(p_peer.is_valid() && p_peer->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_DISCONNECTED, + "Supplied NetworkedMultiplayerPeer must be connecting or connected."); + if (network_peer.is_valid()) { network_peer->disconnect("peer_connected", this, "_add_peer"); network_peer->disconnect("peer_disconnected", this, "_del_peer"); @@ -150,8 +153,6 @@ void MultiplayerAPI::set_network_peer(const Ref<NetworkedMultiplayerPeer> &p_pee network_peer = p_peer; - ERR_FAIL_COND_MSG(p_peer.is_valid() && p_peer->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_DISCONNECTED, "Supplied NetworkedNetworkPeer must be connecting or connected."); - if (network_peer.is_valid()) { network_peer->connect("peer_connected", this, "_add_peer"); network_peer->connect("peer_disconnected", this, "_del_peer"); diff --git a/core/io/multiplayer_api.h b/core/io/multiplayer_api.h index b824456e0f..c9f127b6b2 100644 --- a/core/io/multiplayer_api.h +++ b/core/io/multiplayer_api.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/net_socket.cpp b/core/io/net_socket.cpp index 08580356a7..23edbc7d64 100644 --- a/core/io/net_socket.cpp +++ b/core/io/net_socket.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/net_socket.h b/core/io/net_socket.h index 3bc1369487..710df2dd78 100644 --- a/core/io/net_socket.h +++ b/core/io/net_socket.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/networked_multiplayer_peer.cpp b/core/io/networked_multiplayer_peer.cpp index b5469e6e88..b2f810d212 100644 --- a/core/io/networked_multiplayer_peer.cpp +++ b/core/io/networked_multiplayer_peer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/networked_multiplayer_peer.h b/core/io/networked_multiplayer_peer.h index 91752fdc7e..bffd544589 100644 --- a/core/io/networked_multiplayer_peer.h +++ b/core/io/networked_multiplayer_peer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/packet_peer.cpp b/core/io/packet_peer.cpp index 23dfc58385..ae0520df6e 100644 --- a/core/io/packet_peer.cpp +++ b/core/io/packet_peer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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.h b/core/io/packet_peer.h index 6475e4fed9..f1870e8ef1 100644 --- a/core/io/packet_peer.h +++ b/core/io/packet_peer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/packet_peer_udp.cpp b/core/io/packet_peer_udp.cpp index 7e9471c053..5c98c4fcab 100644 --- a/core/io/packet_peer_udp.cpp +++ b/core/io/packet_peer_udp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..15b4d00c37 100644 --- a/core/io/packet_peer_udp.h +++ b/core/io/packet_peer_udp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..8bc73103e9 100644 --- a/core/io/pck_packer.cpp +++ b/core/io/pck_packer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -30,6 +30,7 @@ #include "pck_packer.h" +#include "core/io/file_access_pack.h" // PACK_HEADER_MAGIC, PACK_FORMAT_VERSION #include "core/os/file_access.h" #include "core/version.h" @@ -55,9 +56,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) { @@ -68,11 +69,11 @@ Error PCKPacker::pck_start(const String &p_file, int p_alignment) { alignment = p_alignment; - file->store_32(0x43504447); // MAGIC - file->store_32(1); // # version - file->store_32(VERSION_MAJOR); // # major - file->store_32(VERSION_MINOR); // # minor - file->store_32(0); // # revision + file->store_32(PACK_HEADER_MAGIC); + file->store_32(PACK_FORMAT_VERSION); + file->store_32(VERSION_MAJOR); + file->store_32(VERSION_MINOR); + file->store_32(VERSION_PATCH); for (int i = 0; i < 16; i++) { diff --git a/core/io/pck_packer.h b/core/io/pck_packer.h index 4df495b11f..6058de8345 100644 --- a/core/io/pck_packer.h +++ b/core/io/pck_packer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_format_binary.cpp b/core/io/resource_format_binary.cpp index e91dd579b5..272d5c1116 100644 --- a/core/io/resource_format_binary.cpp +++ b/core/io/resource_format_binary.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/resource_format_binary.h b/core/io/resource_format_binary.h index 27777c8e8b..7737006d10 100644 --- a/core/io/resource_format_binary.h +++ b/core/io/resource_format_binary.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/resource_importer.cpp b/core/io/resource_importer.cpp index 63d7ba547c..c2d90ed204 100644 --- a/core/io/resource_importer.cpp +++ b/core/io/resource_importer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/resource_importer.h b/core/io/resource_importer.h index 9cf298a7f5..4eb04586e6 100644 --- a/core/io/resource_importer.h +++ b/core/io/resource_importer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index f3eba44973..5d85634895 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/io/resource_loader.h b/core/io/resource_loader.h index 93df8cadb0..4e83427fae 100644 --- a/core/io/resource_loader.h +++ b/core/io/resource_loader.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/resource_saver.cpp b/core/io/resource_saver.cpp index 7aa8732366..b468685e4d 100644 --- a/core/io/resource_saver.cpp +++ b/core/io/resource_saver.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/resource_saver.h b/core/io/resource_saver.h index 20e05d827a..e749f54cfa 100644 --- a/core/io/resource_saver.h +++ b/core/io/resource_saver.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/stream_peer.cpp b/core/io/stream_peer.cpp index f19e055b64..dee82de691 100644 --- a/core/io/stream_peer.cpp +++ b/core/io/stream_peer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/stream_peer.h b/core/io/stream_peer.h index 65e70995ad..d6ce7ddc16 100644 --- a/core/io/stream_peer.h +++ b/core/io/stream_peer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/stream_peer_ssl.cpp b/core/io/stream_peer_ssl.cpp index f2eaf57acc..03ca726619 100644 --- a/core/io/stream_peer_ssl.cpp +++ b/core/io/stream_peer_ssl.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/stream_peer_ssl.h b/core/io/stream_peer_ssl.h index dedc35b9ac..de3cb09c60 100644 --- a/core/io/stream_peer_ssl.h +++ b/core/io/stream_peer_ssl.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/stream_peer_tcp.cpp b/core/io/stream_peer_tcp.cpp index b9c5896b24..044431743a 100644 --- a/core/io/stream_peer_tcp.cpp +++ b/core/io/stream_peer_tcp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/stream_peer_tcp.h b/core/io/stream_peer_tcp.h index 321fb3a6c8..f16d4a2bd4 100644 --- a/core/io/stream_peer_tcp.h +++ b/core/io/stream_peer_tcp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/tcp_server.cpp b/core/io/tcp_server.cpp index a2756164bc..69c2ba7943 100644 --- a/core/io/tcp_server.cpp +++ b/core/io/tcp_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/tcp_server.h b/core/io/tcp_server.h index ef64044599..ca52b13ba1 100644 --- a/core/io/tcp_server.h +++ b/core/io/tcp_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/translation_loader_po.cpp b/core/io/translation_loader_po.cpp index 9b6888ac21..4f7eeddc43 100644 --- a/core/io/translation_loader_po.cpp +++ b/core/io/translation_loader_po.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/translation_loader_po.h b/core/io/translation_loader_po.h index 9d9c5d16ee..47e64276ca 100644 --- a/core/io/translation_loader_po.h +++ b/core/io/translation_loader_po.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/xml_parser.cpp b/core/io/xml_parser.cpp index 575c78734f..53e7da91a7 100644 --- a/core/io/xml_parser.cpp +++ b/core/io/xml_parser.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/xml_parser.h b/core/io/xml_parser.h index 0df2d74ab4..47e276da28 100644 --- a/core/io/xml_parser.h +++ b/core/io/xml_parser.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/zip_io.cpp b/core/io/zip_io.cpp index 8f3e0b49ec..582b7c906b 100644 --- a/core/io/zip_io.cpp +++ b/core/io/zip_io.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/io/zip_io.h b/core/io/zip_io.h index 4eb1c8b46c..ba2065b5d1 100644 --- a/core/io/zip_io.h +++ b/core/io/zip_io.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/list.h b/core/list.h index c46888e01c..0796410a84 100644 --- a/core/list.h +++ b/core/list.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/map.h b/core/map.h index 77e73d70cb..b97f735f1b 100644 --- a/core/map.h +++ b/core/map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp index bfa8b90344..73f190a330 100644 --- a/core/math/a_star.cpp +++ b/core/math/a_star.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/a_star.h b/core/math/a_star.h index 8ff62e646b..0b10976932 100644 --- a/core/math/a_star.h +++ b/core/math/a_star.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/aabb.cpp b/core/math/aabb.cpp index 27da061274..19d60fea72 100644 --- a/core/math/aabb.cpp +++ b/core/math/aabb.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/aabb.h b/core/math/aabb.h index c3ce33c6f4..d9d50c7139 100644 --- a/core/math/aabb.h +++ b/core/math/aabb.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/audio_frame.cpp b/core/math/audio_frame.cpp index 2496a70890..c565ea9b13 100644 --- a/core/math/audio_frame.cpp +++ b/core/math/audio_frame.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/audio_frame.h b/core/math/audio_frame.h index 98e4e33021..6477d029d5 100644 --- a/core/math/audio_frame.h +++ b/core/math/audio_frame.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/basis.cpp b/core/math/basis.cpp index d77501c0f6..d15cb71db9 100644 --- a/core/math/basis.cpp +++ b/core/math/basis.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/basis.h b/core/math/basis.h index 9b2e38b3d3..6c3a939d70 100644 --- a/core/math/basis.h +++ b/core/math/basis.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/bsp_tree.cpp b/core/math/bsp_tree.cpp index ece293d036..f155d626d7 100644 --- a/core/math/bsp_tree.cpp +++ b/core/math/bsp_tree.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/bsp_tree.h b/core/math/bsp_tree.h index 90b5e8322a..1c8ea380ff 100644 --- a/core/math/bsp_tree.h +++ b/core/math/bsp_tree.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/camera_matrix.cpp b/core/math/camera_matrix.cpp index b9b0f4ac54..165bb9f823 100644 --- a/core/math/camera_matrix.cpp +++ b/core/math/camera_matrix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/camera_matrix.h b/core/math/camera_matrix.h index 63cc88553d..59e34c0855 100644 --- a/core/math/camera_matrix.h +++ b/core/math/camera_matrix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/delaunay.h b/core/math/delaunay.h index 89a34de082..29f84210d2 100644 --- a/core/math/delaunay.h +++ b/core/math/delaunay.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/disjoint_set.cpp b/core/math/disjoint_set.cpp index c9d47aa0ae..a508151ad3 100644 --- a/core/math/disjoint_set.cpp +++ b/core/math/disjoint_set.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/disjoint_set.h b/core/math/disjoint_set.h index c9b3d0b65d..fb89941ce4 100644 --- a/core/math/disjoint_set.h +++ b/core/math/disjoint_set.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/expression.cpp b/core/math/expression.cpp index 46f81ce5c3..655098376c 100644 --- a/core/math/expression.cpp +++ b/core/math/expression.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -98,6 +98,7 @@ const char *Expression::func_name[Expression::FUNC_MAX] = { "typeof", "type_exists", "char", + "ord", "str", "print", "printerr", @@ -164,6 +165,7 @@ int Expression::get_func_argument_count(BuiltinFunc p_func) { case OBJ_WEAKREF: case TYPE_OF: case TEXT_CHAR: + case TEXT_ORD: case TEXT_STR: case TEXT_PRINT: case TEXT_PRINTERR: @@ -676,6 +678,32 @@ void Expression::exec_func(BuiltinFunc p_func, const Variant **p_inputs, Variant *r_return = String(result); } break; + case TEXT_ORD: { + + if (p_inputs[0]->get_type() != Variant::STRING) { + + r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument = 0; + r_error.expected = Variant::STRING; + + return; + } + + String str = *p_inputs[0]; + + if (str.length() != 1) { + + r_error_str = RTR("Expected a string of length 1 (a character)."); + r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT; + r_error.argument = 0; + r_error.expected = Variant::STRING; + + return; + } + + *r_return = str.get(0); + + } break; case TEXT_STR: { String str = *p_inputs[0]; diff --git a/core/math/expression.h b/core/math/expression.h index 833220592c..c5b9d79a16 100644 --- a/core/math/expression.h +++ b/core/math/expression.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -97,6 +97,7 @@ public: TYPE_OF, TYPE_EXISTS, TEXT_CHAR, + TEXT_ORD, TEXT_STR, TEXT_PRINT, TEXT_PRINTERR, diff --git a/core/math/face3.cpp b/core/math/face3.cpp index 666d214f98..74331b391f 100644 --- a/core/math/face3.cpp +++ b/core/math/face3.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/face3.h b/core/math/face3.h index 184e80ff77..f4b8721caa 100644 --- a/core/math/face3.h +++ b/core/math/face3.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/geometry.cpp b/core/math/geometry.cpp index e0ead8446f..7eb48290a8 100644 --- a/core/math/geometry.cpp +++ b/core/math/geometry.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..b9193242bc 100644 --- a/core/math/geometry.h +++ b/core/math/geometry.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/math/math_defs.h b/core/math/math_defs.h index c54d3cc96f..4928c96abd 100644 --- a/core/math/math_defs.h +++ b/core/math/math_defs.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/math_fieldwise.cpp b/core/math/math_fieldwise.cpp index f65f504f4c..a47d4ef7ad 100644 --- a/core/math/math_fieldwise.cpp +++ b/core/math/math_fieldwise.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/math_fieldwise.h b/core/math/math_fieldwise.h index c245928f56..c1ee9ec8f0 100644 --- a/core/math/math_fieldwise.h +++ b/core/math/math_fieldwise.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/math_funcs.cpp b/core/math/math_funcs.cpp index 50fcdb2c13..7417e64ac1 100644 --- a/core/math/math_funcs.cpp +++ b/core/math/math_funcs.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h index a94b27fcc5..3e1eb14a6a 100644 --- a/core/math/math_funcs.h +++ b/core/math/math_funcs.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/octree.h b/core/math/octree.h index db15c8a1f8..5478bdaf77 100644 --- a/core/math/octree.h +++ b/core/math/octree.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/plane.cpp b/core/math/plane.cpp index d55957cd0a..a3818698bc 100644 --- a/core/math/plane.cpp +++ b/core/math/plane.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/plane.h b/core/math/plane.h index 9abf24fbba..771c8fc705 100644 --- a/core/math/plane.h +++ b/core/math/plane.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/quat.cpp b/core/math/quat.cpp index a4f91844b9..418abf4384 100644 --- a/core/math/quat.cpp +++ b/core/math/quat.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/quat.h b/core/math/quat.h index 27885f4152..c337192a5b 100644 --- a/core/math/quat.h +++ b/core/math/quat.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/quick_hull.cpp b/core/math/quick_hull.cpp index f71f00afd6..63dd18091f 100644 --- a/core/math/quick_hull.cpp +++ b/core/math/quick_hull.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/quick_hull.h b/core/math/quick_hull.h index a445a47cbe..aea9ffad8b 100644 --- a/core/math/quick_hull.h +++ b/core/math/quick_hull.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/random_number_generator.cpp b/core/math/random_number_generator.cpp index 54a88d5cd8..1a1bffb562 100644 --- a/core/math/random_number_generator.cpp +++ b/core/math/random_number_generator.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/random_number_generator.h b/core/math/random_number_generator.h index 9b54ea9b2e..e7f188bb42 100644 --- a/core/math/random_number_generator.h +++ b/core/math/random_number_generator.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/random_pcg.cpp b/core/math/random_pcg.cpp index 00c0af515d..02257c38d9 100644 --- a/core/math/random_pcg.cpp +++ b/core/math/random_pcg.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/random_pcg.h b/core/math/random_pcg.h index aa25914638..ac65ce3509 100644 --- a/core/math/random_pcg.h +++ b/core/math/random_pcg.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/rect2.cpp b/core/math/rect2.cpp index e31776672e..12b9904c88 100644 --- a/core/math/rect2.cpp +++ b/core/math/rect2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/rect2.h b/core/math/rect2.h index 71221ffb1b..9017377770 100644 --- a/core/math/rect2.h +++ b/core/math/rect2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/transform.cpp b/core/math/transform.cpp index 5dcc6ab9f0..9dad3262d2 100644 --- a/core/math/transform.cpp +++ b/core/math/transform.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/transform.h b/core/math/transform.h index da65a183cf..ad397d9c09 100644 --- a/core/math/transform.h +++ b/core/math/transform.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/transform_2d.cpp b/core/math/transform_2d.cpp index a1c0814637..f28b664e46 100644 --- a/core/math/transform_2d.cpp +++ b/core/math/transform_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/transform_2d.h b/core/math/transform_2d.h index 0ec39a1765..367f697ccf 100644 --- a/core/math/transform_2d.h +++ b/core/math/transform_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/triangle_mesh.cpp b/core/math/triangle_mesh.cpp index 546981be44..53d4ea0a96 100644 --- a/core/math/triangle_mesh.cpp +++ b/core/math/triangle_mesh.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/triangle_mesh.h b/core/math/triangle_mesh.h index 8b01080852..575a78b0b5 100644 --- a/core/math/triangle_mesh.h +++ b/core/math/triangle_mesh.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/triangulate.cpp b/core/math/triangulate.cpp index be409e62a7..cbcb232745 100644 --- a/core/math/triangulate.cpp +++ b/core/math/triangulate.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/triangulate.h b/core/math/triangulate.h index 2437e2b0f0..f9bcb37141 100644 --- a/core/math/triangulate.h +++ b/core/math/triangulate.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/vector2.cpp b/core/math/vector2.cpp index fbedeb8eb2..b306ad3d09 100644 --- a/core/math/vector2.cpp +++ b/core/math/vector2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/vector2.h b/core/math/vector2.h index 7fcaadab00..351c974cf3 100644 --- a/core/math/vector2.h +++ b/core/math/vector2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/vector3.cpp b/core/math/vector3.cpp index e3211c8fb1..71ff79c0fc 100644 --- a/core/math/vector3.cpp +++ b/core/math/vector3.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/math/vector3.h b/core/math/vector3.h index 43fa09ffac..9bf7c41729 100644 --- a/core/math/vector3.h +++ b/core/math/vector3.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/message_queue.cpp b/core/message_queue.cpp index a76b5167b6..d130934826 100644 --- a/core/message_queue.cpp +++ b/core/message_queue.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/message_queue.h b/core/message_queue.h index 026d17ad3f..e9a92ff5b7 100644 --- a/core/message_queue.h +++ b/core/message_queue.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/method_bind.cpp b/core/method_bind.cpp index 72b0030ce8..2c9d0cee2f 100644 --- a/core/method_bind.cpp +++ b/core/method_bind.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/method_bind.h b/core/method_bind.h index 7bb75e778f..1860d227f7 100644 --- a/core/method_bind.h +++ b/core/method_bind.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -344,7 +344,7 @@ public: return (instance->*call_method)(p_args, p_arg_count, r_error); } - void set_method_info(const MethodInfo &p_info) { + void set_method_info(const MethodInfo &p_info, bool p_return_nil_is_variant) { set_argument_count(p_info.arguments.size()); #ifdef DEBUG_METHODS_ENABLED @@ -364,7 +364,9 @@ public: } argument_types = at; arguments = p_info; - arguments.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT; + if (p_return_nil_is_variant) { + arguments.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT; + } #endif } @@ -387,11 +389,11 @@ public: }; template <class T> -MethodBind *create_vararg_method_bind(Variant (T::*p_method)(const Variant **, int, Variant::CallError &), const MethodInfo &p_info) { +MethodBind *create_vararg_method_bind(Variant (T::*p_method)(const Variant **, int, Variant::CallError &), const MethodInfo &p_info, bool p_return_nil_is_variant) { MethodBindVarArg<T> *a = memnew((MethodBindVarArg<T>)); a->set_method(p_method); - a->set_method_info(p_info); + a->set_method_info(p_info, p_return_nil_is_variant); return a; } diff --git a/core/method_ptrcall.h b/core/method_ptrcall.h index e06081d24a..0f2458d982 100644 --- a/core/method_ptrcall.h +++ b/core/method_ptrcall.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/node_path.cpp b/core/node_path.cpp index 970ed100fe..e844cd7c27 100644 --- a/core/node_path.cpp +++ b/core/node_path.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/node_path.h b/core/node_path.h index 1b21c4ef1c..5439658910 100644 --- a/core/node_path.h +++ b/core/node_path.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/oa_hash_map.h b/core/oa_hash_map.h index 1a466e57f4..7407c52816 100644 --- a/core/oa_hash_map.h +++ b/core/oa_hash_map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/object.cpp b/core/object.cpp index ed3ae4f25d..35ccc38d4e 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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 @@ -1515,9 +1517,11 @@ void Object::_disconnect(const StringName &p_signal, Object *p_to_object, const ERR_FAIL_NULL(p_to_object); Signal *s = signal_map.getptr(p_signal); - ERR_FAIL_COND_MSG(!s, "Nonexistent signal: " + p_signal + "."); + ERR_FAIL_COND_MSG(!s, vformat("Nonexistent signal '%s' in %s.", p_signal, to_string())); - 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, + vformat("Attempt to disconnect %s signal '%s' while in emission callback '%s' (in target %s). Use CONNECT_DEFERRED (to be able to safely disconnect) or CONNECT_ONESHOT (for automatic disconnection) as connection flags.", + to_string(), p_signal, p_to_method, p_to_object->to_string())); Signal::Target target(p_to_object->get_instance_id(), p_to_method); @@ -1684,7 +1688,7 @@ void Object::_bind_methods() { mi.name = "emit_signal"; mi.arguments.push_back(PropertyInfo(Variant::STRING, "signal")); - ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "emit_signal", &Object::_emit_signal, mi); + ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "emit_signal", &Object::_emit_signal, mi, varray(), false); } { @@ -1700,7 +1704,7 @@ void Object::_bind_methods() { mi.name = "call_deferred"; mi.arguments.push_back(PropertyInfo(Variant::STRING, "method")); - ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "call_deferred", &Object::_call_deferred_bind, mi); + ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "call_deferred", &Object::_call_deferred_bind, mi, varray(), false); } ClassDB::bind_method(D_METHOD("set_deferred", "property", "value"), &Object::set_deferred); @@ -1948,7 +1952,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/object.h b/core/object.h index ac8620757c..ad1865da7b 100644 --- a/core/object.h +++ b/core/object.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/ordered_hash_map.h b/core/ordered_hash_map.h index 2c18de92be..a10cf06b75 100644 --- a/core/ordered_hash_map.h +++ b/core/ordered_hash_map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/copymem.h b/core/os/copymem.h index cc68983d4d..1d6631ddb8 100644 --- a/core/os/copymem.h +++ b/core/os/copymem.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/dir_access.cpp b/core/os/dir_access.cpp index e7496055ec..0477db82be 100644 --- a/core/os/dir_access.cpp +++ b/core/os/dir_access.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/dir_access.h b/core/os/dir_access.h index d3eb1e13f6..55a6d53f72 100644 --- a/core/os/dir_access.h +++ b/core/os/dir_access.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp index 738e597730..2917351a2f 100644 --- a/core/os/file_access.cpp +++ b/core/os/file_access.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/file_access.h b/core/os/file_access.h index 4930eae35a..36a947c691 100644 --- a/core/os/file_access.h +++ b/core/os/file_access.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/input.cpp b/core/os/input.cpp index 51cb41b184..6f0392fec9 100644 --- a/core/os/input.cpp +++ b/core/os/input.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/input.h b/core/os/input.h index a12ded176b..8df3b1c5a9 100644 --- a/core/os/input.h +++ b/core/os/input.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp index f09a904953..2e863c9c76 100644 --- a/core/os/input_event.cpp +++ b/core/os/input_event.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/input_event.h b/core/os/input_event.h index a4db618bfe..c6b04bcfa5 100644 --- a/core/os/input_event.h +++ b/core/os/input_event.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp index 311025a5fd..7141423c77 100644 --- a/core/os/keyboard.cpp +++ b/core/os/keyboard.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/keyboard.h b/core/os/keyboard.h index 5c8a2e90e9..bac32e01dd 100644 --- a/core/os/keyboard.h +++ b/core/os/keyboard.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/main_loop.cpp b/core/os/main_loop.cpp index 146a301995..5ecdd74a4b 100644 --- a/core/os/main_loop.cpp +++ b/core/os/main_loop.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/main_loop.h b/core/os/main_loop.h index aca920efcb..b1120aee8a 100644 --- a/core/os/main_loop.h +++ b/core/os/main_loop.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/memory.cpp b/core/os/memory.cpp index f4ed1d6e27..39d3fce910 100644 --- a/core/os/memory.cpp +++ b/core/os/memory.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/memory.h b/core/os/memory.h index a68a359546..e45f97e0c8 100644 --- a/core/os/memory.h +++ b/core/os/memory.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/midi_driver.cpp b/core/os/midi_driver.cpp index 7cb7ae130f..614ce99b2e 100644 --- a/core/os/midi_driver.cpp +++ b/core/os/midi_driver.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..26dbdce151 100644 --- a/core/os/midi_driver.h +++ b/core/os/midi_driver.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/mutex.cpp b/core/os/mutex.cpp index 1ae7e1f877..f099b4319a 100644 --- a/core/os/mutex.cpp +++ b/core/os/mutex.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/mutex.h b/core/os/mutex.h index 17367f32f2..db82eb64f5 100644 --- a/core/os/mutex.h +++ b/core/os/mutex.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/os.cpp b/core/os/os.cpp index 25889de1b3..edb2416b67 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..593ea2b645 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; } }; @@ -217,6 +222,7 @@ public: virtual bool is_window_maximized() const { return true; } virtual void set_window_always_on_top(bool p_enabled) {} virtual bool is_window_always_on_top() const { return false; } + virtual bool is_window_focused() const { return true; } virtual void set_console_visible(bool p_enabled) {} virtual bool is_console_visible() const { return false; } virtual void request_attention() {} @@ -507,6 +513,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/os/rw_lock.cpp b/core/os/rw_lock.cpp index b70d5d73a0..75683962af 100644 --- a/core/os/rw_lock.cpp +++ b/core/os/rw_lock.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/rw_lock.h b/core/os/rw_lock.h index 8632e84e61..21648b6cbc 100644 --- a/core/os/rw_lock.h +++ b/core/os/rw_lock.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/semaphore.cpp b/core/os/semaphore.cpp index 5d3100760d..b2ba9716f0 100644 --- a/core/os/semaphore.cpp +++ b/core/os/semaphore.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/semaphore.h b/core/os/semaphore.h index a0862dce84..9f3c0f549c 100644 --- a/core/os/semaphore.h +++ b/core/os/semaphore.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/thread.cpp b/core/os/thread.cpp index e00d20a9fe..7f6148057d 100644 --- a/core/os/thread.cpp +++ b/core/os/thread.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/thread.h b/core/os/thread.h index 169280a208..0803fd1190 100644 --- a/core/os/thread.h +++ b/core/os/thread.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/thread_dummy.cpp b/core/os/thread_dummy.cpp index 63f724f81c..d4f65b0312 100644 --- a/core/os/thread_dummy.cpp +++ b/core/os/thread_dummy.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/thread_dummy.h b/core/os/thread_dummy.h index 4a7785484b..c8b52ae4dd 100644 --- a/core/os/thread_dummy.h +++ b/core/os/thread_dummy.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/thread_safe.cpp b/core/os/thread_safe.cpp index 9eecd1c3dd..d8d783ae16 100644 --- a/core/os/thread_safe.cpp +++ b/core/os/thread_safe.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/thread_safe.h b/core/os/thread_safe.h index ddbf17da7f..a4238a9225 100644 --- a/core/os/thread_safe.h +++ b/core/os/thread_safe.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/os/threaded_array_processor.h b/core/os/threaded_array_processor.h index 58c8773d7f..9dcd6ceece 100644 --- a/core/os/threaded_array_processor.h +++ b/core/os/threaded_array_processor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/packed_data_container.cpp b/core/packed_data_container.cpp index 7afaf7f0f1..f8f51c4c75 100644 --- a/core/packed_data_container.cpp +++ b/core/packed_data_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/packed_data_container.h b/core/packed_data_container.h index 25c83548be..b534169077 100644 --- a/core/packed_data_container.h +++ b/core/packed_data_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/pair.h b/core/pair.h index 9afaa726cb..26a317e9d4 100644 --- a/core/pair.h +++ b/core/pair.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/path_remap.cpp b/core/path_remap.cpp index 548c9c85d7..e1708e0350 100644 --- a/core/path_remap.cpp +++ b/core/path_remap.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/path_remap.h b/core/path_remap.h index 3829fa5a1f..1580e88625 100644 --- a/core/path_remap.h +++ b/core/path_remap.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/pool_allocator.cpp b/core/pool_allocator.cpp index 6c1f2756f2..5a83c3eeb4 100644 --- a/core/pool_allocator.cpp +++ b/core/pool_allocator.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/pool_allocator.h b/core/pool_allocator.h index 282e0bd634..e34f5b1104 100644 --- a/core/pool_allocator.h +++ b/core/pool_allocator.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/pool_vector.cpp b/core/pool_vector.cpp index 50ea898bef..d8d53f07e9 100644 --- a/core/pool_vector.cpp +++ b/core/pool_vector.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/pool_vector.h b/core/pool_vector.h index a698e72e18..01c40a237d 100644 --- a/core/pool_vector.h +++ b/core/pool_vector.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/print_string.cpp b/core/print_string.cpp index 3271744af3..551b149334 100644 --- a/core/print_string.cpp +++ b/core/print_string.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/print_string.h b/core/print_string.h index 6fcffd417b..c2cf1c293b 100644 --- a/core/print_string.h +++ b/core/print_string.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/project_settings.cpp b/core/project_settings.cpp index ba5cdd782f..a30967dcca 100644 --- a/core/project_settings.cpp +++ b/core/project_settings.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -107,7 +107,11 @@ String ProjectSettings::localize_path(const String &p_path) const { if (plocal == "") { return ""; }; - return plocal + path.substr((sep + 1), path.size() - (sep + 1)); + // Only strip the starting '/' from 'path' if its parent ('plocal') ends with '/' + if (plocal[plocal.length() - 1] == '/') { + sep += 1; + } + return plocal + path.substr(sep, path.size() - sep); }; } @@ -769,10 +773,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/project_settings.h b/core/project_settings.h index b32470361b..ed153bdc20 100644 --- a/core/project_settings.h +++ b/core/project_settings.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/ref_ptr.cpp b/core/ref_ptr.cpp index 6da73ca41a..7e35bcc56c 100644 --- a/core/ref_ptr.cpp +++ b/core/ref_ptr.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/ref_ptr.h b/core/ref_ptr.h index 320cf35609..4736106b4f 100644 --- a/core/ref_ptr.h +++ b/core/ref_ptr.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/reference.cpp b/core/reference.cpp index 92bbdacd5d..b24b2a3ec0 100644 --- a/core/reference.cpp +++ b/core/reference.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/reference.h b/core/reference.h index b8d00a94ad..d2314005b9 100644 --- a/core/reference.h +++ b/core/reference.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp index efc77bde48..91d9289563 100644 --- a/core/register_core_types.cpp +++ b/core/register_core_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/register_core_types.h b/core/register_core_types.h index 2d397b55f9..22c0025f0c 100644 --- a/core/register_core_types.h +++ b/core/register_core_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/resource.cpp b/core/resource.cpp index e0a40b6f3c..30e09716aa 100644 --- a/core/resource.cpp +++ b/core/resource.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -68,7 +68,10 @@ void Resource::set_path(const String &p_path, bool p_take_over) { if (p_take_over) { ResourceCache::lock->write_lock(); - ResourceCache::resources.get(p_path)->set_name(""); + Resource **res = ResourceCache::resources.getptr(p_path); + if (res) { + (*res)->set_name(""); + } ResourceCache::lock->write_unlock(); } else { ResourceCache::lock->read_lock(); diff --git a/core/resource.h b/core/resource.h index 3e1fe07137..00d330a094 100644 --- a/core/resource.h +++ b/core/resource.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/rid.cpp b/core/rid.cpp index 73cf7f24bb..727658314f 100644 --- a/core/rid.cpp +++ b/core/rid.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/rid.h b/core/rid.h index 381eee645b..7e12409181 100644 --- a/core/rid.h +++ b/core/rid.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/ring_buffer.h b/core/ring_buffer.h index e10cb8b5f8..f5f43607fe 100644 --- a/core/ring_buffer.h +++ b/core/ring_buffer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/safe_refcount.cpp b/core/safe_refcount.cpp index 8b0b3c3151..e4604faa09 100644 --- a/core/safe_refcount.cpp +++ b/core/safe_refcount.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/safe_refcount.h b/core/safe_refcount.h index 47161eed57..887282f556 100644 --- a/core/safe_refcount.h +++ b/core/safe_refcount.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/script_debugger_local.cpp b/core/script_debugger_local.cpp index e61f9f7158..c64638e7ce 100644 --- a/core/script_debugger_local.cpp +++ b/core/script_debugger_local.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/script_debugger_local.h b/core/script_debugger_local.h index b3aed5e358..7a64400191 100644 --- a/core/script_debugger_local.h +++ b/core/script_debugger_local.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/script_language.cpp b/core/script_language.cpp index cbe4681eca..7392e7a0af 100644 --- a/core/script_language.cpp +++ b/core/script_language.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/script_language.h b/core/script_language.h index f90bb4b6c3..22f83080bc 100644 --- a/core/script_language.h +++ b/core/script_language.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/self_list.h b/core/self_list.h index 07abcd1d53..1cd7bb44d8 100644 --- a/core/self_list.h +++ b/core/self_list.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/set.h b/core/set.h index 68431c294a..aee3f4bc7a 100644 --- a/core/set.h +++ b/core/set.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/simple_type.h b/core/simple_type.h index d5aa47d54f..f637504db8 100644 --- a/core/simple_type.h +++ b/core/simple_type.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/sort_array.h b/core/sort_array.h index d330e0c647..8aff0fb502 100644 --- a/core/sort_array.h +++ b/core/sort_array.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/string_buffer.h b/core/string_buffer.h index 835991bc87..d80a975c7f 100644 --- a/core/string_buffer.h +++ b/core/string_buffer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/string_builder.cpp b/core/string_builder.cpp index 22eed70f8b..46c7e1c53f 100644 --- a/core/string_builder.cpp +++ b/core/string_builder.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/string_builder.h b/core/string_builder.h index 0c4985d230..dd8a154890 100644 --- a/core/string_builder.h +++ b/core/string_builder.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/string_name.cpp b/core/string_name.cpp index b1a8bfb849..6f7b10c5fe 100644 --- a/core/string_name.cpp +++ b/core/string_name.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/string_name.h b/core/string_name.h index 6dd960abd5..4096b8f650 100644 --- a/core/string_name.h +++ b/core/string_name.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/translation.cpp b/core/translation.cpp index 4a1ac26433..02297cffc8 100644 --- a/core/translation.cpp +++ b/core/translation.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..8f56b7271d 100644 --- a/core/translation.h +++ b/core/translation.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/type_info.h b/core/type_info.h index 61ec7b2f20..c9b2055241 100644 --- a/core/type_info.h +++ b/core/type_info.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/typedefs.h b/core/typedefs.h index 42f34c73cb..0bb80cb2dd 100644 --- a/core/typedefs.h +++ b/core/typedefs.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/ucaps.h b/core/ucaps.h index ae5729a53d..013f264d2f 100644 --- a/core/ucaps.h +++ b/core/ucaps.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp index f0c2b8eb9b..5d1144e1f5 100644 --- a/core/undo_redo.cpp +++ b/core/undo_redo.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -520,7 +520,7 @@ void UndoRedo::_bind_methods() { mi.arguments.push_back(PropertyInfo(Variant::OBJECT, "object")); mi.arguments.push_back(PropertyInfo(Variant::STRING, "method")); - ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "add_do_method", &UndoRedo::_add_do_method, mi); + ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "add_do_method", &UndoRedo::_add_do_method, mi, varray(), false); } { @@ -529,7 +529,7 @@ void UndoRedo::_bind_methods() { mi.arguments.push_back(PropertyInfo(Variant::OBJECT, "object")); mi.arguments.push_back(PropertyInfo(Variant::STRING, "method")); - ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "add_undo_method", &UndoRedo::_add_undo_method, mi); + ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "add_undo_method", &UndoRedo::_add_undo_method, mi, varray(), false); } ClassDB::bind_method(D_METHOD("add_do_property", "object", "property", "value"), &UndoRedo::add_do_property); diff --git a/core/undo_redo.h b/core/undo_redo.h index 276d00d9af..bb9a4d1642 100644 --- a/core/undo_redo.h +++ b/core/undo_redo.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/ustring.cpp b/core/ustring.cpp index 25930db201..8a1fbfd383 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..5bf73001aa 100644 --- a/core/ustring.h +++ b/core/ustring.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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.cpp b/core/variant.cpp index e0cc6685f4..f4e4cd5341 100644 --- a/core/variant.cpp +++ b/core/variant.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/variant.h b/core/variant.h index c4f69c3e8d..06be914408 100644 --- a/core/variant.h +++ b/core/variant.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 6e593a308d..6b5b947185 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..6caa224cfe 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..6ca9d6c246 100644 --- a/core/variant_parser.cpp +++ b/core/variant_parser.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/core/variant_parser.h b/core/variant_parser.h index ac4c96a8de..89db3ada0d 100644 --- a/core/variant_parser.h +++ b/core/variant_parser.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/vector.h b/core/vector.h index e6bb4a96fc..44add2c4d7 100644 --- a/core/vector.h +++ b/core/vector.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -63,7 +63,7 @@ private: CowData<T> _cowdata; public: - bool push_back(const T &p_elem); + bool push_back(T p_elem); void remove(int p_index) { _cowdata.remove(p_index); } void erase(const T &p_val) { @@ -83,10 +83,10 @@ public: _FORCE_INLINE_ int size() const { return _cowdata.size(); } Error resize(int p_size) { return _cowdata.resize(p_size); } _FORCE_INLINE_ const T &operator[](int p_index) const { return _cowdata.get(p_index); } - Error insert(int p_pos, const T &p_val) { return _cowdata.insert(p_pos, p_val); } + Error insert(int p_pos, T p_val) { return _cowdata.insert(p_pos, p_val); } int find(const T &p_val, int p_from = 0) const { return _cowdata.find(p_val, p_from); } - void append_array(const Vector<T> &p_other); + void append_array(Vector<T> p_other); template <class C> void sort_custom() { @@ -136,7 +136,7 @@ void Vector<T>::invert() { } template <class T> -void Vector<T>::append_array(const Vector<T> &p_other) { +void Vector<T>::append_array(Vector<T> p_other) { const int ds = p_other.size(); if (ds == 0) return; @@ -147,7 +147,7 @@ void Vector<T>::append_array(const Vector<T> &p_other) { } template <class T> -bool Vector<T>::push_back(const T &p_elem) { +bool Vector<T>::push_back(T p_elem) { Error err = resize(size() + 1); ERR_FAIL_COND_V(err, true); diff --git a/core/version.h b/core/version.h index 05fec9d0a6..42c85c1b13 100644 --- a/core/version.h +++ b/core/version.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -28,6 +28,9 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ +#ifndef GODOT_VERSION_H +#define GODOT_VERSION_H + #include "core/version_generated.gen.h" // Godot versions are of the form <major>.<minor> for the initial release, @@ -38,18 +41,18 @@ // forward-compatible. // Example: "3.1" #define VERSION_BRANCH "" _MKSTR(VERSION_MAJOR) "." _MKSTR(VERSION_MINOR) -#ifdef VERSION_PATCH +#if VERSION_PATCH // Example: "3.1.4" #define VERSION_NUMBER "" VERSION_BRANCH "." _MKSTR(VERSION_PATCH) +#else // patch is 0, we don't include it in the "pretty" version number. +// Example: "3.1" instead of "3.1.0" +#define VERSION_NUMBER "" VERSION_BRANCH +#endif // VERSION_PATCH + // Version number encoded as hexadecimal int with one byte for each number, // for easy comparison from code. // Example: 3.1.4 will be 0x030104, making comparison easy from script. #define VERSION_HEX 0x10000 * VERSION_MAJOR + 0x100 * VERSION_MINOR + VERSION_PATCH -#else -// Example: "3.1" -#define VERSION_NUMBER "" VERSION_BRANCH -#define VERSION_HEX 0x10000 * VERSION_MAJOR + 0x100 * VERSION_MINOR -#endif // VERSION_PATCH // Describes the full configuration of that Godot version, including the version number, // the status (beta, stable, etc.) and potential module-specific features (e.g. mono). @@ -64,3 +67,5 @@ // Same as above, but prepended with Godot's name and a cosmetic "v" for "version". // Example: "Godot v3.1.4.stable.official.mono" #define VERSION_FULL_NAME "" VERSION_NAME " v" VERSION_FULL_BUILD + +#endif // GODOT_VERSION_H diff --git a/core/vmap.h b/core/vmap.h index ed66b46993..84ae1aaf66 100644 --- a/core/vmap.h +++ b/core/vmap.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/vset.h b/core/vset.h index 5f087a5a03..b96a115d21 100644 --- a/core/vset.h +++ b/core/vset.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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/AnimationNode.xml b/doc/classes/AnimationNode.xml index b4288bbfaa..79ec0f0a47 100644 --- a/doc/classes/AnimationNode.xml +++ b/doc/classes/AnimationNode.xml @@ -204,7 +204,7 @@ </methods> <members> <member name="filter_enabled" type="bool" setter="set_filter_enabled" getter="is_filter_enabled"> - Returns whether filtering is enabled. + If [code]true[/code], filtering is enabled. </member> </members> <signals> 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/DynamicFontData.xml b/doc/classes/DynamicFontData.xml index ecdab32e80..399e103930 100644 --- a/doc/classes/DynamicFontData.xml +++ b/doc/classes/DynamicFontData.xml @@ -12,13 +12,13 @@ </methods> <members> <member name="antialiased" type="bool" setter="set_antialiased" getter="is_antialiased" default="true"> - Controls whether the font should be rendered with anti-aliasing. + If [code]true[/code], the font is rendered with anti-aliasing. </member> <member name="font_path" type="String" setter="set_font_path" getter="get_font_path" default=""""> The path to the vector font file. </member> <member name="hinting" type="int" setter="set_hinting" getter="get_hinting" enum="DynamicFontData.Hinting" default="2"> - The font hinting mode used by FreeType. + The font hinting mode used by FreeType. See [enum Hinting] for options. </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/EditorSpatialGizmo.xml b/doc/classes/EditorSpatialGizmo.xml index 22e4a21757..419a0c5248 100644 --- a/doc/classes/EditorSpatialGizmo.xml +++ b/doc/classes/EditorSpatialGizmo.xml @@ -51,6 +51,8 @@ </argument> <argument index="2" name="billboard" type="bool" default="false"> </argument> + <argument index="3" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> + </argument> <description> Adds lines to the gizmo (as sets of 2 points), with a given material. The lines are used for visualizing the gizmo. Call this function during [method redraw]. </description> @@ -76,6 +78,8 @@ </argument> <argument index="1" name="default_scale" type="float" default="1"> </argument> + <argument index="2" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> + </argument> <description> Adds an unscaled billboard for visualization. Call this function during [method redraw]. </description> diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml index 2b44eb81b1..00a80a084b 100644 --- a/doc/classes/Environment.xml +++ b/doc/classes/Environment.xml @@ -21,6 +21,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns [code]true[/code] if the glow level [code]idx[/code] is specified, [code]false[/code] otherwise. </description> </method> <method name="set_glow_level"> @@ -31,132 +32,134 @@ <argument index="1" name="enabled" type="bool"> </argument> <description> + Enables or disables the glow level at index [code]idx[/code]. The more glow levels are enabled, the slower the glow effect will be. </description> </method> </methods> <members> <member name="adjustment_brightness" type="float" setter="set_adjustment_brightness" getter="get_adjustment_brightness" default="1.0"> - Global brightness value of the rendered scene (default value is 1). + The global brightness value of the rendered scene. Effective only if [code]adjustment_enabled[/code] is [code]true[/code]. </member> <member name="adjustment_color_correction" type="Texture" setter="set_adjustment_color_correction" getter="get_adjustment_color_correction"> - Applies the provided [Texture] resource to affect the global color aspect of the rendered scene. + Applies the provided [Texture] resource to affect the global color aspect of the rendered scene. Effective only if [code]adjustment_enabled[/code] is [code]true[/code]. </member> <member name="adjustment_contrast" type="float" setter="set_adjustment_contrast" getter="get_adjustment_contrast" default="1.0"> - Global contrast value of the rendered scene (default value is 1). + The global contrast value of the rendered scene (default value is 1). Effective only if [code]adjustment_enabled[/code] is [code]true[/code]. </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. + If [code]true[/code], enables the [code]adjustment_*[/code] properties provided by this resource. If [code]false[/code], modifications to the [code]adjustment_*[/code] properties 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). + The global color saturation value of the rendered scene (default value is 1). Effective only if [code]adjustment_enabled[/code] is [code]true[/code]. </member> <member name="ambient_light_color" type="Color" setter="set_ambient_light_color" getter="get_ambient_light_color" default="Color( 0, 0, 0, 1 )"> - [Color] of the ambient light. + The ambient light's [Color]. </member> <member name="ambient_light_energy" type="float" setter="set_ambient_light_energy" getter="get_ambient_light_energy" default="1.0"> - Energy of the ambient light. The higher the value, the stronger the light. + The ambient light's energy. The higher the value, the stronger the light. </member> <member name="ambient_light_sky_contribution" type="float" setter="set_ambient_light_sky_contribution" getter="get_ambient_light_sky_contribution" default="1.0"> Defines the amount of light that the sky brings on the scene. A value of 0 means that the sky's light emission has no effect on the scene illumination, thus all ambient illumination is provided by the ambient light. On the contrary, a value of 1 means that all the light that affects the scene is provided by the sky, thus the ambient light parameter has no effect on the scene. + This value is multiplied by [member ambient_light_energy], so it must be set to a value higher than [code]0[/code] for changes to be visible when adjusting [member ambient_light_sky_contribution]. </member> <member name="auto_exposure_enabled" type="bool" setter="set_tonemap_auto_exposure" getter="get_tonemap_auto_exposure" default="false"> - Enables the tonemapping auto exposure mode of the scene renderer. If activated, the renderer will automatically determine the exposure setting to adapt to the illumination of the scene and the observed light. + If [code]true[/code], enables the tonemapping auto exposure mode of the scene renderer. If [code]true[/code], the renderer will automatically determine the exposure setting to adapt to the scene's illumination and the observed light. </member> <member name="auto_exposure_max_luma" type="float" setter="set_tonemap_auto_exposure_max" getter="get_tonemap_auto_exposure_max" default="8.0"> - Maximum luminance value for the auto exposure. + The maximum luminance value for the auto exposure. </member> <member name="auto_exposure_min_luma" type="float" setter="set_tonemap_auto_exposure_min" getter="get_tonemap_auto_exposure_min" default="0.05"> - Minimum luminance value for the auto exposure. + The minimum luminance value for the auto exposure. </member> <member name="auto_exposure_scale" type="float" setter="set_tonemap_auto_exposure_grey" getter="get_tonemap_auto_exposure_grey" default="0.4"> - Scale of the auto exposure effect. Affects the intensity of auto exposure. + The scale of the auto exposure effect. Affects the intensity of auto exposure. </member> <member name="auto_exposure_speed" type="float" setter="set_tonemap_auto_exposure_speed" getter="get_tonemap_auto_exposure_speed" default="0.5"> - Speed of the auto exposure effect. Affects the time needed for the camera to perform auto exposure. + The speed of the auto exposure effect. Affects the time needed for the camera to perform auto exposure. </member> <member name="background_camera_feed_id" type="int" setter="set_camera_feed_id" getter="get_camera_feed_id" default="1"> - The id of the camera feed to show in the background. + The ID of the camera feed to show in the background. </member> <member name="background_canvas_max_layer" type="int" setter="set_canvas_max_layer" getter="get_canvas_max_layer" default="0"> - Maximum layer id (if using Layer background mode). + The maximum layer ID to display. Only effective when using the [constant BG_CANVAS] background mode. </member> <member name="background_color" type="Color" setter="set_bg_color" getter="get_bg_color" default="Color( 0, 0, 0, 1 )"> - Color displayed for clear areas of the scene (if using Custom color or Color+Sky background modes). + The [Color] displayed for clear areas of the scene. Only effective when using the [constant BG_COLOR] or [constant BG_COLOR_SKY] background modes). </member> <member name="background_energy" type="float" setter="set_bg_energy" getter="get_bg_energy" default="1.0"> - Power of light emitted by the background. + The power of the light emitted by the background. </member> <member name="background_mode" type="int" setter="set_background" getter="get_background" enum="Environment.BGMode" default="0"> - Defines the mode of background. + The background mode. See [enum BGMode] for possible values. </member> <member name="background_sky" type="Sky" setter="set_sky" getter="get_sky"> - [Sky] resource defined as background. + The [Sky] resource defined as background. </member> <member name="background_sky_custom_fov" type="float" setter="set_sky_custom_fov" getter="get_sky_custom_fov" default="0.0"> - [Sky] resource's custom field of view. + The [Sky] resource's custom field of view. </member> <member name="background_sky_orientation" type="Basis" setter="set_sky_orientation" getter="get_sky_orientation" default="Basis( 1, 0, 0, 0, 1, 0, 0, 0, 1 )"> - [Sky] resource's rotation expressed as a [Basis] + The [Sky] resource's rotation expressed as a [Basis]. </member> <member name="background_sky_rotation" type="Vector3" setter="set_sky_rotation" getter="get_sky_rotation" default="Vector3( 0, 0, 0 )"> - [Sky] resource's rotation expressed as euler angles in radians + The [Sky] resource's rotation expressed as Euler angles in radians. </member> <member name="background_sky_rotation_degrees" type="Vector3" setter="set_sky_rotation_degrees" getter="get_sky_rotation_degrees" default="Vector3( 0, 0, 0 )"> - [Sky] resource's rotation expressed as euler angles in degrees + The [Sky] resource's rotation expressed as Euler angles in degrees. </member> <member name="dof_blur_far_amount" type="float" setter="set_dof_blur_far_amount" getter="get_dof_blur_far_amount" default="0.1"> - Amount of far blur. + The amount of far blur for the depth-of-field effect. </member> <member name="dof_blur_far_distance" type="float" setter="set_dof_blur_far_distance" getter="get_dof_blur_far_distance" default="10.0"> - Distance from the camera where the far blur effect affects the rendering. + The distance from the camera where the far blur effect affects the rendering. </member> <member name="dof_blur_far_enabled" type="bool" setter="set_dof_blur_far_enabled" getter="is_dof_blur_far_enabled" default="false"> - Enables the far blur effect. + If [code]true[/code], enables the depth-of-field far blur effect. </member> <member name="dof_blur_far_quality" type="int" setter="set_dof_blur_far_quality" getter="get_dof_blur_far_quality" enum="Environment.DOFBlurQuality" default="1"> - Quality of the far blur quality. + The depth-of-field far blur's quality. Higher values can mitigate the visible banding effect seen at higher strengths, but are much slower. </member> <member name="dof_blur_far_transition" type="float" setter="set_dof_blur_far_transition" getter="get_dof_blur_far_transition" default="5.0"> - Transition between no-blur area and far blur. + The length of the transition between the no-blur area and far blur. </member> <member name="dof_blur_near_amount" type="float" setter="set_dof_blur_near_amount" getter="get_dof_blur_near_amount" default="0.1"> - Amount of near blur. + The amount of near blur for the depth-of-field effect. </member> <member name="dof_blur_near_distance" type="float" setter="set_dof_blur_near_distance" getter="get_dof_blur_near_distance" default="2.0"> Distance from the camera where the near blur effect affects the rendering. </member> <member name="dof_blur_near_enabled" type="bool" setter="set_dof_blur_near_enabled" getter="is_dof_blur_near_enabled" default="false"> - Enables the near blur effect. + If [code]true[/code], enables the depth-of-field near blur effect. </member> <member name="dof_blur_near_quality" type="int" setter="set_dof_blur_near_quality" getter="get_dof_blur_near_quality" enum="Environment.DOFBlurQuality" default="1"> - Quality of the near blur quality. + The depth-of-field near blur's quality. Higher values can mitigate the visible banding effect seen at higher strengths, but are much slower. </member> <member name="dof_blur_near_transition" type="float" setter="set_dof_blur_near_transition" getter="get_dof_blur_near_transition" default="1.0"> - Transition between near blur and no-blur area. + The length of the transition between the near blur and no-blur area. </member> <member name="fog_color" type="Color" setter="set_fog_color" getter="get_fog_color" default="Color( 0.5, 0.6, 0.7, 1 )"> - Fog's [Color]. + The fog's [Color]. </member> <member name="fog_depth_begin" type="float" setter="set_fog_depth_begin" getter="get_fog_depth_begin" default="10.0"> - Fog's depth starting distance from the camera. + The fog's depth starting distance from the camera. </member> <member name="fog_depth_curve" type="float" setter="set_fog_depth_curve" getter="get_fog_depth_curve" default="1.0"> - Value defining the fog depth intensity. + The fog depth's intensity curve. A number of presets are available in the [b]Inspector[/b] by right-clicking the curve. </member> <member name="fog_depth_enabled" type="bool" setter="set_fog_depth_enabled" getter="is_fog_depth_enabled" default="true"> - Enables the fog depth. + If [code]true[/code], the depth fog effect is enabled. When enabled, fog will appear in the distance (relative to the camera). </member> <member name="fog_depth_end" type="float" setter="set_fog_depth_end" getter="get_fog_depth_end" default="100.0"> - Fog's depth end distance from the camera. If this value is set to 0, it will be equal to the current camera's [member Camera.far] value. + The fog's depth end distance from the camera. If this value is set to 0, it will be equal to the current camera's [member Camera.far] value. </member> <member name="fog_enabled" type="bool" setter="set_fog_enabled" getter="is_fog_enabled" default="false"> - Enables the fog. Needs [member fog_height_enabled] and/or [member fog_depth_enabled] to actually display fog. + If [code]true[/code], fog effects are enabled. [member fog_height_enabled] and/or [member fog_depth_enabled] must be set to [code]true[/code] to actually display fog. </member> <member name="fog_height_curve" type="float" setter="set_fog_height_curve" getter="get_fog_height_curve" default="1.0"> - Value defining the fog height intensity. + The height fog's intensity. A number of presets are available in the [b]Inspector[/b] by right-clicking the curve. </member> <member name="fog_height_enabled" type="bool" setter="set_fog_height_enabled" getter="is_fog_height_enabled" default="false"> - Enables the fog height. + If [code]true[/code], the height fog effect is enabled. When enabled, fog will appear in a defined height range, regardless of the distance from the camera. This can be used to simulate "deep water" effects with a lower performance cost compared to a dedicated shader. </member> <member name="fog_height_max" type="float" setter="set_fog_height_max" getter="get_fog_height_max" default="0.0"> The Y coordinate where the height fog will be the most intense. If this value is greater than [member fog_height_min], fog will be displayed from bottom to top. Otherwise, it will be displayed from top to bottom. @@ -165,131 +168,151 @@ The Y coordinate where the height fog will be the least intense. If this value is greater than [member fog_height_max], fog will be displayed from top to bottom. Otherwise, it will be displayed from bottom to top. </member> <member name="fog_sun_amount" type="float" setter="set_fog_sun_amount" getter="get_fog_sun_amount" default="0.0"> - Amount of sun that affects the fog rendering. + The intensity of the depth fog color transition when looking towards the sun. The sun's direction is determined automatically using the DirectionalLight node in the scene. </member> <member name="fog_sun_color" type="Color" setter="set_fog_sun_color" getter="get_fog_sun_color" default="Color( 1, 0.9, 0.7, 1 )"> - Sun [Color]. + The depth fog's [Color] when looking towards the sun. </member> <member name="fog_transmit_curve" type="float" setter="set_fog_transmit_curve" getter="get_fog_transmit_curve" default="1.0"> - Amount of light that the fog transmits. + The intensity of the fog light transmittance effect. Amount of light that the fog transmits. </member> <member name="fog_transmit_enabled" type="bool" setter="set_fog_transmit_enabled" getter="is_fog_transmit_enabled" default="false"> - Enables fog's light transmission. If enabled, lets reflections light to be transmitted by the fog. + Enables fog's light transmission effect. If [code]true[/code], light will be more visible in the fog to simulate light scattering as in real life. </member> <member name="glow_bicubic_upscale" type="bool" setter="set_glow_bicubic_upscale" getter="is_glow_bicubic_upscale_enabled" default="false"> - Smooths out blockiness created by sampling higher levels. + Smooths out the blockiness created by sampling higher levels, at the cost of performance. + [b]Note:[/b] Only available when using the GLES3 renderer. </member> <member name="glow_blend_mode" type="int" setter="set_glow_blend_mode" getter="get_glow_blend_mode" enum="Environment.GlowBlendMode" default="2"> - Glow blending mode. + The glow blending mode. </member> <member name="glow_bloom" type="float" setter="set_glow_bloom" getter="get_glow_bloom" default="0.0"> - Bloom value (global glow). + The bloom's intensity. If set to a value higher than [code]0[/code], this will make glow visible in areas darker than the [member glow_hdr_threshold]. </member> <member name="glow_enabled" type="bool" setter="set_glow_enabled" getter="is_glow_enabled" default="false"> - Enables glow rendering. + If [code]true[/code], the glow effect is enabled. </member> <member name="glow_hdr_luminance_cap" type="float" setter="set_glow_hdr_luminance_cap" getter="get_glow_hdr_luminance_cap" default="12.0"> + The higher threshold of the HDR glow. Areas brighter than this threshold will be clamped for the purposes of the glow effect. </member> <member name="glow_hdr_scale" type="float" setter="set_glow_hdr_bleed_scale" getter="get_glow_hdr_bleed_scale" default="2.0"> - Bleed scale of the HDR glow. + The bleed scale of the HDR glow. </member> <member name="glow_hdr_threshold" type="float" setter="set_glow_hdr_bleed_threshold" getter="get_glow_hdr_bleed_threshold" default="1.0"> - Bleed threshold of the HDR glow. In GLES2, this needs to be below 1.0 in order for glow to be visible, a default value of 0.9 works well. + The lower threshold of the HDR glow. When using the GLES2 renderer (which doesn't support HDR), this needs to be below [code]1.0[/code] for glow to be visible. A value of [code]0.9[/code] works well in this case. </member> <member name="glow_intensity" type="float" setter="set_glow_intensity" getter="get_glow_intensity" default="0.8"> - Glow intensity. In GLES2, this should be increased to 1.5 by default to compensate for not using HDR. + The glow intensity. When using the GLES2 renderer, this should be increased to 1.5 to compensate for the lack of HDR rendering. </member> <member name="glow_levels/1" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="false"> - First level of glow (most local). + If [code]true[/code], the 1st level of glow is enabled. This is the most "local" level (least blurry). </member> <member name="glow_levels/2" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="false"> - Second level of glow. + If [code]true[/code], the 2th level of glow is enabled. </member> <member name="glow_levels/3" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="true"> - Third level of glow. + If [code]true[/code], the 3th level of glow is enabled. </member> <member name="glow_levels/4" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="false"> - Fourth level of glow. + If [code]true[/code], the 4th level of glow is enabled. </member> <member name="glow_levels/5" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="true"> - Fifth level of glow. + If [code]true[/code], the 5th level of glow is enabled. </member> <member name="glow_levels/6" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="false"> - Sixth level of glow. + If [code]true[/code], the 6th level of glow is enabled. </member> <member name="glow_levels/7" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="false"> - Seventh level of glow (most global). + If [code]true[/code], the 7th level of glow is enabled. This is the most "global" level (blurriest). </member> <member name="glow_strength" type="float" setter="set_glow_strength" getter="get_glow_strength" default="1.0"> - Glow strength. In GLES2, this should be increased to 1.3 by default to compensate for not using HDR. + The glow strength. When using the GLES2 renderer, this should be increased to 1.3 to compensate for the lack of HDR rendering. </member> <member name="ss_reflections_depth_tolerance" type="float" setter="set_ssr_depth_tolerance" getter="get_ssr_depth_tolerance" default="0.2"> + The depth tolerance for screen-space reflections. </member> <member name="ss_reflections_enabled" type="bool" setter="set_ssr_enabled" getter="is_ssr_enabled" default="false"> + If [code]true[/code], screen-space reflections are enabled. Screen-space reflections are more accurate than reflections from [GIProbe]s or [ReflectionProbe]s, but are slower and can't reflect surfaces occluded by others. </member> <member name="ss_reflections_fade_in" type="float" setter="set_ssr_fade_in" getter="get_ssr_fade_in" default="0.15"> + The fade-in distance for screen-space reflections. Affects the area from the reflected material to the screen-space reflection). </member> <member name="ss_reflections_fade_out" type="float" setter="set_ssr_fade_out" getter="get_ssr_fade_out" default="2.0"> + The fade-out distance for screen-space reflections. Affects the area from the screen-space reflection to the "global" reflection. </member> <member name="ss_reflections_max_steps" type="int" setter="set_ssr_max_steps" getter="get_ssr_max_steps" default="64"> + The maximum number of steps for screen-space reflections. Higher values are slower. </member> <member name="ss_reflections_roughness" type="bool" setter="set_ssr_rough" getter="is_ssr_rough" default="true"> + If [code]true[/code], screen-space reflections will take the material roughness into account. </member> <member name="ssao_ao_channel_affect" type="float" setter="set_ssao_ao_channel_affect" getter="get_ssao_ao_channel_affect" default="0.0"> + The screen-space ambient occlusion intensity on materials that have an AO texture defined. Values higher than [code]0[/code] will make the SSAO effect visible in areas darkened by AO textures. </member> <member name="ssao_bias" type="float" setter="set_ssao_bias" getter="get_ssao_bias" default="0.01"> + The screen-space ambient occlusion bias. This should be kept high enough to prevent "smooth" curves from being affected by ambient occlusion. </member> <member name="ssao_blur" type="int" setter="set_ssao_blur" getter="get_ssao_blur" enum="Environment.SSAOBlur" default="3"> + The screen-space ambient occlusion blur quality. See [enum SSAOBlur] for possible values. </member> <member name="ssao_color" type="Color" setter="set_ssao_color" getter="get_ssao_color" default="Color( 0, 0, 0, 1 )"> + The screen-space ambient occlusion color. </member> <member name="ssao_edge_sharpness" type="float" setter="set_ssao_edge_sharpness" getter="get_ssao_edge_sharpness" default="4.0"> + The screen-space ambient occlusion edge sharpness. </member> <member name="ssao_enabled" type="bool" setter="set_ssao_enabled" getter="is_ssao_enabled" default="false"> + If [code]true[/code], the screen-space ambient occlusion effect is enabled. This is a costly effect and should be disabled first when having performance issues. </member> <member name="ssao_intensity" type="float" setter="set_ssao_intensity" getter="get_ssao_intensity" default="1.0"> + The primary screen-space ambient occlusion intensity. See also [member ssao_radius]. </member> <member name="ssao_intensity2" type="float" setter="set_ssao_intensity2" getter="get_ssao_intensity2" default="1.0"> + The secondary screen-space ambient occlusion intensity. See also [member ssao_radius2]. </member> <member name="ssao_light_affect" type="float" setter="set_ssao_direct_light_affect" getter="get_ssao_direct_light_affect" default="0.0"> + The screen-space ambient occlusion intensity in direct light. In real life, ambient occlusion only applies to indirect light, which means its effects can't be seen in direct light. Values higher than [code]0[/code] will make the SSAO effect visible in direct light. </member> <member name="ssao_quality" type="int" setter="set_ssao_quality" getter="get_ssao_quality" enum="Environment.SSAOQuality" default="1"> + The screen-space ambient occlusion quality. Higher qualities will make better use of small objects for ambient occlusion, but are slower. </member> <member name="ssao_radius" type="float" setter="set_ssao_radius" getter="get_ssao_radius" default="1.0"> + The primary screen-space ambient occlusion radius. </member> <member name="ssao_radius2" type="float" setter="set_ssao_radius2" getter="get_ssao_radius2" default="0.0"> + The secondary screen-space ambient occlusion radius. If set to a value higher than [code]0[/code], enables the secondary screen-space ambient occlusion effect which can be used to improve the effect's appearance (at the cost of performance). </member> <member name="tonemap_exposure" type="float" setter="set_tonemap_exposure" getter="get_tonemap_exposure" default="1.0"> - Default exposure for tonemap. + The default exposure used for tonemapping. </member> <member name="tonemap_mode" type="int" setter="set_tonemapper" getter="get_tonemapper" enum="Environment.ToneMapper" default="0"> - Tonemapping mode. + The tonemapping mode to use. Tonemapping is the process that "converts" HDR values to be suitable for rendering on a LDR display. (Godot doesn't support rendering on HDR displays yet.) </member> <member name="tonemap_white" type="float" setter="set_tonemap_white" getter="get_tonemap_white" default="1.0"> - White reference value for tonemap. + The white reference value for tonemapping. Only effective if the [member tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]. </member> </members> <constants> <constant name="BG_KEEP" value="5" enum="BGMode"> - Keep on screen every pixel drawn in the background. + Keeps on screen every pixel drawn in the background. This is the fastest background mode, but it can only be safely used in fully-interior scenes (no visible sky or sky reflections). If enabled in a scene where the background is visible, "ghost trail" artifacts will be visible when moving the camera. </constant> <constant name="BG_CLEAR_COLOR" value="0" enum="BGMode"> - Clear the background using the project's clear color. + Clears the background using the clear color defined in [member ProjectSettings.rendering/environment/default_clear_color]. </constant> <constant name="BG_COLOR" value="1" enum="BGMode"> - Clear the background using a custom clear color. + Clears the background using a custom clear color. </constant> <constant name="BG_SKY" value="2" enum="BGMode"> - Display a user-defined sky in the background. + Displays a user-defined sky in the background. </constant> <constant name="BG_COLOR_SKY" value="3" enum="BGMode"> - Clear the background using a custom clear color and allows defining a sky for shading and reflection. + Clears the background using a custom clear color and allows defining a sky for shading and reflection. This mode is slightly faster than [constant BG_SKY] and should be preferred in scenes where reflections can be visible, but the sky itself never is (e.g. top-down camera). </constant> <constant name="BG_CANVAS" value="4" enum="BGMode"> - Display a [CanvasLayer] in the background. + Displays a [CanvasLayer] in the background. </constant> <constant name="BG_CAMERA_FEED" value="6" enum="BGMode"> - Display a camera feed in the background. + Displays a camera feed in the background. </constant> <constant name="BG_MAX" value="7" enum="BGMode"> Represents the size of the [enum BGMode] enum. @@ -301,10 +324,10 @@ Screen glow blending mode. Increases brightness, used frequently with bloom. </constant> <constant name="GLOW_BLEND_MODE_SOFTLIGHT" value="2" enum="GlowBlendMode"> - Soft light glow blending mode. Modifies contrast, exposes shadows and highlights, vivid bloom. + Soft light glow blending mode. Modifies contrast, exposes shadows and highlights (vivid bloom). </constant> <constant name="GLOW_BLEND_MODE_REPLACE" value="3" enum="GlowBlendMode"> - Replace glow blending mode. Replaces all pixels' color by the glow value. + Replace glow blending mode. Replaces all pixels' color by the glow value. This can be used to simulate a full-screen blur effect by tweaking the glow parameters to match the original image's brightness. </constant> <constant name="TONE_MAPPER_LINEAR" value="0" enum="ToneMapper"> Linear tonemapper operator. Reads the linear data and passes it on unmodified. @@ -319,27 +342,34 @@ Academy Color Encoding System tonemapper operator. </constant> <constant name="DOF_BLUR_QUALITY_LOW" value="0" enum="DOFBlurQuality"> - Low depth-of-field blur quality. + Low depth-of-field blur quality (fastest). </constant> <constant name="DOF_BLUR_QUALITY_MEDIUM" value="1" enum="DOFBlurQuality"> Medium depth-of-field blur quality. </constant> <constant name="DOF_BLUR_QUALITY_HIGH" value="2" enum="DOFBlurQuality"> - High depth-of-field blur quality. + High depth-of-field blur quality (slowest). </constant> <constant name="SSAO_BLUR_DISABLED" value="0" enum="SSAOBlur"> + No blur for the screen-space ambient occlusion effect (fastest). </constant> <constant name="SSAO_BLUR_1x1" value="1" enum="SSAOBlur"> + 1×1 blur for the screen-space ambient occlusion effect. </constant> <constant name="SSAO_BLUR_2x2" value="2" enum="SSAOBlur"> + 2×2 blur for the screen-space ambient occlusion effect. </constant> <constant name="SSAO_BLUR_3x3" value="3" enum="SSAOBlur"> + 3×3 blur for the screen-space ambient occlusion effect (slowest). </constant> <constant name="SSAO_QUALITY_LOW" value="0" enum="SSAOQuality"> + Low quality for the screen-space ambient occlusion effect (fastest). </constant> <constant name="SSAO_QUALITY_MEDIUM" value="1" enum="SSAOQuality"> + Low quality for the screen-space ambient occlusion effect. </constant> <constant name="SSAO_QUALITY_HIGH" value="2" enum="SSAOQuality"> + Low quality for the screen-space ambient occlusion effect (slowest). </constant> </constants> </class> diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml index 80e9b152ef..802134d3b6 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"> @@ -158,6 +160,7 @@ <argument index="4" name="amount" type="float"> </argument> <description> + Sets the coloration of the connection between [code]from[/code]'s [code]from_port[/code] and [code]to[/code]'s [code]to_port[/code] with the color provided in the [code]activity[/code] theme property. </description> </method> <method name="set_selected"> @@ -192,12 +195,12 @@ <signals> <signal name="_begin_node_move"> <description> - Signal sent at the beginning of a GraphNode movement. + Emitted at the beginning of a GraphNode movement. </description> </signal> <signal name="_end_node_move"> <description> - Signal sent at the end of a GraphNode movement. + Emitted at the end of a GraphNode movement. </description> </signal> <signal name="connection_from_empty"> @@ -208,7 +211,7 @@ <argument index="2" name="release_position" type="Vector2"> </argument> <description> - Signal sent when user dragging connection from input port into empty space of the graph. + Emitted when user dragging connection from input port into empty space of the graph. </description> </signal> <signal name="connection_request"> @@ -221,7 +224,7 @@ <argument index="3" name="to_slot" type="int"> </argument> <description> - Signal sent to the GraphEdit when the connection between the [code]from_slot[/code] slot of the [code]from[/code] GraphNode and the [code]to_slot[/code] slot of the [code]to[/code] GraphNode is attempted to be created. + Emitted to the GraphEdit when the connection between the [code]from_slot[/code] slot of the [code]from[/code] GraphNode and the [code]to_slot[/code] slot of the [code]to[/code] GraphNode is attempted to be created. </description> </signal> <signal name="connection_to_empty"> @@ -232,17 +235,17 @@ <argument index="2" name="release_position" type="Vector2"> </argument> <description> - Signal sent when user dragging connection from output port into empty space of the graph. + Emitted when user dragging connection from output port into empty space of the graph. </description> </signal> <signal name="copy_nodes_request"> <description> - Signal sent when the user presses [code]Ctrl + C[/code]. + Emitted when the user presses [code]Ctrl + C[/code]. </description> </signal> <signal name="delete_nodes_request"> <description> - Signal sent when a GraphNode is attempted to be removed from the GraphEdit. + Emitted when a GraphNode is attempted to be removed from the GraphEdit. </description> </signal> <signal name="disconnection_request"> @@ -272,7 +275,7 @@ </signal> <signal name="paste_nodes_request"> <description> - Signal sent when the user presses [code]Ctrl + V[/code]. + Emitted when the user presses [code]Ctrl + V[/code]. </description> </signal> <signal name="popup_request"> @@ -286,6 +289,7 @@ <argument index="0" name="ofs" type="Vector2"> </argument> <description> + Emitted when the scroll offset is changed by the user. It will not be emitted when changed in code. </description> </signal> </signals> @@ -314,6 +318,10 @@ </theme_item> <theme_item name="reset" type="Texture"> </theme_item> + <theme_item name="selection_fill" type="Color" default="Color( 1, 1, 1, 0.3 )"> + </theme_item> + <theme_item name="selection_stroke" type="Color" default="Color( 1, 1, 1, 0.8 )"> + </theme_item> <theme_item name="snap" type="Texture"> </theme_item> </theme_items> diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml index 8470a346ff..8fda9c20a5 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> @@ -181,20 +188,27 @@ [b]Note:[/b] You cannot use position directly, as [GraphEdit] is a [Container]. </member> <member name="overlay" type="int" setter="set_overlay" getter="get_overlay" enum="GraphNode.Overlay" default="0"> + Sets the overlay shown above the GraphNode. See [enum Overlay]. </member> <member name="resizable" type="bool" setter="set_resizable" getter="is_resizable" default="false"> + If [code]true[/code], the user can resize the GraphNode. + [b]Note:[/b] Dragging the handle will only trigger the [signal resize_request] signal, the GraphNode needs to be resized manually. </member> <member name="selected" type="bool" setter="set_selected" getter="is_selected" default="false"> + If [code]true[/code], the GraphNode is selected. </member> <member name="show_close" type="bool" setter="set_show_close_button" getter="is_close_button_visible" default="false"> + If [code]true[/code], the close button will be visible. + [b]Note:[/b] Pressing it will only trigger the [signal close_request] signal, the GraphNode needs to be removed manually. </member> <member name="title" type="String" setter="set_title" getter="get_title" default=""""> + The text displayed in the GraphNode's title bar. </member> </members> <signals> <signal name="close_request"> <description> - Signal sent on closing the GraphNode. + Emitted when the GraphNode is requested to be closed. Happens on clicking the close button (see [member show_close]). </description> </signal> <signal name="dragged"> @@ -203,32 +217,36 @@ <argument index="1" name="to" type="Vector2"> </argument> <description> - Signal sent when the GraphNode is dragged. + Emitted when the GraphNode is dragged. </description> </signal> <signal name="offset_changed"> <description> - Signal sent when the GraphNode is moved. + Emitted when the GraphNode is moved. </description> </signal> <signal name="raise_request"> <description> - Signal sent when the GraphNode is requested to be displayed over other ones. Happens on focusing (clicking into) the GraphNode. + Emitted when the GraphNode is requested to be displayed over other ones. Happens on focusing (clicking into) the GraphNode. </description> </signal> <signal name="resize_request"> <argument index="0" name="new_minsize" type="Vector2"> </argument> <description> + Emitted when the GraphNode is requested to be resized. Happens on dragging the resizer handle (see [member resizable]). </description> </signal> </signals> <constants> <constant name="OVERLAY_DISABLED" value="0" enum="Overlay"> + No overlay is shown. </constant> <constant name="OVERLAY_BREAKPOINT" value="1" enum="Overlay"> + Show overlay set in the [code]breakpoint[/code] theme property. </constant> <constant name="OVERLAY_POSITION" value="2" enum="Overlay"> + Show overlay set in the [code]position[/code] theme property. </constant> </constants> <theme_items> 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 52e4b94051..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,19 +166,10 @@ </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> - <method name="set_read_chunk_size"> - <return type="void"> - </return> - <argument index="0" name="bytes" type="int"> - </argument> - <description> - Sets the size of the buffer used and maximum bytes to read per iteration. See [method read_response_body_chunk]. - </description> - </method> </methods> <members> <member name="blocking_mode_enabled" type="bool" setter="set_blocking_mode" getter="is_blocking_mode_enabled" default="false"> @@ -187,6 +178,9 @@ <member name="connection" type="StreamPeer" setter="set_connection" getter="get_connection"> The connection to use for this client. </member> + <member name="read_chunk_size" type="int" setter="set_read_chunk_size" getter="get_read_chunk_size" default="4096"> + The size of the buffer used and maximum bytes to read per iteration. See [method read_response_body_chunk]. + </member> </members> <constants> <constant name="METHOD_GET" value="0" enum="Method"> diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml index d0e8a5972f..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"> @@ -93,6 +114,10 @@ <member name="body_size_limit" type="int" setter="set_body_size_limit" getter="get_body_size_limit" default="-1"> Maximum allowed size for response bodies. </member> + <member name="download_chunk_size" type="int" setter="set_download_chunk_size" getter="get_download_chunk_size" default="4096"> + The size of the buffer used and maximum bytes to read per iteration. See [member HTTPClient.read_chunk_size]. + Set this to a higher value (e.g. 65536 for 64 KiB) when downloading large files to achieve better speeds at the cost of memory. + </member> <member name="download_file" type="String" setter="set_download_file" getter="get_download_file" default=""""> The file to download into. Will output any received file into it. </member> 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/InputEvent.xml b/doc/classes/InputEvent.xml index d412ce09e2..ccb5c5400a 100644 --- a/doc/classes/InputEvent.xml +++ b/doc/classes/InputEvent.xml @@ -111,6 +111,7 @@ <members> <member name="device" type="int" setter="set_device" getter="get_device" default="0"> The event's device ID. + [b]Note:[/b] This device ID will always be [code]-1[/code] for emulated mouse input from a touchscreen. This can be used to distinguish emulated mouse input from physical mouse input. </member> </members> <constants> diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml index c82d6a27c0..51d13627ad 100644 --- a/doc/classes/ItemList.xml +++ b/doc/classes/ItemList.xml @@ -6,6 +6,7 @@ <description> This control provides a selectable list of items that may be in a single (or multiple columns) with option of text, icons, or both text and icon. Tooltips are supported and may be different for every item in the list. Selectable items in the list may be selected or deselected and multiple selection may be enabled. Selection with right mouse button may also be enabled to allow use of popup context menus. Items may also be "activated" by double-clicking them or by pressing Enter. + Item text only supports single-line strings, newline characters (e.g. [code]\n[/code]) in the string won't produce a newline. Text wrapping is enabled in [constant ICON_MODE_TOP] mode, but column's width is adjusted to fully fit its content by default. You need to set [member fixed_column_width] greater than zero to wrap the text. </description> <tutorials> </tutorials> @@ -57,7 +58,8 @@ <argument index="1" name="exact" type="bool" default="false"> </argument> <description> - Given a position within the control return the item (if any) at that point. + Returns the item index at the given [code]position[/code]. + When there is no item at that point, -1 will be returned if [code]exact[/code] is [code]true[/code], and the closest item index will be returned otherwise. </description> </method> <method name="get_item_count" qualifiers="const"> @@ -109,6 +111,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns the region of item's icon used. The whole icon will be used if the region has no area. </description> </method> <method name="get_item_metadata" qualifiers="const"> @@ -174,6 +177,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Returns [code]true[/code] if the item icon will be drawn transposed, i.e. the X and Y axes are swapped. </description> </method> <method name="is_item_selectable" qualifiers="const"> @@ -307,6 +311,7 @@ <argument index="1" name="rect" type="Rect2"> </argument> <description> + Sets the region of item's icon used. The whole icon will be used if the region has no area. </description> </method> <method name="set_item_icon_transposed"> @@ -314,9 +319,10 @@ </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="rect" type="bool"> + <argument index="1" name="transposed" type="bool"> </argument> <description> + Sets whether the item icon will be drawn transposed. </description> </method> <method name="set_item_metadata"> @@ -409,26 +415,33 @@ If [code]true[/code], the control will automatically resize the height to fit its content. </member> <member name="fixed_column_width" type="int" setter="set_fixed_column_width" getter="get_fixed_column_width" default="0"> - Sets the default column width in pixels. If left to default value, each item will have a width equal to the width of its content and the columns will have an uneven width. + The width all columns will be adjusted to. + A value of zero disables the adjustment, each item will have a width equal to the width of its content and the columns will have an uneven width. </member> <member name="fixed_icon_size" type="Vector2" setter="set_fixed_icon_size" getter="get_fixed_icon_size" default="Vector2( 0, 0 )"> - Sets the default icon size in pixels. + The size all icons will be adjusted to. + If either X or Y component is not greater than zero, icon size won't be affected. </member> <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" override="true" enum="Control.FocusMode" default="2" /> <member name="icon_mode" type="int" setter="set_icon_mode" getter="get_icon_mode" enum="ItemList.IconMode" default="1"> - Sets the default position of the icon to either [constant ICON_MODE_LEFT] or [constant ICON_MODE_TOP]. + The icon position, whether above or to the left of the text. See the [enum IconMode] constants. </member> <member name="icon_scale" type="float" setter="set_icon_scale" getter="get_icon_scale" default="1.0"> - Sets the icon size to its initial size multiplied by the specified scale. + The scale of icon applied after [member fixed_icon_size] and transposing takes effect. </member> <member name="max_columns" type="int" setter="set_max_columns" getter="get_max_columns" default="1"> - Sets the maximum columns the list will have. If set to anything other than the default, the content will be split among the specified columns. + Maximum columns the list will have. + If greater than zero, the content will be split among the specified columns. + A value of zero means unlimited columns, i.e. all items will be put in the same row. </member> <member name="max_text_lines" type="int" setter="set_max_text_lines" getter="get_max_text_lines" default="1"> + Maximum lines of text allowed in each item. Space will be reserved even when there is not enough lines of text to display. + [b]Note:[/b] This property takes effect only when [member icon_mode] is [constant ICON_MODE_TOP]. To make the text wrap, [member fixed_column_width] should be greater than zero. </member> <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" override="true" default="true" /> <member name="same_column_width" type="bool" setter="set_same_column_width" getter="is_same_column_width" default="false"> - If set to [code]true[/code], all columns will have the same width specified by [member fixed_column_width]. + Whether all columns will have the same width. + If [code]true[/code], the width is equal to the largest column width of all columns. </member> <member name="select_mode" type="int" setter="set_select_mode" getter="get_select_mode" enum="ItemList.SelectMode" default="0"> Allows single or multiple item selection. See the [enum SelectMode] constants. @@ -486,8 +499,10 @@ </signals> <constants> <constant name="ICON_MODE_TOP" value="0" enum="IconMode"> + Icon is drawn above the text. </constant> <constant name="ICON_MODE_LEFT" value="1" enum="IconMode"> + Icon is drawn to the left of the text. </constant> <constant name="SELECT_SINGLE" value="0" enum="SelectMode"> Only allow selecting a single item. 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..cdc0270269 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]. @@ -68,7 +68,7 @@ Smooth shadow gradient length. </member> <member name="shadow_item_cull_mask" type="int" setter="set_item_shadow_cull_mask" getter="get_item_shadow_cull_mask" default="1"> - The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders with a matching shadow mask will cast shadows. + The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders with a matching light mask will cast shadows. </member> <member name="texture" type="Texture" setter="set_texture" getter="get_texture"> [Texture] used for the Light2D's appearance. 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/MeshLibrary.xml b/doc/classes/MeshLibrary.xml index 44dc4f334f..49278be44e 100644 --- a/doc/classes/MeshLibrary.xml +++ b/doc/classes/MeshLibrary.xml @@ -4,7 +4,7 @@ Library of meshes. </brief_description> <description> - A library of meshes. Contains a list of [Mesh] resources, each with a name and ID. This resource is used in [GridMap]. + A library of meshes. Contains a list of [Mesh] resources, each with a name and ID. Each item can also include collision and navigation shapes. This resource is used in [GridMap]. </description> <tutorials> </tutorials> @@ -22,7 +22,8 @@ <argument index="0" name="id" type="int"> </argument> <description> - Create a new item in the library, supplied as an ID. + Creates a new item in the library with the given ID. + You can get an unused ID from [method get_last_unused_item_id]. </description> </method> <method name="find_item_by_name" qualifiers="const"> @@ -31,13 +32,14 @@ <argument index="0" name="name" type="String"> </argument> <description> + Returns the first item with the given name. </description> </method> <method name="get_item_list" qualifiers="const"> <return type="PoolIntArray"> </return> <description> - Returns the list of items. + Returns the list of item IDs in use. </description> </method> <method name="get_item_mesh" qualifiers="const"> @@ -46,7 +48,7 @@ <argument index="0" name="id" type="int"> </argument> <description> - Returns the mesh of the item. + Returns the item's mesh. </description> </method> <method name="get_item_name" qualifiers="const"> @@ -55,7 +57,7 @@ <argument index="0" name="id" type="int"> </argument> <description> - Returns the name of the item. + Returns the item's name. </description> </method> <method name="get_item_navmesh" qualifiers="const"> @@ -64,6 +66,7 @@ <argument index="0" name="id" type="int"> </argument> <description> + Returns the item's navigation mesh. </description> </method> <method name="get_item_navmesh_transform" qualifiers="const"> @@ -72,6 +75,7 @@ <argument index="0" name="id" type="int"> </argument> <description> + Returns the transform applied to the item's navigation mesh. </description> </method> <method name="get_item_preview" qualifiers="const"> @@ -90,6 +94,8 @@ <argument index="0" name="id" type="int"> </argument> <description> + Returns an item's collision shapes. + The array consists of each [Shape] followed by its [Transform]. </description> </method> <method name="get_last_unused_item_id" qualifiers="const"> @@ -128,6 +134,7 @@ </argument> <description> Sets the item's name. + This name is shown in the editor. It can also be used to look up the item later using [method find_item_by_name]. </description> </method> <method name="set_item_navmesh"> @@ -138,6 +145,7 @@ <argument index="1" name="navmesh" type="NavigationMesh"> </argument> <description> + Sets the item's navigation mesh. </description> </method> <method name="set_item_navmesh_transform"> @@ -148,6 +156,7 @@ <argument index="1" name="navmesh" type="Transform"> </argument> <description> + Sets the transform to apply to the item's navigation mesh. </description> </method> <method name="set_item_preview"> @@ -158,6 +167,7 @@ <argument index="1" name="texture" type="Texture"> </argument> <description> + Sets a texture to use as the item's preview icon in the editor. </description> </method> <method name="set_item_shapes"> @@ -168,6 +178,8 @@ <argument index="1" name="shapes" type="Array"> </argument> <description> + Sets an item's collision shapes. + The array should consist of [Shape] objects, each followed by a [Transform] that will be applied to it. For shapes that should not have a transform, use [constant Transform.IDENTITY]. </description> </method> </methods> diff --git a/doc/classes/MultiMesh.xml b/doc/classes/MultiMesh.xml index 8a72aa155b..ec65f407cd 100644 --- a/doc/classes/MultiMesh.xml +++ b/doc/classes/MultiMesh.xml @@ -11,6 +11,7 @@ </description> <tutorials> <link>http://docs.godotengine.org/en/latest/tutorials/3d/vertex_animation/animating_thousands_of_fish.html</link> + <link>http://docs.godotengine.org/en/latest/tutorials/optimization/using_multimesh.html</link> </tutorials> <methods> <method name="get_aabb" qualifiers="const"> @@ -87,7 +88,7 @@ <argument index="1" name="custom_data" type="Color"> </argument> <description> - Sets custom data for a specific instance. Although [Color] is used, it is just a container for 4 numbers. + Sets custom data for a specific instance. Although [Color] is used, it is just a container for 4 floating point numbers. The format of the number can change depending on the [enum CustomDataFormat] used. </description> </method> <method name="set_instance_transform"> @@ -153,7 +154,7 @@ Use when you are not using per-instance custom data. </constant> <constant name="CUSTOM_DATA_8BIT" value="1" enum="CustomDataFormat"> - Compress custom_data into 8 bits when passing to shader. This uses less memory and can be faster, but loses precision. + Compress custom_data into 8 bits when passing to shader. This uses less memory and can be faster, but loses precision and range. Floats packed into 8 bits can only represent values between 0 and 1, numbers outside that range will be clamped. </constant> <constant name="CUSTOM_DATA_FLOAT" value="2" enum="CustomDataFormat"> The [Color] passed into [method set_instance_custom_data] will use 4 floats. Use this for highest precision. 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 cecbce90b3..e3f1165c55 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -129,6 +129,7 @@ child_node.get_parent().remove_child(child_node) add_child(child_node) [/codeblock] + [b]Note:[/b] If you want a child to be persisted to a [PackedScene], you must set [member owner] in addition to calling [method add_child]. This is typically relevant for [url=https://godot.readthedocs.io/en/latest/tutorials/misc/running_code_in_the_editor.html]tool scripts[/url] and [url=https://godot.readthedocs.io/en/latest/tutorials/plugins/editor/index.html]editor plugins[/url]. If [method add_child] is called without setting [member owner], the newly added [Node] will not be visible in the scene tree, though it will be visible in the 2D/3D view. </description> </method> <method name="add_child_below_node"> @@ -251,7 +252,7 @@ <argument index="0" name="path" type="NodePath"> </argument> <description> - Fetches a node. The [NodePath] can be either a relative path (from the current node) or an absolute path (in the scene tree) to a node. If the path does not exist, a [code]null instance[/code] is returned and attempts to access it will result in an "Attempt to call <method> on a null instance." error. + Fetches a node. The [NodePath] can be either a relative path (from the current node) or an absolute path (in the scene tree) to a node. If the path does not exist, a [code]null instance[/code] is returned and an error is logged. Attempts to access methods on the return value will result in an "Attempt to call <method> on a null instance." error. [b]Note:[/b] Fetching absolute paths only works when the node is inside the scene tree (see [method is_inside_tree]). [b]Example:[/b] Assume your current node is Character and the following tree: [codeblock] @@ -295,7 +296,7 @@ <argument index="0" name="path" type="NodePath"> </argument> <description> - Similar to [method get_node], but does not raise an error if [code]path[/code] does not point to a valid [Node]. + Similar to [method get_node], but does not log an error if [code]path[/code] does not point to a valid [Node]. </description> </method> <method name="get_parent" qualifiers="const"> @@ -839,7 +840,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 +995,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/Node2D.xml b/doc/classes/Node2D.xml index 29c4680685..67e9597781 100644 --- a/doc/classes/Node2D.xml +++ b/doc/classes/Node2D.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="Node2D" inherits="CanvasItem" category="Core" version="3.2"> <brief_description> - A 2D game object, parent of all 2D-related nodes. Has a position, rotation, scale and Z index. + A 2D game object, inherited by all 2D-related nodes. Has a position, rotation, scale, and Z index. </brief_description> <description> - A 2D game object, with a position, rotation and scale. All 2D physics nodes and sprites inherit from Node2D. Use Node2D as a parent node to move, scale and rotate children in a 2D project. Also gives control on the node's render order. + A 2D game object, with a transform (position, rotation, and scale). All 2D nodes, including physics objects and sprites, inherit from Node2D. Use Node2D as a parent node to move, scale and rotate children in a 2D project. Also gives control of the node's render order. </description> <tutorials> <link>https://docs.godotengine.org/en/latest/tutorials/2d/custom_drawing_in_2d.html</link> diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml index 6da0547352..71d0c1a6fe 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"> @@ -636,6 +655,14 @@ Returns [code]true[/code] if the window should always be on top of other windows. </description> </method> + <method name="is_window_focused" qualifiers="const"> + <return type="bool"> + </return> + <description> + Returns [code]true[/code] if the window is currently focused. + [b]Note:[/b] Only implemented on desktop platforms. On other platforms, it will always return [code]true[/code]. + </description> + </method> <method name="kill"> <return type="int" enum="Error"> </return> @@ -644,6 +671,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 +679,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 +687,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 +695,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 +711,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 +719,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 +727,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 +735,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 +777,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 +794,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 +805,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 +818,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 +828,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 +839,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 +867,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 +878,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 +891,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 +901,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> @@ -870,7 +913,8 @@ The current screen index (starting from 0). </member> <member name="exit_code" type="int" setter="set_exit_code" getter="get_exit_code" default="0"> - The exit code passed to the OS when the main loop exits. + The exit code passed to the OS when the main loop exits. By convention, an exit code of [code]0[/code] indicates success whereas a non-zero exit code indicates an error. For portability reasons, the exit code should be set between 0 and 125 (inclusive). + [b]Note:[/b] This value will be ignored if using [method SceneTree.quit] with an [code]exit_code[/code] argument passed. </member> <member name="keep_screen_on" type="bool" setter="set_keep_screen_on" getter="is_keep_screen_on" default="true"> If [code]true[/code], the engine tries to keep the screen on while the game is running. Useful on mobile. @@ -893,6 +937,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 +957,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/Object.xml b/doc/classes/Object.xml index 5a09fe39c0..d063bd81e7 100644 --- a/doc/classes/Object.xml +++ b/doc/classes/Object.xml @@ -9,6 +9,12 @@ Objects do not manage memory. If a class inherits from Object, you will have to delete instances of it manually. To do so, call the [method free] method from your script or delete the instance from C++. Some classes that extend Object add memory management. This is the case of [Reference], which counts references and deletes itself automatically when no longer referenced. [Node], another fundamental type, deletes all its children when freed from memory. Objects export properties, which are mainly useful for storage and editing, but not really so much in programming. Properties are exported in [method _get_property_list] and handled in [method _get] and [method _set]. However, scripting languages and C++ have simpler means to export them. + Property membership can be tested directly in GDScript using [code]in[/code]: + [codeblock] + var n = Node2D.new() + print("position" in n) # Prints "True". + print("other_property" in n) # Prints "False". + [/codeblock] Objects also receive notifications. Notifications are a simple way to notify the object about different events, so they can all be handled together. See [method _notification]. </description> <tutorials> @@ -93,12 +99,12 @@ </description> </method> <method name="call_deferred" qualifiers="vararg"> - <return type="Variant"> + <return type="void"> </return> <argument index="0" name="method" type="String"> </argument> <description> - Calls the [code]method[/code] on the object during idle time and returns the result. This method supports a variable number of arguments, so parameters are passed as a comma separated list. Example: + Calls the [code]method[/code] on the object during idle time. This method supports a variable number of arguments, so parameters are passed as a comma separated list. Example: [codeblock] call_deferred("set", "position", Vector2(42.0, 0.0)) [/codeblock] @@ -172,7 +178,7 @@ </description> </method> <method name="emit_signal" qualifiers="vararg"> - <return type="Variant"> + <return type="void"> </return> <argument index="0" name="signal" type="String"> </argument> @@ -197,7 +203,7 @@ <argument index="0" name="property" type="String"> </argument> <description> - Returns the [Variant] value of the given [code]property[/code]. + Returns the [Variant] value of the given [code]property[/code]. If the [code]property[/code] doesn't exist, this will return [code]null[/code]. </description> </method> <method name="get_class" qualifiers="const"> @@ -454,6 +460,7 @@ </argument> <description> Assigns a script to the object. Each object can have a single script assigned to it, which are used to extend its functionality. + If the object already had a script, the previous script instance will be freed and its variables and state will be lost. The new script's [method _init] method will be called. </description> </method> <method name="to_string"> 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/Popup.xml b/doc/classes/Popup.xml index 2357ee2469..6b15b5a1ea 100644 --- a/doc/classes/Popup.xml +++ b/doc/classes/Popup.xml @@ -4,7 +4,7 @@ Base container control for popups and dialogs. </brief_description> <description> - Popup is a base [Control] used to show dialogs and popups. It's a subwindow and modal by default (see [Control]) and has helpers for custom popup behavior. + Popup is a base [Control] used to show dialogs and popups. It's a subwindow and modal by default (see [Control]) and has helpers for custom popup behavior. All popup methods ensure correct placement within the viewport. </description> <tutorials> </tutorials> diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml index bdb6ca84ee..89039eebda 100644 --- a/doc/classes/PopupMenu.xml +++ b/doc/classes/PopupMenu.xml @@ -334,7 +334,7 @@ <return type="bool"> </return> <description> - Returns whether the popup will be hidden when the window loses focus or not. + Returns [code]true[/code] if the popup will be hidden when the window loses focus or not. </description> </method> <method name="is_item_checkable" qualifiers="const"> @@ -391,7 +391,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> - Returns whether the shortcut of the specified item [code]idx[/code] is disabled or not. + Returns [code]true[/code] if the specified item's shortcut is disabled. </description> </method> <method name="remove_item"> @@ -477,7 +477,7 @@ <argument index="1" name="disabled" type="bool"> </argument> <description> - Sets whether the item at index [code]idx[/code] is disabled or not. When it is disabled, it can't be selected and its action can't be invoked. + Enables/disables the item at index [code]idx[/code]. When it is disabled, it can't be selected and its action can't be invoked. </description> </method> <method name="set_item_icon"> @@ -521,6 +521,7 @@ <argument index="1" name="state" type="int"> </argument> <description> + Sets the state of an multistate item. See [method add_multistate_item] for details. </description> </method> <method name="set_item_shortcut"> @@ -595,6 +596,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> + Cycle to the next state of an multistate item. See [method add_multistate_item] for details. </description> </method> </methods> 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..c3fb226b6a 100644 --- a/doc/classes/RichTextLabel.xml +++ b/doc/classes/RichTextLabel.xml @@ -91,6 +91,7 @@ <argument index="0" name="effect" type="Variant"> </argument> <description> + Installs a custom effect. [code]effect[/code] should be a valid [RichTextEffect]. </description> </method> <method name="newline"> @@ -115,6 +116,7 @@ <argument index="0" name="expressions" type="PoolStringArray"> </argument> <description> + Parses BBCode parameter [code]expressions[/code] into a dictionary. </description> </method> <method name="pop"> @@ -137,12 +139,14 @@ <return type="void"> </return> <description> + Adds a [code][font][/code] tag with a bold font to the tag stack. This is the same as adding a [code][b][/code] tag if not currently in a [code][i][/code] tag. </description> </method> <method name="push_bold_italics"> <return type="void"> </return> <description> + Adds a [code][font][/code] tag with a bold italics font to the tag stack. </description> </method> <method name="push_cell"> @@ -176,13 +180,14 @@ <argument index="0" name="level" type="int"> </argument> <description> - Adds an [code][indent][/code] tag to the tag stack. Multiplies "level" by current tab_size to determine new margin length. + Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/code] by current [member tab_size] to determine new margin length. </description> </method> <method name="push_italics"> <return type="void"> </return> <description> + Adds a [code][font][/code] tag with a italics font to the tag stack. This is the same as adding a [code][i][/code] tag if not currently in a [code][b][/code] tag. </description> </method> <method name="push_list"> @@ -207,12 +212,14 @@ <return type="void"> </return> <description> + Adds a [code][font][/code] tag with a monospace font to the tag stack. </description> </method> <method name="push_normal"> <return type="void"> </return> <description> + Adds a [code][font][/code] tag with a normal font to the tag stack. </description> </method> <method name="push_strikethrough"> @@ -245,6 +252,7 @@ </argument> <description> Removes a line of content from the label. Returns [code]true[/code] if the line exists. + The [code]line[/code] argument is the index of the line to remove, it can take values in the interval [code][0, get_line_count() - 1][/code]. </description> </method> <method name="scroll_to_line"> @@ -278,8 +286,11 @@ </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="[ ]"> + The currently installed custom effects. This is an array of [RichTextEffect]s. + To add a custom effect, it's more convenient to use [method install_effect]. </member> <member name="meta_underlined" type="bool" setter="set_meta_underline" getter="is_meta_underlined" default="true"> If [code]true[/code], the label underlines meta tags such as [code][url]{text}[/url][/code]. @@ -288,11 +299,12 @@ If [code]true[/code], the label uses the custom font color. </member> <member name="percent_visible" type="float" setter="set_percent_visible" getter="get_percent_visible" default="1.0"> - The text's visibility, as a [float] between 0.0 and 1.0. + The range of characters to display, as a [float] between 0.0 and 1.0. When assigned an out of range value, it's the same as assigning 1.0. + [b]Note:[/b] Setting this property updates [member visible_characters] based on current [method get_total_character_count]. </member> <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" override="true" default="true" /> <member name="scroll_active" type="bool" setter="set_scroll_active" getter="is_scroll_active" default="true"> - If [code]true[/code], the scrollbar is visible. Does not block scrolling completely. See [method scroll_to_line]. + If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/code] does not block scrolling completely. See [method scroll_to_line]. </member> <member name="scroll_following" type="bool" setter="set_scroll_follow" getter="is_scroll_following" default="false"> If [code]true[/code], the window scrolls down to display new content automatically. @@ -316,7 +328,7 @@ <argument index="0" name="meta" type="Nil"> </argument> <description> - Triggered when the user clicks on content between [code][url][/code] tags. If the meta is defined in text, e.g. [code][url={"data"="hi"}]hi[/url][/code], then the parameter for this signal will be a [String] type. If a particular type or an object is desired, the [method push_meta] method must be used to manually insert the data into the tag stack. + Triggered when the user clicks on content between meta tags. If the meta is defined in text, e.g. [code][url={"data"="hi"}]hi[/url][/code], then the parameter for this signal will be a [String] type. If a particular type or an object is desired, the [method push_meta] method must be used to manually insert the data into the tag stack. </description> </signal> <signal name="meta_hover_ended"> @@ -336,18 +348,25 @@ </signals> <constants> <constant name="ALIGN_LEFT" value="0" enum="Align"> + Makes text left aligned. </constant> <constant name="ALIGN_CENTER" value="1" enum="Align"> + Makes text centered. </constant> <constant name="ALIGN_RIGHT" value="2" enum="Align"> + Makes text right aligned. </constant> <constant name="ALIGN_FILL" value="3" enum="Align"> + Makes text fill width. </constant> <constant name="LIST_NUMBERS" value="0" enum="ListType"> + Each list item has a number marker. </constant> <constant name="LIST_LETTERS" value="1" enum="ListType"> + Each list item has a letter marker. </constant> <constant name="LIST_DOTS" value="2" enum="ListType"> + Each list item has a filled circle marker. </constant> <constant name="ITEM_FRAME" value="0" enum="ItemType"> </constant> diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml index bf22b865d3..6a4105ca2f 100644 --- a/doc/classes/SceneTree.xml +++ b/doc/classes/SceneTree.xml @@ -185,8 +185,10 @@ <method name="quit"> <return type="void"> </return> + <argument index="0" name="exit_code" type="int" default="-1"> + </argument> <description> - Quits the application. + Quits the application. A process [code]exit_code[/code] can optionally be passed as an argument. If this argument is [code]0[/code] or greater, it will override the [member OS.exit_code] defined before quitting the application. </description> </method> <method name="reload_current_scene"> @@ -289,7 +291,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/Script.xml b/doc/classes/Script.xml index e8a88acdb5..91014580d3 100644 --- a/doc/classes/Script.xml +++ b/doc/classes/Script.xml @@ -4,7 +4,7 @@ A class stored as a resource. </brief_description> <description> - A class stored as a resource. A script exends the functionality of all objects that instance it. + A class stored as a resource. A script extends the functionality of all objects that instance it. The [code]new[/code] method of a script subclass creates a new instance. [method Object.set_script] extends an existing object, if that object's class matches one of the script's base classes. </description> <tutorials> diff --git a/doc/classes/ScrollContainer.xml b/doc/classes/ScrollContainer.xml index 5218b65886..94920d57e5 100644 --- a/doc/classes/ScrollContainer.xml +++ b/doc/classes/ScrollContainer.xml @@ -23,6 +23,9 @@ </method> </methods> <members> + <member name="follow_focus" type="bool" setter="set_follow_focus" getter="is_following_focus" default="false"> + If [code]true[/code], the ScrollContainer will automatically scroll to focused children (including indirect children) to make sure they are fully visible. + </member> <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" override="true" default="true" /> <member name="scroll_deadzone" type="int" setter="set_deadzone" getter="get_deadzone" default="0"> </member> 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/SphereMesh.xml b/doc/classes/SphereMesh.xml index 6d81d8ff82..43f19f9f4e 100644 --- a/doc/classes/SphereMesh.xml +++ b/doc/classes/SphereMesh.xml @@ -15,7 +15,7 @@ Full height of the sphere. </member> <member name="is_hemisphere" type="bool" setter="set_is_hemisphere" getter="get_is_hemisphere" default="false"> - Determines whether a full sphere or a hemisphere is created. + If [code]true[/code], a hemisphere is created rather than a full sphere. [b]Note:[/b] To get a regular hemisphere, the height and radius of the sphere must be equal. </member> <member name="radial_segments" type="int" setter="set_radial_segments" getter="get_radial_segments" default="64"> diff --git a/doc/classes/SplitContainer.xml b/doc/classes/SplitContainer.xml index d756c17cef..25d4546c3a 100644 --- a/doc/classes/SplitContainer.xml +++ b/doc/classes/SplitContainer.xml @@ -4,7 +4,7 @@ Container for splitting and adjusting. </brief_description> <description> - Container for splitting two controls vertically or horizontally, with a grabber that allows adjusting the split offset or ratio. + Container for splitting two [Control]s vertically or horizontally, with a grabber that allows adjusting the split offset or ratio. </description> <tutorials> </tutorials> @@ -13,16 +13,19 @@ <return type="void"> </return> <description> + Clamps the [member split_offset] value to not go outside the currently possible minimal and maximum values. </description> </method> </methods> <members> <member name="collapsed" type="bool" setter="set_collapsed" getter="is_collapsed" default="false"> + If [code]true[/code], the area of the first [Control] will be collapsed and the dragger will be disabled. </member> <member name="dragger_visibility" type="int" setter="set_dragger_visibility" getter="get_dragger_visibility" enum="SplitContainer.DraggerVisibility" default="0"> - Determines whether the dragger is visible. + Determines the dragger's visibility. See [enum DraggerVisibility] for details. </member> <member name="split_offset" type="int" setter="set_split_offset" getter="get_split_offset" default="0"> + The initial offset of the splitting between the two [Control]s, with [code]0[/code] being at the end of the first [Control]. </member> </members> <signals> @@ -36,13 +39,13 @@ </signals> <constants> <constant name="DRAGGER_VISIBLE" value="0" enum="DraggerVisibility"> - The split dragger is visible. + The split dragger is visible when the cursor hovers it. </constant> <constant name="DRAGGER_HIDDEN" value="1" enum="DraggerVisibility"> - The split dragger is invisible. + The split dragger is never visible. </constant> <constant name="DRAGGER_HIDDEN_COLLAPSED" value="2" enum="DraggerVisibility"> - The split dragger is invisible and collapsed. + The split dragger is never visible and its space collapsed. </constant> </constants> </class> 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..e5f126c344 100644 --- a/doc/classes/TabContainer.xml +++ b/doc/classes/TabContainer.xml @@ -144,12 +144,13 @@ 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. </member> <member name="use_hidden_tabs_for_min_size" type="bool" setter="set_use_hidden_tabs_for_min_size" getter="get_use_hidden_tabs_for_min_size" default="false"> + If [code]true[/code], children [Control] nodes that are hidden have their minimum size take into account in the total, instead of only the currently visible one. </member> </members> <signals> diff --git a/doc/classes/Tabs.xml b/doc/classes/Tabs.xml index 6bd7b8c2c3..04119b7cdb 100644 --- a/doc/classes/Tabs.xml +++ b/doc/classes/Tabs.xml @@ -33,6 +33,7 @@ <return type="bool"> </return> <description> + Returns [code]true[/code] if the offset buttons (the ones that appear when there's not enough space for all tabs) are visible. </description> </method> <method name="get_select_with_rmb" qualifiers="const"> @@ -71,6 +72,7 @@ <return type="int"> </return> <description> + Returns the number of hidden tabs offsetted to the left. </description> </method> <method name="get_tab_rect" qualifiers="const"> @@ -179,11 +181,13 @@ If [code]true[/code], tabs can be rearranged with mouse drag. </member> <member name="scrolling_enabled" type="bool" setter="set_scrolling_enabled" getter="get_scrolling_enabled" default="true"> + if [code]true[/code], the mouse's scroll wheel cab be used to navigate the scroll view. </member> <member name="tab_align" type="int" setter="set_tab_align" getter="get_tab_align" enum="Tabs.TabAlign" default="1"> - The alignment of all tabs. See enum [code]TabAlign[/code] constants for details. + The alignment of all tabs. See [enum TabAlign] for details. </member> <member name="tab_close_display_policy" type="int" setter="set_tab_close_display_policy" getter="get_tab_close_display_policy" enum="Tabs.CloseButtonDisplayPolicy" default="0"> + Sets when the close button will appear on the tabs. See [enum CloseButtonDisplayPolicy] for details. </member> </members> <signals> @@ -191,36 +195,42 @@ <argument index="0" name="idx_to" type="int"> </argument> <description> + Emitted when the active tab is rearranged via mouse drag. See [member drag_to_rearrange_enabled]. </description> </signal> <signal name="right_button_pressed"> <argument index="0" name="tab" type="int"> </argument> <description> + Emitted when a tab is right-clicked. </description> </signal> <signal name="tab_changed"> <argument index="0" name="tab" type="int"> </argument> <description> + Emitted when switching to another tab. </description> </signal> <signal name="tab_clicked"> <argument index="0" name="tab" type="int"> </argument> <description> + Emitted when a tab is clicked, even if it is the current tab. </description> </signal> <signal name="tab_close"> <argument index="0" name="tab" type="int"> </argument> <description> + Emitted when a tab is closed. </description> </signal> <signal name="tab_hover"> <argument index="0" name="tab" type="int"> </argument> <description> + Emitted when a tab is hovered by the mouse. </description> </signal> </signals> @@ -238,10 +248,13 @@ Represents the size of the [enum TabAlign] enum. </constant> <constant name="CLOSE_BUTTON_SHOW_NEVER" value="0" enum="CloseButtonDisplayPolicy"> + Never show the close buttons. </constant> <constant name="CLOSE_BUTTON_SHOW_ACTIVE_ONLY" value="1" enum="CloseButtonDisplayPolicy"> + Only show the close button on the currently active tab. </constant> <constant name="CLOSE_BUTTON_SHOW_ALWAYS" value="2" enum="CloseButtonDisplayPolicy"> + Show the close button on all tabs. </constant> <constant name="CLOSE_BUTTON_MAX" value="3" enum="CloseButtonDisplayPolicy"> Represents the size of the [enum CloseButtonDisplayPolicy] enum. diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml index 75fceac500..ad2cadb96b 100644 --- a/doc/classes/TextEdit.xml +++ b/doc/classes/TextEdit.xml @@ -459,6 +459,12 @@ <member name="wrap_enabled" type="bool" setter="set_wrap_enabled" getter="is_wrap_enabled" default="false"> If [code]true[/code], enables text wrapping when it goes beyond the edge of what is visible. </member> + <member name="scroll_vertical" type="float" setter="set_v_scroll" getter="get_v_scroll" default="0.0"> + The current vertical scroll value. + </member> + <member name="scroll_horizontal" type="int" setter="set_h_scroll" getter="get_h_scroll" default="0"> + The current horizontal scroll value. + </member> </members> <signals> <signal name="breakpoint_toggled"> 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/TextureProgress.xml b/doc/classes/TextureProgress.xml index 479ab865ba..c16d6f58bc 100644 --- a/doc/classes/TextureProgress.xml +++ b/doc/classes/TextureProgress.xml @@ -86,7 +86,7 @@ The [member texture_progress] fills from right to left. </constant> <constant name="FILL_TOP_TO_BOTTOM" value="2" enum="FillMode"> - The [member texture_progress] fills from top to bototm. + The [member texture_progress] fills from top to bottom. </constant> <constant name="FILL_BOTTOM_TO_TOP" value="3" enum="FillMode"> The [member texture_progress] fills from bottom to top. 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/Timer.xml b/doc/classes/Timer.xml index 4f455fb377..3e4b68d91d 100644 --- a/doc/classes/Timer.xml +++ b/doc/classes/Timer.xml @@ -49,7 +49,7 @@ </member> <member name="time_left" type="float" setter="" getter="get_time_left"> The timer's remaining time in seconds. Returns 0 if the timer is inactive. - [b]Note:[/b] You cannot set this value. To change the timer's remaining time, use [member wait_time]. + [b]Note:[/b] You cannot set this value. To change the timer's remaining time, use [method start]. </member> <member name="wait_time" type="float" setter="set_wait_time" getter="get_wait_time" default="1.0"> Wait time in seconds. 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..aa1f8638d2 100644 --- a/doc/classes/Tree.xml +++ b/doc/classes/Tree.xml @@ -43,14 +43,18 @@ <argument index="1" name="idx" type="int" default="-1"> </argument> <description> - Create an item in the tree and add it as the last child of [code]parent[/code]. If [code]parent[/code] is [code]null[/code], it will be added as the root's last child, or it'll be the the root itself if the tree is empty. + Creates an item in the tree and adds it as a child of [code]parent[/code]. + If [code]parent[/code] is [code]null[/code], the root item will be the parent, or the new item will be the root itself if the tree is empty. + The new item will be the [code]idx[/code]th child of parent, or it will be the last child if there are not enough siblings. </description> </method> <method name="ensure_cursor_is_visible"> <return type="void"> </return> <description> - Makes the currently selected item visible. This will scroll the tree to make sure the selected item is visible. + Makes the currently focused cell visible. + This will scroll the tree if necessary. In [constant SELECT_ROW] mode, this will not do horizontal scrolling, as all the cells in the selected row is focused logically. + [b]Note:[/b] Despite the name of this method, the focus cursor itself is only visible in [constant SELECT_MULTI] mode. </description> </method> <method name="get_column_at_position" qualifiers="const"> @@ -59,7 +63,7 @@ <argument index="0" name="position" type="Vector2"> </argument> <description> - Returns the column index under the given point. + Returns the column index at [code]position[/code], or -1 if no item is there. </description> </method> <method name="get_column_title" qualifiers="const"> @@ -93,8 +97,9 @@ <argument index="0" name="position" type="Vector2"> </argument> <description> - If [member drop_mode_flags] includes [constant DROP_MODE_INBETWEEN], returns -1 if [code]position[/code] is the upper part of a tree item at that position, 1 for the lower part, and additionally 0 for the middle part if [member drop_mode_flags] includes [constant DROP_MODE_ON_ITEM]. - Otherwise, returns 0. If there are no tree items at [code]position[/code], returns -100. + Returns the drop section at [code]position[/code], or -100 if no item is there. + Values -1, 0, or 1 will be returned for the "above item", "on item", and "below item" drop sections, respectively. See [enum DropModeFlags] for a description of each drop section. + To get the item which the returned drop section is relative to, use [method get_item_at_position]. </description> </method> <method name="get_edited" qualifiers="const"> @@ -119,7 +124,7 @@ <argument index="1" name="column" type="int" default="-1"> </argument> <description> - Returns the rectangle area for the specified item. If column is specified, only get the position and size of that column, otherwise get the rectangle containing all columns. + Returns the rectangle area for the specified item. If [code]column[/code] is specified, only get the position and size of that column, otherwise get the rectangle containing all columns. </description> </method> <method name="get_item_at_position" qualifiers="const"> @@ -137,7 +142,8 @@ <argument index="0" name="from" type="Object"> </argument> <description> - Returns the next selected item after the given one. + Returns the next selected item after the given one, or [code]null[/code] if the end is reached. + If [code]from[/code] is [code]null[/code], this returns the first selected item. </description> </method> <method name="get_pressed_button" qualifiers="const"> @@ -151,7 +157,7 @@ <return type="TreeItem"> </return> <description> - Returns the tree's root item. + Returns the tree's root item, or [code]null[/code] if the tree is empty. </description> </method> <method name="get_scroll" qualifiers="const"> @@ -165,14 +171,18 @@ <return type="TreeItem"> </return> <description> - Returns the currently selected item. + Returns the currently focused item, or [code]null[/code] if no item is focused. + In [constant SELECT_ROW] and [constant SELECT_SINGLE] modes, the focused item is same as the selected item. In [constant SELECT_MULTI] mode, the focused item is the item under the focus cursor, not necessarily selected. + To get the currently selected item(s), use [method get_next_selected]. </description> </method> <method name="get_selected_column" qualifiers="const"> <return type="int"> </return> <description> - Returns the current selection's column. + Returns the currently focused column, or -1 if no column is focused. + In [constant SELECT_SINGLE] mode, the focused column is the selected column. In [constant SELECT_ROW] mode, the focused column is always 0 if any item is selected. In [constant SELECT_MULTI] mode, the focused column is the column under the focus cursor, and there are not necessarily any column selected. + To tell whether a column of an item is selected, use [method TreeItem.is_selected]. </description> </method> <method name="set_column_expand"> @@ -229,7 +239,8 @@ 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. + This controls the drop sections, i.e. the decision and drawing of possible drop locations based on the mouse position. </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 +251,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> @@ -278,6 +289,7 @@ <argument index="0" name="position" type="Vector2"> </argument> <description> + Emitted when the right mouse button is pressed in the empty space of the tree. </description> </signal> <signal name="empty_tree_rmb_selected"> @@ -343,23 +355,34 @@ </signal> <signal name="nothing_selected"> <description> + Emitted when a left mouse button click does not select any item. </description> </signal> </signals> <constants> <constant name="SELECT_SINGLE" value="0" enum="SelectMode"> - Allows selection of a single item at a time. + Allows selection of a single cell at a time. From the perspective of items, only a single item is allowed to be selected. And there is only one column selected in the selected item. + The focus cursor is always hidden in this mode, but it is positioned at the current selection, making the currently selected item the currently focused item. </constant> <constant name="SELECT_ROW" value="1" enum="SelectMode"> + Allows selection of a single row at a time. From the perspective of items, only a single items is allowed to be selected. And all the columns are selected in the selected item. + The focus cursor is always hidden in this mode, but it is positioned at the first column of the current selection, making the currently selected item the currently focused item. </constant> <constant name="SELECT_MULTI" value="2" enum="SelectMode"> - Allows selection of multiple items at the same time. + Allows selection of multiple cells at the same time. From the perspective of items, multiple items are allowed to be selected. And there can be multiple columns selected in each selected item. + The focus cursor is visible in this mode, the item or column under the cursor is not necessarily selected. </constant> <constant name="DROP_MODE_DISABLED" value="0" enum="DropModeFlags"> + Disables all drop sections, but still allows to detect the "on item" drop section by [method get_drop_section_at_position]. + [b]Note:[/b] This is the default flag, it has no effect when combined with other flags. </constant> <constant name="DROP_MODE_ON_ITEM" value="1" enum="DropModeFlags"> + Enables the "on item" drop section. This drop section covers the entire item. + When combined with [constant DROP_MODE_INBETWEEN], this drop section halves the height and stays centered vertically. </constant> <constant name="DROP_MODE_INBETWEEN" value="2" enum="DropModeFlags"> + Enables "above item" and "below item" drop sections. The "above item" drop section covers the top half of the item, and the "below item" drop section covers the bottom half. + When combined with [constant DROP_MODE_ON_ITEM], these drop sections halves the height and stays on top / bottom accordingly. </constant> </constants> <theme_items> 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/UndoRedo.xml b/doc/classes/UndoRedo.xml index 7834719af6..52ff7ef38b 100644 --- a/doc/classes/UndoRedo.xml +++ b/doc/classes/UndoRedo.xml @@ -32,7 +32,7 @@ </tutorials> <methods> <method name="add_do_method" qualifiers="vararg"> - <return type="Variant"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -65,7 +65,7 @@ </description> </method> <method name="add_undo_method" qualifiers="vararg"> - <return type="Variant"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> 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 9bc46881f9..58dd36daa5 100644 --- a/doc/classes/Viewport.xml +++ b/doc/classes/Viewport.xml @@ -126,6 +126,7 @@ <return type="bool"> </return> <description> + Returns [code]true[/code] if the viewport is currently performing a drag operation. </description> </method> <method name="input"> @@ -304,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/ViewportContainer.xml b/doc/classes/ViewportContainer.xml index e4c6091909..2f1bc5d799 100644 --- a/doc/classes/ViewportContainer.xml +++ b/doc/classes/ViewportContainer.xml @@ -15,6 +15,9 @@ If [code]true[/code], the viewport will be scaled to the control's size. </member> <member name="stretch_shrink" type="int" setter="set_stretch_shrink" getter="get_stretch_shrink" default="1"> + Divides the viewport's effective resolution by this value while preserving its scale. This can be used to speed up rendering. + For example, a 1280×720 viewport with [member stretch_shrink] set to [code]2[/code] will be rendered at 640×360 while occupying the same size in the container. + [b]Note:[/b] [member stretch] must be [code]true[/code] for this property to work. </member> </members> <constants> diff --git a/doc/classes/VisualServer.xml b/doc/classes/VisualServer.xml index 895aba2473..6b66721237 100644 --- a/doc/classes/VisualServer.xml +++ b/doc/classes/VisualServer.xml @@ -6,8 +6,16 @@ <description> Server for anything visible. The visual server is the API backend for everything visible. The whole scene system mounts on it to display. The visual server is completely opaque, the internals are entirely implementation specific and cannot be accessed. + The visual server can be used to bypass the scene system entirely. + Resources are created using the [code]*_create[/code] functions. + All objects are drawn to a viewport. You can use the [Viewport] attached to the [SceneTree] or you can create one yourself with [method viewport_create]. When using a custom scenario or canvas, the scenario or canvas needs to be attached to the viewport using [method viewport_set_scenario] or [method viewport_attach_canvas]. + In 3D, all visual objects must be associated with a scenario. The scenario is a visual representation of the world. If accessing the visual server from a running game, the scenario can be accessed from the scene tree from any [Spatial] node with [method Spatial.get_world]. Otherwise, a scenario can be created with [method scenario_create]. + Similarly in 2D, a canvas is needed to draw all canvas items. + In 3D, all visible objects are comprised of a resource and an instance. A resource can be a mesh, a particle system, a light, or any other 3D object. In order to be visible resources must be attached to an instance using [method instance_set_base]. The instance must also be attached to the scenario using [method instance_set_scenario] in order to be visible. + In 2D, all visible objects are some form of canvas item. In order to be visible, a canvas item needs to be the child of a canvas attached to a viewport, or it needs to be the child of another canvas item that is eventually attached to the canvas. </description> <tutorials> + <link>http://docs.godotengine.org/en/latest/tutorials/optimization/using_servers.html</link> </tutorials> <methods> <method name="black_bars_set_images"> @@ -44,6 +52,8 @@ <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. + 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="camera_set_cull_mask"> @@ -54,6 +64,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 +75,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 +92,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 +107,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 +122,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 +133,7 @@ <argument index="1" name="transform" type="Transform"> </argument> <description> + Sets [Transform] of camera. </description> </method> <method name="camera_set_use_vertical_aspect"> @@ -128,13 +144,15 @@ <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"> <return type="RID"> </return> <description> - Creates a canvas and returns the assigned [RID]. + Creates a canvas and returns the assigned [RID]. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_*[/code] VisualServer functions. + 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="canvas_item_add_circle"> @@ -198,6 +216,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 +430,12 @@ </argument> <argument index="9" name="normal_map" type="RID"> </argument> + <argument index="10" name="antialiased" type="bool" default="false"> + </argument> + <argument index="11" name="antialiasing_use_indices" type="bool" default="false"> + </argument> <description> + Adds a triangle array to the [CanvasItem]'s draw commands. </description> </method> <method name="canvas_item_clear"> @@ -427,7 +451,8 @@ <return type="RID"> </return> <description> - Creates a new [CanvasItem] and returns its [RID]. + Creates a new [CanvasItem] and returns its [RID]. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_item_*[/code] VisualServer functions. + 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="canvas_item_set_clip"> @@ -475,6 +500,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"> @@ -540,7 +566,7 @@ <argument index="1" name="parent" type="RID"> </argument> <description> - Sets the parent for the [CanvasItem]. + Sets the parent for the [CanvasItem]. The parent can be another canvas item, or it can be the root canvas that is attached to the viewport. </description> </method> <method name="canvas_item_set_self_modulate"> @@ -635,7 +661,8 @@ <return type="RID"> </return> <description> - Creates a canvas light. + Creates a canvas light and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_light_*[/code] VisualServer functions. + 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="canvas_light_occluder_attach_to_canvas"> @@ -653,7 +680,8 @@ <return type="RID"> </return> <description> - Creates a light occluder. + Creates a light occluder and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_light_ocluder_*[/code] VisualServer functions. + 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="canvas_light_occluder_set_enabled"> @@ -787,7 +815,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 +826,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 +870,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 +903,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 +914,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,13 +938,15 @@ <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"> <return type="RID"> </return> <description> - Creates a new light occluder polygon. + Creates a new light occluder polygon and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_occluder_polygon_*[/code] VisualServer functions. + 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="canvas_occluder_polygon_set_cull_mode"> @@ -924,7 +957,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 +1012,9 @@ <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. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach this directional light to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="draw"> @@ -989,12 +1025,15 @@ <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. + 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="environment_set_adjustment"> @@ -1013,6 +1052,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 +1067,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 +1078,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 +1089,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 +1100,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 +1111,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 +1130,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 +1149,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 +1166,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 +1187,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 +1204,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 +1233,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 +1244,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 +1255,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 +1266,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 +1299,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 +1320,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 +1345,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 +1363,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 +1388,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"> @@ -1347,6 +1405,22 @@ Returns the id of the test texture. Creates one if none exists. </description> </method> + <method name="get_video_adapter_name" qualifiers="const"> + <return type="String"> + </return> + <description> + Returns the name of the video adapter (e.g. "GeForce GTX 1080/PCIe/SSE2"). + [b]Note:[/b] When running a headless or server binary, this function returns an empty string. + </description> + </method> + <method name="get_video_adapter_vendor" qualifiers="const"> + <return type="String"> + </return> + <description> + Returns the vendor of the video adapter (e.g. "NVIDIA Corporation"). + [b]Note:[/b] When running a headless or server binary, this function returns an empty string. + </description> + </method> <method name="get_white_texture"> <return type="RID"> </return> @@ -1358,6 +1432,9 @@ <return type="RID"> </return> <description> + Creates a GI probe and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]gi_probe_*[/code] VisualServer functions. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach this GI probe to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="gi_probe_get_bias" qualifiers="const"> @@ -1366,6 +1443,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns the bias value for the GI probe. Bias is used to avoid self occlusion. Equivalent to [member GIProbeData.bias]. </description> </method> <method name="gi_probe_get_bounds" qualifiers="const"> @@ -1374,6 +1452,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns the axis-aligned bounding box that covers the full extent of the GI probe. </description> </method> <method name="gi_probe_get_cell_size" qualifiers="const"> @@ -1382,6 +1461,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns the cell size set by [method gi_probe_set_cell_size]. </description> </method> <method name="gi_probe_get_dynamic_data" qualifiers="const"> @@ -1390,6 +1470,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns the data used by the GI probe. </description> </method> <method name="gi_probe_get_dynamic_range" qualifiers="const"> @@ -1398,6 +1479,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns the dynamic range set for this GI probe. Equivalent to [member GIProbe.dynamic_range]. </description> </method> <method name="gi_probe_get_energy" qualifiers="const"> @@ -1406,6 +1488,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns the energy multiplier for this GI probe. Equivalent to [member GIProbe.energy]. </description> </method> <method name="gi_probe_get_normal_bias" qualifiers="const"> @@ -1414,6 +1497,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns the normal bias for this GI probe. Equivalent to [member GIProbe.normal_bias]. </description> </method> <method name="gi_probe_get_propagation" qualifiers="const"> @@ -1422,6 +1506,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns the propagation value for this GI probe. Equivalent to [member GIProbe.propagation]. </description> </method> <method name="gi_probe_get_to_cell_xform" qualifiers="const"> @@ -1430,6 +1515,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns the Transform set by [method gi_probe_set_to_cell_xform]. </description> </method> <method name="gi_probe_is_compressed" qualifiers="const"> @@ -1438,6 +1524,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns [code]true[/code] if the GI probe data associated with this GI probe is compressed. Equivalent to [member GIProbe.compress]. </description> </method> <method name="gi_probe_is_interior" qualifiers="const"> @@ -1446,6 +1533,7 @@ <argument index="0" name="probe" type="RID"> </argument> <description> + Returns [code]true[/code] if the GI probe is set to interior, meaning it does not account for sky light. Equivalent to [member GIProbe.interior]. </description> </method> <method name="gi_probe_set_bias"> @@ -1456,6 +1544,7 @@ <argument index="1" name="bias" type="float"> </argument> <description> + Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe.bias]. </description> </method> <method name="gi_probe_set_bounds"> @@ -1466,6 +1555,7 @@ <argument index="1" name="bounds" type="AABB"> </argument> <description> + Sets the axis-aligned bounding box that covers the extent of the GI probe. </description> </method> <method name="gi_probe_set_cell_size"> @@ -1476,6 +1566,7 @@ <argument index="1" name="range" type="float"> </argument> <description> + Sets the size of individual cells within the GI probe. </description> </method> <method name="gi_probe_set_compress"> @@ -1486,6 +1577,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + Sets the compression setting for the GI probe data. Compressed data will take up less space but may look worse. Equivalent to [member GIProbe.compress]. </description> </method> <method name="gi_probe_set_dynamic_data"> @@ -1496,6 +1588,7 @@ <argument index="1" name="data" type="PoolIntArray"> </argument> <description> + Sets the data to be used in the GI probe for lighting calculations. Normally this is created and called internally within the [GIProbe] node. You should not try to set this yourself. </description> </method> <method name="gi_probe_set_dynamic_range"> @@ -1506,6 +1599,7 @@ <argument index="1" name="range" type="int"> </argument> <description> + Sets the dynamic range of the GI probe. Dynamic range sets the limit for how bright lights can be. A smaller range captures greater detail but limits how bright lights can be. Equivalent to [member GIProbe.dynamic_range]. </description> </method> <method name="gi_probe_set_energy"> @@ -1516,6 +1610,7 @@ <argument index="1" name="energy" type="float"> </argument> <description> + Sets the energy multiplier for this GI probe. A higher energy makes the indirect light from the GI probe brighter. Equivalent to [member GIProbe.energy]. </description> </method> <method name="gi_probe_set_interior"> @@ -1526,6 +1621,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + Sets the interior value of this GI probe. A GI probe set to interior does not include the sky when calculating lighting. Equivalent to [member GIProbe.interior]. </description> </method> <method name="gi_probe_set_normal_bias"> @@ -1536,6 +1632,7 @@ <argument index="1" name="bias" type="float"> </argument> <description> + Sets the normal bias for this GI probe. Normal bias behaves similar to the other form of bias and may help reduce self-occlusion. Equivalent to [member GIProbe.normal_bias]. </description> </method> <method name="gi_probe_set_propagation"> @@ -1546,6 +1643,7 @@ <argument index="1" name="propagation" type="float"> </argument> <description> + Sets the propagation of light within this GI probe. Equivalent to [member GIProbe.propagation]. </description> </method> <method name="gi_probe_set_to_cell_xform"> @@ -1556,6 +1654,7 @@ <argument index="1" name="xform" type="Transform"> </argument> <description> + Sets the to cell [Transform] for this GI probe. </description> </method> <method name="has_changed" qualifiers="const"> @@ -1571,6 +1670,7 @@ <argument index="0" name="feature" type="int" enum="VisualServer.Features"> </argument> <description> + Not yet implemented. Always returns [code]false[/code]. </description> </method> <method name="has_os_feature" qualifiers="const"> @@ -1592,6 +1692,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 +1701,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 +1712,16 @@ <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 immediate geometry 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. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach this immediate geometry to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="immediate_end"> @@ -1624,6 +1730,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 +1739,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 +1750,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 +1761,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 +1772,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 +1783,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 +1794,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 +1805,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"> @@ -1702,13 +1816,14 @@ <argument index="1" name="vertex" type="Vector2"> </argument> <description> + Adds the next vertex using the information provided in advance. This is a helper class that calls [method immediate_vertex] under the hood. Equivalent to [method ImmediateGeometry.add_vertex]. </description> </method> <method name="init"> <return type="void"> </return> <description> - Initializes the visual server. + Initializes the visual server. This function is called internally by platform-dependent code during engine initialization. If called from a running game, it will not do anything. </description> </method> <method name="instance_attach_object_instance_id"> @@ -1719,6 +1834,7 @@ <argument index="1" name="id" type="int"> </argument> <description> + Attaches a unique Object ID to instance. Object ID must be attached to instance for proper culling with [method instances_cull_aabb], [method instances_cull_convex], and [method instances_cull_ray]. </description> </method> <method name="instance_attach_skeleton"> @@ -1729,12 +1845,16 @@ <argument index="1" name="skeleton" type="RID"> </argument> <description> + Attaches a skeleton to an instance. Removes the previous skeleton from the instance. </description> </method> <method name="instance_create"> <return type="RID"> </return> <description> + Creates a visual instance and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]instance_*[/code] VisualServer functions. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + An instance is a way of placing a 3D object in the scenario. Objects like particles, meshes, and reflection probes need to be associated with an instance to be visible in the scenario using [method instance_set_base]. </description> </method> <method name="instance_create2"> @@ -1745,6 +1865,8 @@ <argument index="1" name="scenario" type="RID"> </argument> <description> + Creates a visual instance, adds it to the VisualServer, and sets both base and scenario. It can be accessed with the RID that is returned. This RID will be used in all [code]instance_*[/code] VisualServer functions. + 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="instance_geometry_set_as_instance_lod"> @@ -1755,6 +1877,7 @@ <argument index="1" name="as_lod_of_instance" type="RID"> </argument> <description> + Not implemented in Godot 3.x. </description> </method> <method name="instance_geometry_set_cast_shadows_setting"> @@ -1765,6 +1888,7 @@ <argument index="1" name="shadow_casting_setting" type="int" enum="VisualServer.ShadowCastingSetting"> </argument> <description> + Sets the shadow casting setting to one of [enum ShadowCastingSetting]. Equivalent to [member GeometryInstance.cast_shadow]. </description> </method> <method name="instance_geometry_set_draw_range"> @@ -1781,6 +1905,7 @@ <argument index="4" name="max_margin" type="float"> </argument> <description> + Not implemented in Godot 3.x. </description> </method> <method name="instance_geometry_set_flag"> @@ -1793,6 +1918,7 @@ <argument index="2" name="enabled" type="bool"> </argument> <description> + Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for more details. </description> </method> <method name="instance_geometry_set_material_override"> @@ -1803,6 +1929,7 @@ <argument index="1" name="material" type="RID"> </argument> <description> + Sets a material that will override the material for all surfaces on the mesh associated with this instance. Equivalent to [member GeometryInstance.material_override]. </description> </method> <method name="instance_set_base"> @@ -1813,6 +1940,7 @@ <argument index="1" name="base" type="RID"> </argument> <description> + Sets the base of the instance. A base can be any of the 3D objects that are created in the VisualServer that can be displayed. For example, any of the light types, mesh, multimesh, immediate geometry, particle system, reflection probe, lightmap capture, and the GI probe are all types that can be set as the base of an instance in order to be displayed in the scenario. </description> </method> <method name="instance_set_blend_shape_weight"> @@ -1825,6 +1953,7 @@ <argument index="2" name="weight" type="float"> </argument> <description> + Sets the weight for a given blend shape associated with this instance. </description> </method> <method name="instance_set_custom_aabb"> @@ -1835,6 +1964,7 @@ <argument index="1" name="aabb" type="AABB"> </argument> <description> + Sets a custom AABB to use when culling objects from the view frustum. Equivalent to [method GeometryInstance.set_custom_aabb]. </description> </method> <method name="instance_set_exterior"> @@ -1845,6 +1975,7 @@ <argument index="1" name="enabled" type="bool"> </argument> <description> + Function not implemented in Godot 3.x. </description> </method> <method name="instance_set_extra_visibility_margin"> @@ -1855,6 +1986,7 @@ <argument index="1" name="margin" type="float"> </argument> <description> + Sets a margin to increase the size of the AABB when culling objects from the view frustum. This allows you avoid culling objects that fall outside the view frustum. Equivalent to [member GeometryInstance.extra_cull_margin]. </description> </method> <method name="instance_set_layer_mask"> @@ -1865,6 +1997,7 @@ <argument index="1" name="mask" type="int"> </argument> <description> + Sets the render layers that this instance will be drawn to. Equivalent to [member VisualInstance.layers]. </description> </method> <method name="instance_set_scenario"> @@ -1875,6 +2008,7 @@ <argument index="1" name="scenario" type="RID"> </argument> <description> + Sets the scenario that the instance is in. The scenario is the 3D world that the objects will be displayed in. </description> </method> <method name="instance_set_surface_material"> @@ -1887,6 +2021,7 @@ <argument index="2" name="material" type="RID"> </argument> <description> + Sets the material of a specific surface. Equivalent to [method MeshInstance.set_surface_material]. </description> </method> <method name="instance_set_transform"> @@ -1897,6 +2032,7 @@ <argument index="1" name="transform" type="Transform"> </argument> <description> + Sets the world space transform of the instance. Equivalent to [member Spatial.transform]. </description> </method> <method name="instance_set_use_lightmap"> @@ -1909,6 +2045,7 @@ <argument index="2" name="lightmap" type="RID"> </argument> <description> + Sets the lightmap to use with this instance. </description> </method> <method name="instance_set_visible"> @@ -1919,6 +2056,7 @@ <argument index="1" name="visible" type="bool"> </argument> <description> + Sets whether an instance is drawn or not. Equivalent to [member Spatial.visible]. </description> </method> <method name="instances_cull_aabb" qualifiers="const"> @@ -1929,6 +2067,8 @@ <argument index="1" name="scenario" type="RID"> </argument> <description> + Returns an array of object IDs intersecting with the provided AABB. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query. This forces an update for all resources queued to update. + [b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision. </description> </method> <method name="instances_cull_convex" qualifiers="const"> @@ -1939,6 +2079,8 @@ <argument index="1" name="scenario" type="RID"> </argument> <description> + Returns an array of object IDs intersecting with the provided convex shape. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query. This forces an update for all resources queued to update. + [b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision. </description> </method> <method name="instances_cull_ray" qualifiers="const"> @@ -1951,7 +2093,7 @@ <argument index="2" name="scenario" type="RID"> </argument> <description> - Returns an array of object IDs intersecting with the provided 3D ray. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query. + Returns an array of object IDs intersecting with the provided 3D ray. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query. This forces an update for all resources queued to update. [b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision. </description> </method> @@ -1963,6 +2105,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + If [code]true[/code], this directional light will blend between shadow map splits resulting in a smoother transition between them. Equivalent to [member DirectionalLight.directional_shadow_blend_splits]. </description> </method> <method name="light_directional_set_shadow_depth_range_mode"> @@ -1973,6 +2116,7 @@ <argument index="1" name="range_mode" type="int" enum="VisualServer.LightDirectionalShadowDepthRangeMode"> </argument> <description> + Sets the shadow depth range mode for this directional light. Equivalent to [member DirectionalLight.directional_shadow_depth_range]. See [enum LightDirectionalShadowDepthRangeMode] for options. </description> </method> <method name="light_directional_set_shadow_mode"> @@ -1983,6 +2127,7 @@ <argument index="1" name="mode" type="int" enum="VisualServer.LightDirectionalShadowMode"> </argument> <description> + Sets the shadow mode for this directional light. Equivalent to [member DirectionalLight.directional_shadow_mode]. See [enum LightDirectionalShadowMode] for options. </description> </method> <method name="light_omni_set_shadow_detail"> @@ -1993,6 +2138,7 @@ <argument index="1" name="detail" type="int" enum="VisualServer.LightOmniShadowDetail"> </argument> <description> + Sets whether to use vertical or horizontal detail for this omni light. This can be used to alleviate artifacts in the shadow map. Equivalent to [member OmniLight.omni_shadow_detail]. </description> </method> <method name="light_omni_set_shadow_mode"> @@ -2003,6 +2149,7 @@ <argument index="1" name="mode" type="int" enum="VisualServer.LightOmniShadowMode"> </argument> <description> + Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual paraboloid is faster but may suffer from artifacts. Equivalent to [member OmniLight.omni_shadow_mode]. </description> </method> <method name="light_set_color"> @@ -2013,6 +2160,7 @@ <argument index="1" name="color" type="Color"> </argument> <description> + Sets the color of the light. Equivalent to [member Light.light_color]. </description> </method> <method name="light_set_cull_mask"> @@ -2023,6 +2171,7 @@ <argument index="1" name="mask" type="int"> </argument> <description> + Sets the cull mask for this Light. Lights only affect objects in the selected layers. Equivalent to [member Light.light_cull_mask]. </description> </method> <method name="light_set_negative"> @@ -2033,6 +2182,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + If [code]true[/code], light will subtract light instead of adding light. Equivalent to [member Light.light_negative]. </description> </method> <method name="light_set_param"> @@ -2045,6 +2195,7 @@ <argument index="2" name="value" type="float"> </argument> <description> + Sets the specified light parameter. See [enum LightParam] for options. Equivalent to [method Light.set_param]. </description> </method> <method name="light_set_projector"> @@ -2055,6 +2206,7 @@ <argument index="1" name="texture" type="RID"> </argument> <description> + Not implemented in Godot 3.x. </description> </method> <method name="light_set_reverse_cull_face_mode"> @@ -2065,6 +2217,7 @@ <argument index="1" name="enabled" type="bool"> </argument> <description> + If [code]true[/code], reverses the backface culling of the mesh. This can be useful when you have a flat mesh that has a light behind it. If you need to cast a shadow on both sides of the mesh, set the mesh to use double sided shadows with [method instance_geometry_set_cast_shadows_setting]. Equivalent to [member Light.shadow_reverse_cull_face]. </description> </method> <method name="light_set_shadow"> @@ -2075,6 +2228,7 @@ <argument index="1" name="enabled" type="bool"> </argument> <description> + If [code]true[/code], light will cast shadows. Equivalent to [member Light.shadow_enabled]. </description> </method> <method name="light_set_shadow_color"> @@ -2085,6 +2239,7 @@ <argument index="1" name="color" type="Color"> </argument> <description> + Sets the color of the shadow cast by the light. Equivalent to [member Light.shadow_color]. </description> </method> <method name="light_set_use_gi"> @@ -2102,6 +2257,9 @@ <return type="RID"> </return> <description> + Creates a lightmap capture and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]lightmap_capture_*[/code] VisualServer functions. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach this lightmap capture to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="lightmap_capture_get_bounds" qualifiers="const"> @@ -2110,6 +2268,7 @@ <argument index="0" name="capture" type="RID"> </argument> <description> + Returns the size of the lightmap capture area. </description> </method> <method name="lightmap_capture_get_energy" qualifiers="const"> @@ -2118,6 +2277,7 @@ <argument index="0" name="capture" type="RID"> </argument> <description> + Returns the energy multiplier used by the lightmap capture. </description> </method> <method name="lightmap_capture_get_octree" qualifiers="const"> @@ -2126,6 +2286,7 @@ <argument index="0" name="capture" type="RID"> </argument> <description> + Returns the octree used by the lightmap capture. </description> </method> <method name="lightmap_capture_get_octree_cell_subdiv" qualifiers="const"> @@ -2134,6 +2295,7 @@ <argument index="0" name="capture" type="RID"> </argument> <description> + Returns the cell subdivision amount used by this lightmap capture's octree. </description> </method> <method name="lightmap_capture_get_octree_cell_transform" qualifiers="const"> @@ -2142,6 +2304,7 @@ <argument index="0" name="capture" type="RID"> </argument> <description> + Returns the cell transform for this lightmap capture's octree. </description> </method> <method name="lightmap_capture_set_bounds"> @@ -2152,6 +2315,7 @@ <argument index="1" name="bounds" type="AABB"> </argument> <description> + Sets the size of the area covered by the lightmap capture. Equivalent to [member BakedLightmapData.bounds]. </description> </method> <method name="lightmap_capture_set_energy"> @@ -2162,6 +2326,7 @@ <argument index="1" name="energy" type="float"> </argument> <description> + Sets the energy multiplier for this lightmap capture. Equivalent to [member BakedLightmapData.energy]. </description> </method> <method name="lightmap_capture_set_octree"> @@ -2172,6 +2337,7 @@ <argument index="1" name="octree" type="PoolByteArray"> </argument> <description> + Sets the octree to be used by this lightmap capture. This function is normally used by the [BakedLightmap] node. Equivalent to [member BakedLightmapData.octree]. </description> </method> <method name="lightmap_capture_set_octree_cell_subdiv"> @@ -2182,6 +2348,7 @@ <argument index="1" name="subdiv" type="int"> </argument> <description> + Sets the subdivision level of this lightmap capture's octree. Equivalent to [member BakedLightmapData.cell_subdiv]. </description> </method> <method name="lightmap_capture_set_octree_cell_transform"> @@ -2192,6 +2359,7 @@ <argument index="1" name="xform" type="Transform"> </argument> <description> + Sets the octree cell transform for this lightmap capture's octree. Equivalent to [member BakedLightmapData.cell_space_transform]. </description> </method> <method name="make_sphere_mesh"> @@ -2211,7 +2379,8 @@ <return type="RID"> </return> <description> - Returns an empty material. + Creates an empty material and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]material_*[/code] VisualServer functions. + 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="material_get_param" qualifiers="const"> @@ -2233,6 +2402,7 @@ <argument index="1" name="parameter" type="String"> </argument> <description> + Returns the default value for the param if available. Otherwise returns an empty [Variant]. </description> </method> <method name="material_get_shader" qualifiers="const"> @@ -2306,7 +2476,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 +2485,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"> @@ -2331,7 +2501,9 @@ <return type="RID"> </return> <description> - Creates a new mesh. + Creates a new mesh and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]mesh_*[/code] VisualServer functions. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach this mesh to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="mesh_get_blend_shape_count" qualifiers="const"> @@ -2503,6 +2675,7 @@ <argument index="3" name="array_index" type="int"> </argument> <description> + Function is unused in Godot 3.x. </description> </method> <method name="mesh_surface_get_format_stride" qualifiers="const"> @@ -2515,6 +2688,7 @@ <argument index="2" name="index_len" type="int"> </argument> <description> + Function is unused in Godot 3.x. </description> </method> <method name="mesh_surface_get_index_array" qualifiers="const"> @@ -2586,6 +2760,7 @@ <argument index="3" name="data" type="PoolByteArray"> </argument> <description> + Updates a specific region of a vertex buffer for the specified surface. Warning: this function alters the vertex buffer directly with no safety mechanisms, you can easily corrupt your mesh. </description> </method> <method name="multimesh_allocate"> @@ -2602,6 +2777,16 @@ <argument index="4" name="custom_data_format" type="int" enum="VisualServer.MultimeshCustomDataFormat" default="0"> </argument> <description> + Allocates space for the multimesh data. Format parameters determine how the data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum MultimeshColorFormat], and [enum MultimeshCustomDataFormat] for usage. Equivalent to [member MultiMesh.instance_count]. + </description> + </method> + <method name="multimesh_create"> + <return type="RID"> + </return> + <description> + Creates a new multimesh on the VisualServer and returns an [RID] handle. This RID will be used in all [code]multimesh_*[/code] VisualServer functions. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach this multimesh to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="multimesh_get_aabb" qualifiers="const"> @@ -2610,6 +2795,7 @@ <argument index="0" name="multimesh" type="RID"> </argument> <description> + Calculates and returns the axis-aligned bounding box that encloses all instances within the multimesh. </description> </method> <method name="multimesh_get_instance_count" qualifiers="const"> @@ -2618,6 +2804,7 @@ <argument index="0" name="multimesh" type="RID"> </argument> <description> + Returns the number of instances allocated for this multimesh. </description> </method> <method name="multimesh_get_mesh" qualifiers="const"> @@ -2626,6 +2813,7 @@ <argument index="0" name="multimesh" type="RID"> </argument> <description> + Returns the RID of the mesh that will be used in drawing this multimesh. </description> </method> <method name="multimesh_get_visible_instances" qualifiers="const"> @@ -2634,6 +2822,7 @@ <argument index="0" name="multimesh" type="RID"> </argument> <description> + Returns the number of visible instances for this multimesh. </description> </method> <method name="multimesh_instance_get_color" qualifiers="const"> @@ -2644,6 +2833,7 @@ <argument index="1" name="index" type="int"> </argument> <description> + Returns the color by which the specified instance will be modulated. </description> </method> <method name="multimesh_instance_get_custom_data" qualifiers="const"> @@ -2654,6 +2844,7 @@ <argument index="1" name="index" type="int"> </argument> <description> + Returns the custom data associated with the specified instance. </description> </method> <method name="multimesh_instance_get_transform" qualifiers="const"> @@ -2664,6 +2855,7 @@ <argument index="1" name="index" type="int"> </argument> <description> + Returns the [Transform] of the specified instance. </description> </method> <method name="multimesh_instance_get_transform_2d" qualifiers="const"> @@ -2674,6 +2866,7 @@ <argument index="1" name="index" type="int"> </argument> <description> + Returns the [Transform2D] of the specified instance. For use when the multimesh is set to use 2D transforms. </description> </method> <method name="multimesh_instance_set_color"> @@ -2686,6 +2879,7 @@ <argument index="2" name="color" type="Color"> </argument> <description> + Sets the color by which this instance will be modulated. Equivalent to [method MultiMesh.set_instance_color]. </description> </method> <method name="multimesh_instance_set_custom_data"> @@ -2698,6 +2892,7 @@ <argument index="2" name="custom_data" type="Color"> </argument> <description> + Sets the custom data for this instance. Custom data is passed as a [Color], but is interpreted as a [code]vec4[/code] in the shader. Equivalent to [method MultiMesh.set_instance_custom_data]. </description> </method> <method name="multimesh_instance_set_transform"> @@ -2710,6 +2905,7 @@ <argument index="2" name="transform" type="Transform"> </argument> <description> + Sets the [Transform] for this instance. Equivalent to [method MultiMesh.set_instance_transform]. </description> </method> <method name="multimesh_instance_set_transform_2d"> @@ -2722,6 +2918,7 @@ <argument index="2" name="transform" type="Transform2D"> </argument> <description> + Sets the [Transform2D] for this instance. For use when multimesh is used in 2D. Equivalent to [method MultiMesh.set_instance_transform_2d]. </description> </method> <method name="multimesh_set_as_bulk_array"> @@ -2732,6 +2929,11 @@ <argument index="1" name="array" type="PoolRealArray"> </argument> <description> + Sets all data related to the instances in one go. This is especially useful when loading the data from disk or preparing the data from GDNative. + + All data is packed in one large float array. An array may look like this: Transform for instance 1, color data for instance 1, custom data for instance 1, transform for instance 2, color data for instance 2, etc. + + [Transform] is stored as 12 floats, [Transform2D] is stored as 8 floats, [code]COLOR_8BIT[/code] / [code]CUSTOM_DATA_8BIT[/code] is stored as 1 float (4 bytes as is) and [code]COLOR_FLOAT[/code] / [code]CUSTOM_DATA_FLOAT[/code] is stored as 4 floats. </description> </method> <method name="multimesh_set_mesh"> @@ -2742,6 +2944,7 @@ <argument index="1" name="mesh" type="RID"> </argument> <description> + Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh.mesh]. </description> </method> <method name="multimesh_set_visible_instances"> @@ -2752,18 +2955,25 @@ <argument index="1" name="visible" type="int"> </argument> <description> + Sets the number of instances visible at a given time. If -1, all instances that have been allocated are drawn. Equivalent to [member MultiMesh.visible_instance_count]. </description> </method> <method name="omni_light_create"> <return type="RID"> </return> <description> + Creates a new omni 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. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach this omni light to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="particles_create"> <return type="RID"> </return> <description> + Creates a particle system and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]particles_*[/code] VisualServer functions. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach these particles to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="particles_get_current_aabb"> @@ -2772,6 +2982,7 @@ <argument index="0" name="particles" type="RID"> </argument> <description> + Calculates and returns the axis-aligned bounding box that contains all the particles. Equivalent to [method Particles.capture_aabb]. </description> </method> <method name="particles_get_emitting"> @@ -2780,6 +2991,7 @@ <argument index="0" name="particles" type="RID"> </argument> <description> + Returns [code]true[/code] if particles are currently set to emitting. </description> </method> <method name="particles_is_inactive"> @@ -2788,6 +3000,7 @@ <argument index="0" name="particles" type="RID"> </argument> <description> + Returns [code]true[/code] if particles are not emitting and particles are set to inactive. </description> </method> <method name="particles_request_process"> @@ -2796,6 +3009,7 @@ <argument index="0" name="particles" type="RID"> </argument> <description> + Add particle system to list of particle systems that need to be updated. Update will take place on the next frame, or on the next call to [method instances_cull_aabb], [method instances_cull_convex], or [method instances_cull_ray]. </description> </method> <method name="particles_restart"> @@ -2804,6 +3018,7 @@ <argument index="0" name="particles" type="RID"> </argument> <description> + Reset the particles on the next update. Equivalent to [method Particles.restart] </description> </method> <method name="particles_set_amount"> @@ -2814,6 +3029,7 @@ <argument index="1" name="amount" type="int"> </argument> <description> + Sets the number of particles to be drawn and allocates the memory for them. Equivalent to [member Particles.amount]. </description> </method> <method name="particles_set_custom_aabb"> @@ -2824,6 +3040,7 @@ <argument index="1" name="aabb" type="AABB"> </argument> <description> + Sets a custom axis-aligned bounding box for the particle system. Equivalent to [member Particles.visibility_aabb]. </description> </method> <method name="particles_set_draw_order"> @@ -2834,6 +3051,7 @@ <argument index="1" name="order" type="int" enum="VisualServer.ParticlesDrawOrder"> </argument> <description> + Sets the draw order of the particles to one of the named enums from [enum ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent to [member Particles.draw_order]. </description> </method> <method name="particles_set_draw_pass_mesh"> @@ -2846,6 +3064,7 @@ <argument index="2" name="mesh" type="RID"> </argument> <description> + Sets the mesh to be used for the specified draw pass. Equivalent to [member Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles.draw_pass_3], and [member Particles.draw_pass_4]. </description> </method> <method name="particles_set_draw_passes"> @@ -2856,6 +3075,7 @@ <argument index="1" name="count" type="int"> </argument> <description> + Sets the number of draw passes to use. Equivalent to [member Particles.draw_passes]. </description> </method> <method name="particles_set_emission_transform"> @@ -2866,6 +3086,7 @@ <argument index="1" name="transform" type="Transform"> </argument> <description> + Sets the [Transform] that will be used by the particles when they first emit. </description> </method> <method name="particles_set_emitting"> @@ -2876,6 +3097,7 @@ <argument index="1" name="emitting" type="bool"> </argument> <description> + If [code]true[/code], particles will emit over time. Setting to false does not reset the particles, but only stops their emission. Equivalent to [member Particles.emitting]. </description> </method> <method name="particles_set_explosiveness_ratio"> @@ -2886,6 +3108,7 @@ <argument index="1" name="ratio" type="float"> </argument> <description> + Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness]. </description> </method> <method name="particles_set_fixed_fps"> @@ -2896,6 +3119,7 @@ <argument index="1" name="fps" type="int"> </argument> <description> + Sets the frame rate that the particle system rendering will be fixed to. Equivalent to [member Particles.fixed_fps]. </description> </method> <method name="particles_set_fractional_delta"> @@ -2906,6 +3130,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + If [code]true[/code], uses fractional delta which smooths the movement of the particles. Equivalent to [member Particles.fract_delta]. </description> </method> <method name="particles_set_lifetime"> @@ -2916,6 +3141,7 @@ <argument index="1" name="lifetime" type="float"> </argument> <description> + Sets the lifetime of each particle in the system. Equivalent to [member Particles.lifetime]. </description> </method> <method name="particles_set_one_shot"> @@ -2926,6 +3152,7 @@ <argument index="1" name="one_shot" type="bool"> </argument> <description> + If [code]true[/code], particles will emit once and then stop. Equivalent to [member Particles.one_shot]. </description> </method> <method name="particles_set_pre_process_time"> @@ -2936,6 +3163,7 @@ <argument index="1" name="time" type="float"> </argument> <description> + Sets the preprocess time for the particles animation. This lets you delay starting an animation until after the particles have begun emitting. Equivalent to [member Particles.preprocess]. </description> </method> <method name="particles_set_process_material"> @@ -2946,6 +3174,7 @@ <argument index="1" name="material" type="RID"> </argument> <description> + Sets the material for processing the particles. Note: this is not the material used to draw the materials. Equivalent to [member Particles.process_material]. </description> </method> <method name="particles_set_randomness_ratio"> @@ -2956,6 +3185,7 @@ <argument index="1" name="ratio" type="float"> </argument> <description> + Sets the emission randomness ratio. This randomizes the emission of particles within their phase. Equivalent to [member Particles.randomness]. </description> </method> <method name="particles_set_speed_scale"> @@ -2966,6 +3196,7 @@ <argument index="1" name="scale" type="float"> </argument> <description> + Sets the speed scale of the particle system. Equivalent to [member Particles.speed_scale]. </description> </method> <method name="particles_set_use_local_coordinates"> @@ -2976,12 +3207,16 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + If [code]true[/code], particles use local coordinates. If [code]false[/code] they use global coordinates. Equivalent to [member Particles.local_coords]. </description> </method> <method name="reflection_probe_create"> <return type="RID"> </return> <description> + Creates a reflection probe and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]reflection_probe_*[/code] VisualServer functions. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach this reflection probe to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="reflection_probe_set_as_interior"> @@ -2992,6 +3227,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + If [code]true[/code], reflections will ignore sky contribution. Equivalent to [member ReflectionProbe.interior_enable]. </description> </method> <method name="reflection_probe_set_cull_mask"> @@ -3002,6 +3238,7 @@ <argument index="1" name="layers" type="int"> </argument> <description> + Sets the render cull mask for this reflection probe. Only instances with a matching cull mask will be rendered by this probe. Equivalent to [member ReflectionProbe.cull_mask]. </description> </method> <method name="reflection_probe_set_enable_box_projection"> @@ -3012,6 +3249,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + If [code]true[/code], uses box projection. This can make reflections look more correct in certain situations. Equivalent to [member ReflectionProbe.box_projection]. </description> </method> <method name="reflection_probe_set_enable_shadows"> @@ -3022,6 +3260,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> + If [code]true[/code], computes shadows in the reflection probe. This makes the reflection much slower to compute. Equivalent to [member ReflectionProbe.enable_shadows]. </description> </method> <method name="reflection_probe_set_extents"> @@ -3032,6 +3271,7 @@ <argument index="1" name="extents" type="Vector3"> </argument> <description> + Sets the size of the area that the reflection probe will capture. Equivalent to [member ReflectionProbe.extents]. </description> </method> <method name="reflection_probe_set_intensity"> @@ -3042,6 +3282,7 @@ <argument index="1" name="intensity" type="float"> </argument> <description> + Sets the intensity of the reflection probe. Intensity modulates the strength of the reflection. Equivalent to [member ReflectionProbe.intensity]. </description> </method> <method name="reflection_probe_set_interior_ambient"> @@ -3052,6 +3293,7 @@ <argument index="1" name="color" type="Color"> </argument> <description> + Sets the ambient light color for this reflection probe when set to interior mode. Equivalent to [member ReflectionProbe.interior_ambient_color]. </description> </method> <method name="reflection_probe_set_interior_ambient_energy"> @@ -3062,6 +3304,7 @@ <argument index="1" name="energy" type="float"> </argument> <description> + Sets the energy multiplier for this reflection probes ambient light contribution when set to interior mode. Equivalent to [member ReflectionProbe.interior_ambient_energy]. </description> </method> <method name="reflection_probe_set_interior_ambient_probe_contribution"> @@ -3072,6 +3315,7 @@ <argument index="1" name="contrib" type="float"> </argument> <description> + Sets the contribution value for how much the reflection affects the ambient light for this reflection probe when set to interior mode. Useful so that ambient light matches the color of the room. Equivalent to [member ReflectionProbe.interior_ambient_contrib]. </description> </method> <method name="reflection_probe_set_max_distance"> @@ -3082,6 +3326,7 @@ <argument index="1" name="distance" type="float"> </argument> <description> + Sets the max distance away from the probe an object can be before it is culled. Equivalent to [member ReflectionProbe.max_distance]. </description> </method> <method name="reflection_probe_set_origin_offset"> @@ -3092,6 +3337,7 @@ <argument index="1" name="offset" type="Vector3"> </argument> <description> + Sets the origin offset to be used when this reflection probe is in box project mode. Equivalent to [member ReflectionProbe.origin_offset]. </description> </method> <method name="reflection_probe_set_update_mode"> @@ -3102,6 +3348,7 @@ <argument index="1" name="mode" type="int" enum="VisualServer.ReflectionProbeUpdateMode"> </argument> <description> + Sets how often the reflection probe updates. Can either be once or every frame. See [enum ReflectionProbeUpdateMode] for options. </description> </method> <method name="request_frame_drawn_callback"> @@ -3122,6 +3369,9 @@ <return type="RID"> </return> <description> + Creates a scenario and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]scenario_*[/code] VisualServer functions. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + The scenario is the 3D world that all the visual instances exist in. </description> </method> <method name="scenario_set_debug"> @@ -3132,6 +3382,7 @@ <argument index="1" name="debug_mode" type="int" enum="VisualServer.ScenarioDebugMode"> </argument> <description> + Sets the [enum ScenarioDebugMode] for this scenario. See [enum ScenarioDebugMode] for options. </description> </method> <method name="scenario_set_environment"> @@ -3142,6 +3393,7 @@ <argument index="1" name="environment" type="RID"> </argument> <description> + Sets the environment that will be used with this scenario. </description> </method> <method name="scenario_set_fallback_environment"> @@ -3152,6 +3404,7 @@ <argument index="1" name="environment" type="RID"> </argument> <description> + Sets the fallback environment to be used by this scenario. The fallback environment is used if no environment is set. Internally, this is used by the editor to provide a default environment. </description> </method> <method name="scenario_set_reflection_atlas_size"> @@ -3164,6 +3417,7 @@ <argument index="2" name="subdiv" type="int"> </argument> <description> + Sets the size of the reflection atlas shared by all reflection probes in this scenario. </description> </method> <method name="set_boot_image"> @@ -3187,6 +3441,7 @@ <argument index="0" name="generate" type="bool"> </argument> <description> + If [code]true[/code], the engine will generate wireframes for use with the wireframe debug mode. </description> </method> <method name="set_default_clear_color"> @@ -3195,13 +3450,15 @@ <argument index="0" name="color" type="Color"> </argument> <description> + Sets the default clear color which is used when a specific clear color has not been selected. </description> </method> <method name="shader_create"> <return type="RID"> </return> <description> - Creates an empty shader. + Creates an empty shader and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]shader_*[/code] VisualServer functions. + 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="shader_get_code" qualifiers="const"> @@ -3267,6 +3524,7 @@ <argument index="2" name="is_2d_skeleton" type="bool" default="false"> </argument> <description> + Allocates the GPU buffers for this skeleton. </description> </method> <method name="skeleton_bone_get_transform" qualifiers="const"> @@ -3277,6 +3535,7 @@ <argument index="1" name="bone" type="int"> </argument> <description> + Returns the [Transform] set for a specific bone of this skeleton. </description> </method> <method name="skeleton_bone_get_transform_2d" qualifiers="const"> @@ -3287,6 +3546,7 @@ <argument index="1" name="bone" type="int"> </argument> <description> + Returns the [Transform2D] set for a specific bone of this skeleton. </description> </method> <method name="skeleton_bone_set_transform"> @@ -3299,6 +3559,7 @@ <argument index="2" name="transform" type="Transform"> </argument> <description> + Sets the [Transform] for a specific bone of this skeleton. </description> </method> <method name="skeleton_bone_set_transform_2d"> @@ -3311,12 +3572,15 @@ <argument index="2" name="transform" type="Transform2D"> </argument> <description> + Sets the [Transform2D] for a specific bone of this skeleton. </description> </method> <method name="skeleton_create"> <return type="RID"> </return> <description> + Creates a skeleton and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]skeleton_*[/code] VisualServer functions. + 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="skeleton_get_bone_count" qualifiers="const"> @@ -3325,13 +3589,15 @@ <argument index="0" name="skeleton" type="RID"> </argument> <description> + Returns the number of bones allocated for this skeleton. </description> </method> <method name="sky_create"> <return type="RID"> </return> <description> - Creates an empty sky. + Creates an empty sky and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]sky_*[/code] VisualServer functions. + 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="sky_set_texture"> @@ -3351,12 +3617,16 @@ <return type="RID"> </return> <description> + Creates a spot 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. + Once finished with your RID, you will want to free the RID using the VisualServer's [method free_rid] static method. + To place in a scene, attach this spot light to an instance using [method instance_set_base] using the returned RID. </description> </method> <method name="sync"> <return type="void"> </return> <description> + Not implemented in Godot 3.x. </description> </method> <method name="texture_allocate"> @@ -3377,6 +3647,7 @@ <argument index="6" name="flags" type="int" default="7"> </argument> <description> + Allocates the GPU memory for the texture. </description> </method> <method name="texture_bind"> @@ -3394,7 +3665,8 @@ <return type="RID"> </return> <description> - Creates an empty texture. + Creates an empty texture and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]texture_*[/code] VisualServer functions. + 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="texture_create_from_image"> @@ -3432,6 +3704,7 @@ <argument index="0" name="texture" type="RID"> </argument> <description> + Returns the depth of the texture. </description> </method> <method name="texture_get_flags" qualifiers="const"> @@ -3485,6 +3758,7 @@ <argument index="0" name="texture" type="RID"> </argument> <description> + Returns the type of the texture, can be any of the [enum TextureType]. </description> </method> <method name="texture_get_width" qualifiers="const"> @@ -3533,6 +3807,7 @@ <argument index="9" name="layer" type="int" default="0"> </argument> <description> + Sets a part of the data for a texture. Warning: this function calls the underlying graphics API directly and may corrupt your texture if used improperly. </description> </method> <method name="texture_set_flags"> @@ -3578,6 +3853,7 @@ <argument index="3" name="depth" type="int"> </argument> <description> + Resizes the texture to the specified dimensions. </description> </method> <method name="textures_keep_original"> @@ -3635,7 +3911,8 @@ <return type="RID"> </return> <description> - Creates an empty viewport. + Creates an empty viewport and adds it to the VisualServer. It can be accessed with the RID that is returned. This RID will be used in all [code]viewport_*[/code] VisualServer functions. + 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="viewport_detach"> @@ -3655,7 +3932,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"> @@ -3803,6 +4080,7 @@ <argument index="1" name="hidden" type="bool"> </argument> <description> + Currently unimplemented in Godot 3.x. </description> </method> <method name="viewport_set_msaa"> @@ -3946,10 +4224,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> @@ -3958,6 +4238,7 @@ Marks an error that shows that the index array is empty. </constant> <constant name="ARRAY_WEIGHTS_SIZE" value="4"> + Number of weights/bones per vertex. </constant> <constant name="CANVAS_ITEM_Z_MIN" value="-4096"> The minimum Z-layer for canvas items. @@ -3966,8 +4247,10 @@ The maximum Z-layer for canvas items. </constant> <constant name="MAX_GLOW_LEVELS" value="7"> + Max number of glow levels that can be used with glow post-process effect. </constant> <constant name="MAX_CURSORS" value="8"> + Unused enum in Godot 3.x. </constant> <constant name="MATERIAL_RENDER_PRIORITY_MIN" value="-128"> The minimum renderpriority of all materials. @@ -3994,12 +4277,16 @@ Marks the back side of a cubemap. </constant> <constant name="TEXTURE_TYPE_2D" value="0" enum="TextureType"> + Normal texture with 2 dimensions, width and height. </constant> <constant name="TEXTURE_TYPE_CUBEMAP" value="1" enum="TextureType"> + Texture made up of six faces, can be looked up with a [code]vec3[/code] in shader. </constant> <constant name="TEXTURE_TYPE_2D_ARRAY" value="2" enum="TextureType"> + An array of 2-dimensional textures. </constant> <constant name="TEXTURE_TYPE_3D" value="3" enum="TextureType"> + A 3-dimensional texture with width, height, and depth. </constant> <constant name="TEXTURE_FLAG_MIPMAPS" value="1" enum="TextureFlags"> Generates mipmaps, which are smaller versions of the same texture to use when zoomed out, keeping the aspect ratio. @@ -4114,11 +4401,13 @@ Flag used to mark a compressed (half float) UV coordinates array for the second UV coordinates. </constant> <constant name="ARRAY_COMPRESS_BONES" value="32768" enum="ArrayFormat"> + Flag used to mark a compressed bone array. </constant> <constant name="ARRAY_COMPRESS_WEIGHTS" value="65536" enum="ArrayFormat"> Flag used to mark a compressed (half float) weight array. </constant> <constant name="ARRAY_COMPRESS_INDEX" value="131072" enum="ArrayFormat"> + Flag used to mark a compressed index array. </constant> <constant name="ARRAY_FLAG_USE_2D_VERTICES" value="262144" enum="ArrayFormat"> Flag used to mark that the array contains 2D vertices. @@ -4154,8 +4443,10 @@ Represents the size of the [enum PrimitiveType] enum. </constant> <constant name="BLEND_SHAPE_MODE_NORMALIZED" value="0" enum="BlendShapeMode"> + Blend shapes are normalized. </constant> <constant name="BLEND_SHAPE_MODE_RELATIVE" value="1" enum="BlendShapeMode"> + Blend shapes are relative to base weight. </constant> <constant name="LIGHT_DIRECTIONAL" value="0" enum="LightType"> Is a directional (sun) light. @@ -4188,47 +4479,67 @@ Scales the shadow color. </constant> <constant name="LIGHT_PARAM_SHADOW_MAX_DISTANCE" value="8" enum="LightParam"> + Max distance that shadows will be rendered. </constant> <constant name="LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET" value="9" enum="LightParam"> + Proportion of shadow atlas occupied by the first split. </constant> <constant name="LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET" value="10" enum="LightParam"> + Proportion of shadow atlas occupied by the second split. </constant> <constant name="LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET" value="11" enum="LightParam"> + Proportion of shadow atlas occupied by the third split. The fourth split occupies the rest. </constant> <constant name="LIGHT_PARAM_SHADOW_NORMAL_BIAS" value="12" enum="LightParam"> + Normal bias used to offset shadow lookup by object normal. Can be used to fix self-shadowing artifacts. </constant> <constant name="LIGHT_PARAM_SHADOW_BIAS" value="13" enum="LightParam"> + Bias the shadow lookup to fix self-shadowing artifacts. </constant> <constant name="LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE" value="14" enum="LightParam"> + Increases bias on further splits to fix self-shadowing that only occurs far away from the camera. </constant> <constant name="LIGHT_PARAM_MAX" value="15" enum="LightParam"> Represents the size of the [enum LightParam] enum. </constant> <constant name="LIGHT_OMNI_SHADOW_DUAL_PARABOLOID" value="0" enum="LightOmniShadowMode"> + Use a dual paraboloid shadow map for omni lights. </constant> <constant name="LIGHT_OMNI_SHADOW_CUBE" value="1" enum="LightOmniShadowMode"> + Use a cubemap shadow map for omni lights. Slower but better quality than dual paraboloid. </constant> <constant name="LIGHT_OMNI_SHADOW_DETAIL_VERTICAL" value="0" enum="LightOmniShadowDetail"> + Use more detail vertically when computing shadow map. </constant> <constant name="LIGHT_OMNI_SHADOW_DETAIL_HORIZONTAL" value="1" enum="LightOmniShadowDetail"> + Use more detail horizontally when computing shadow map. </constant> <constant name="LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL" value="0" enum="LightDirectionalShadowMode"> + Use orthogonal shadow projection for directional light. </constant> <constant name="LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS" value="1" enum="LightDirectionalShadowMode"> + Use 2 splits for shadow projection when using directional light. </constant> <constant name="LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS" value="2" enum="LightDirectionalShadowMode"> + Use 4 splits for shadow projection when using directional light. </constant> <constant name="LIGHT_DIRECTIONAL_SHADOW_DEPTH_RANGE_STABLE" value="0" enum="LightDirectionalShadowDepthRangeMode"> + Keeps shadows stable as camera moves but has lower effective resolution. </constant> <constant name="LIGHT_DIRECTIONAL_SHADOW_DEPTH_RANGE_OPTIMIZED" value="1" enum="LightDirectionalShadowDepthRangeMode"> + Optimize use of shadow maps, increasing the effective resolution. But may result in shadows moving or flickering slightly. </constant> <constant name="VIEWPORT_UPDATE_DISABLED" value="0" enum="ViewportUpdateMode"> + Do not update the viewport. </constant> <constant name="VIEWPORT_UPDATE_ONCE" value="1" enum="ViewportUpdateMode"> + Update the viewport once then set to disabled. </constant> <constant name="VIEWPORT_UPDATE_WHEN_VISIBLE" value="2" enum="ViewportUpdateMode"> + Update the viewport whenever it is visible. </constant> <constant name="VIEWPORT_UPDATE_ALWAYS" value="3" enum="ViewportUpdateMode"> + Always update the viewport. </constant> <constant name="VIEWPORT_CLEAR_ALWAYS" value="0" enum="ViewportClearMode"> The viewport is always cleared before drawing. @@ -4273,16 +4584,22 @@ The Viewport renders 3D but without effects. </constant> <constant name="VIEWPORT_RENDER_INFO_OBJECTS_IN_FRAME" value="0" enum="ViewportRenderInfo"> + Number of objects drawn in a single frame. </constant> <constant name="VIEWPORT_RENDER_INFO_VERTICES_IN_FRAME" value="1" enum="ViewportRenderInfo"> + Number of vertices drawn in a single frame. </constant> <constant name="VIEWPORT_RENDER_INFO_MATERIAL_CHANGES_IN_FRAME" value="2" enum="ViewportRenderInfo"> + Number of material changes during this frame. </constant> <constant name="VIEWPORT_RENDER_INFO_SHADER_CHANGES_IN_FRAME" value="3" enum="ViewportRenderInfo"> + Number of shader changes during this frame. </constant> <constant name="VIEWPORT_RENDER_INFO_SURFACE_CHANGES_IN_FRAME" value="4" enum="ViewportRenderInfo"> + Number of surface changes during this frame. </constant> <constant name="VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME" value="5" enum="ViewportRenderInfo"> + Number of draw calls during this frame. </constant> <constant name="VIEWPORT_RENDER_INFO_MAX" value="6" enum="ViewportRenderInfo"> Represents the size of the [enum ViewportRenderInfo] enum. @@ -4300,12 +4617,16 @@ Debug draw draws objects in wireframe. </constant> <constant name="SCENARIO_DEBUG_DISABLED" value="0" enum="ScenarioDebugMode"> + Do not use a debug mode. </constant> <constant name="SCENARIO_DEBUG_WIREFRAME" value="1" enum="ScenarioDebugMode"> + Draw all objects as wireframe models. </constant> <constant name="SCENARIO_DEBUG_OVERDRAW" value="2" enum="ScenarioDebugMode"> + Draw all objects in a way that displays how much overdraw is occurring. Overdraw occurs when a section of pixels is drawn and shaded and then another object covers it up. To optimize a scene, you should reduce overdraw. </constant> <constant name="SCENARIO_DEBUG_SHADELESS" value="3" enum="ScenarioDebugMode"> + Draw all objects without shading. Equivalent to setting all objects shaders to [code]unshaded[/code]. </constant> <constant name="INSTANCE_NONE" value="0" enum="InstanceType"> The instance does not have a type. @@ -4326,10 +4647,13 @@ The instance is a light. </constant> <constant name="INSTANCE_REFLECTION_PROBE" value="6" enum="InstanceType"> + The instance is a reflection probe. </constant> <constant name="INSTANCE_GI_PROBE" value="7" enum="InstanceType"> + The instance is a GI probe. </constant> <constant name="INSTANCE_LIGHTMAP_CAPTURE" value="8" enum="InstanceType"> + The instance is a lightmap capture. </constant> <constant name="INSTANCE_MAX" value="9" enum="InstanceType"> Represents the size of the [enum InstanceType] enum. @@ -4338,19 +4662,25 @@ A combination of the flags of geometry instances (mesh, multimesh, immediate and particles). </constant> <constant name="INSTANCE_FLAG_USE_BAKED_LIGHT" value="0" enum="InstanceFlags"> + Allows the instance to be used in baked lighting. </constant> <constant name="INSTANCE_FLAG_DRAW_NEXT_FRAME_IF_VISIBLE" value="1" enum="InstanceFlags"> + When set, manually requests to draw geometry on next frame. </constant> <constant name="INSTANCE_FLAG_MAX" value="2" enum="InstanceFlags"> Represents the size of the [enum InstanceFlags] enum. </constant> <constant name="SHADOW_CASTING_SETTING_OFF" value="0" enum="ShadowCastingSetting"> + Disable shadows from this instance. </constant> <constant name="SHADOW_CASTING_SETTING_ON" value="1" enum="ShadowCastingSetting"> + Cast shadows from this instance. </constant> <constant name="SHADOW_CASTING_SETTING_DOUBLE_SIDED" value="2" enum="ShadowCastingSetting"> + Disable backface culling when rendering the shadow of the object. This is slightly slower but may result in more correct shadows. </constant> <constant name="SHADOW_CASTING_SETTING_SHADOWS_ONLY" value="3" enum="ShadowCastingSetting"> + Only render the shadows from the object. The object itself will not be drawn. </constant> <constant name="NINE_PATCH_STRETCH" value="0" enum="NinePatchAxisMode"> The nine patch gets stretched where needed. @@ -4374,16 +4704,22 @@ The light adds color depending on mask. </constant> <constant name="CANVAS_LIGHT_FILTER_NONE" value="0" enum="CanvasLightShadowFilter"> + Do not apply a filter to canvas light shadows. </constant> <constant name="CANVAS_LIGHT_FILTER_PCF3" value="1" enum="CanvasLightShadowFilter"> + Use PCF3 filtering to filter canvas light shadows. </constant> <constant name="CANVAS_LIGHT_FILTER_PCF5" value="2" enum="CanvasLightShadowFilter"> + Use PCF5 filtering to filter canvas light shadows. </constant> <constant name="CANVAS_LIGHT_FILTER_PCF7" value="3" enum="CanvasLightShadowFilter"> + Use PCF7 filtering to filter canvas light shadows. </constant> <constant name="CANVAS_LIGHT_FILTER_PCF9" value="4" enum="CanvasLightShadowFilter"> + Use PCF9 filtering to filter canvas light shadows. </constant> <constant name="CANVAS_LIGHT_FILTER_PCF13" value="5" enum="CanvasLightShadowFilter"> + Use PCF13 filtering to filter canvas light shadows. </constant> <constant name="CANVAS_OCCLUDER_POLYGON_CULL_DISABLED" value="0" enum="CanvasOccluderPolygonCullMode"> Culling of the canvas occluder is disabled. @@ -4425,85 +4761,124 @@ The amount of vertex memory used. </constant> <constant name="FEATURE_SHADERS" value="0" enum="Features"> + Hardware supports shaders. This enum is currently unused in Godot 3.x. </constant> <constant name="FEATURE_MULTITHREADED" value="1" enum="Features"> + Hardware supports multithreading. This enum is currently unused in Godot 3.x. </constant> <constant name="MULTIMESH_TRANSFORM_2D" value="0" enum="MultimeshTransformFormat"> + Use [Transform2D] to store MultiMesh transform. </constant> <constant name="MULTIMESH_TRANSFORM_3D" value="1" enum="MultimeshTransformFormat"> + Use [Transform] to store MultiMesh transform. </constant> <constant name="MULTIMESH_COLOR_NONE" value="0" enum="MultimeshColorFormat"> + MultiMesh does not use per-instance color. </constant> <constant name="MULTIMESH_COLOR_8BIT" value="1" enum="MultimeshColorFormat"> + MultiMesh color uses 8 bits per component. This packs the color into a single float. </constant> <constant name="MULTIMESH_COLOR_FLOAT" value="2" enum="MultimeshColorFormat"> + MultiMesh color uses a float per channel. </constant> <constant name="MULTIMESH_CUSTOM_DATA_NONE" value="0" enum="MultimeshCustomDataFormat"> + MultiMesh does not use custom data. </constant> <constant name="MULTIMESH_CUSTOM_DATA_8BIT" value="1" enum="MultimeshCustomDataFormat"> + MultiMesh custom data uses 8 bits per component. This packs the 4-component custom data into a single float. </constant> <constant name="MULTIMESH_CUSTOM_DATA_FLOAT" value="2" enum="MultimeshCustomDataFormat"> + MultiMesh custom data uses a float per component. </constant> <constant name="REFLECTION_PROBE_UPDATE_ONCE" value="0" enum="ReflectionProbeUpdateMode"> + Reflection probe will update reflections once and then stop. </constant> <constant name="REFLECTION_PROBE_UPDATE_ALWAYS" value="1" enum="ReflectionProbeUpdateMode"> + Reflection probe will update each frame. This mode is necessary to capture moving objects. </constant> <constant name="PARTICLES_DRAW_ORDER_INDEX" value="0" enum="ParticlesDrawOrder"> + Draw particles in the order that they appear in the particles array. </constant> <constant name="PARTICLES_DRAW_ORDER_LIFETIME" value="1" enum="ParticlesDrawOrder"> + Sort particles based on their lifetime. </constant> <constant name="PARTICLES_DRAW_ORDER_VIEW_DEPTH" value="2" enum="ParticlesDrawOrder"> + Sort particles based on their distance to the camera. </constant> <constant name="ENV_BG_CLEAR_COLOR" value="0" enum="EnvironmentBG"> + Use the clear color as background. </constant> <constant name="ENV_BG_COLOR" value="1" enum="EnvironmentBG"> + Use a specified color as the background. </constant> <constant name="ENV_BG_SKY" value="2" enum="EnvironmentBG"> + Use a sky resource for the background. </constant> <constant name="ENV_BG_COLOR_SKY" value="3" enum="EnvironmentBG"> + Use a custom color for background, but use a sky for shading and reflections. </constant> <constant name="ENV_BG_CANVAS" value="4" enum="EnvironmentBG"> + Use a specified canvas layer as the background. This can be useful for instantiating a 2D scene in a 3D world. </constant> <constant name="ENV_BG_KEEP" value="5" enum="EnvironmentBG"> + Do not clear the background, use whatever was rendered last frame as the background. </constant> <constant name="ENV_BG_MAX" value="7" enum="EnvironmentBG"> Represents the size of the [enum EnvironmentBG] enum. </constant> <constant name="ENV_DOF_BLUR_QUALITY_LOW" value="0" enum="EnvironmentDOFBlurQuality"> + Use lowest blur quality. Fastest, but may look bad. </constant> <constant name="ENV_DOF_BLUR_QUALITY_MEDIUM" value="1" enum="EnvironmentDOFBlurQuality"> + Use medium blur quality. </constant> <constant name="ENV_DOF_BLUR_QUALITY_HIGH" value="2" enum="EnvironmentDOFBlurQuality"> + Used highest blur quality. Looks the best, but is the slowest. </constant> <constant name="GLOW_BLEND_MODE_ADDITIVE" value="0" enum="EnvironmentGlowBlendMode"> + Add the effect of the glow on top of the scene. </constant> <constant name="GLOW_BLEND_MODE_SCREEN" value="1" enum="EnvironmentGlowBlendMode"> + Blends the glow effect with the screen. Does not get as bright as additive. </constant> <constant name="GLOW_BLEND_MODE_SOFTLIGHT" value="2" enum="EnvironmentGlowBlendMode"> + Produces a subtle color disturbance around objects. </constant> <constant name="GLOW_BLEND_MODE_REPLACE" value="3" enum="EnvironmentGlowBlendMode"> + Shows the glow effect by itself without the underlying scene. </constant> <constant name="ENV_TONE_MAPPER_LINEAR" value="0" enum="EnvironmentToneMapper"> + Output color as they came in. </constant> <constant name="ENV_TONE_MAPPER_REINHARD" value="1" enum="EnvironmentToneMapper"> + Use the Reinhard tonemapper. </constant> <constant name="ENV_TONE_MAPPER_FILMIC" value="2" enum="EnvironmentToneMapper"> + Use the filmic tonemapper. </constant> <constant name="ENV_TONE_MAPPER_ACES" value="3" enum="EnvironmentToneMapper"> + Use the ACES tonemapper. </constant> <constant name="ENV_SSAO_QUALITY_LOW" value="0" enum="EnvironmentSSAOQuality"> + Lowest quality of screen space ambient occlusion. </constant> <constant name="ENV_SSAO_QUALITY_MEDIUM" value="1" enum="EnvironmentSSAOQuality"> + Medium quality screen space ambient occlusion. </constant> <constant name="ENV_SSAO_QUALITY_HIGH" value="2" enum="EnvironmentSSAOQuality"> + Highest quality screen space ambient occlusion. </constant> <constant name="ENV_SSAO_BLUR_DISABLED" value="0" enum="EnvironmentSSAOBlur"> + Disables the blur set for SSAO. Will make SSAO look noisier. </constant> <constant name="ENV_SSAO_BLUR_1x1" value="1" enum="EnvironmentSSAOBlur"> + Perform a 1x1 blur on the SSAO output. </constant> <constant name="ENV_SSAO_BLUR_2x2" value="2" enum="EnvironmentSSAOBlur"> + Performs a 2x2 blur on the SSAO output. </constant> <constant name="ENV_SSAO_BLUR_3x3" value="3" enum="EnvironmentSSAOBlur"> + Performs a 3x3 blur on the SSAO output. Use this for smoothest SSAO. </constant> </constants> </class> 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..1571bae847 100644 --- a/doc/classes/float.xml +++ b/doc/classes/float.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="float" category="Built-In Types" version="3.2"> <brief_description> - Float built-in type + Float built-in type. </brief_description> <description> Float built-in type. @@ -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/alsa/audio_driver_alsa.cpp b/drivers/alsa/audio_driver_alsa.cpp index 42899c0f76..425f12ae91 100644 --- a/drivers/alsa/audio_driver_alsa.cpp +++ b/drivers/alsa/audio_driver_alsa.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/alsa/audio_driver_alsa.h b/drivers/alsa/audio_driver_alsa.h index 0079ffb6d9..fb793df6cd 100644 --- a/drivers/alsa/audio_driver_alsa.h +++ b/drivers/alsa/audio_driver_alsa.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/alsamidi/midi_driver_alsamidi.cpp b/drivers/alsamidi/midi_driver_alsamidi.cpp index aae0ae0216..ff9d866aee 100644 --- a/drivers/alsamidi/midi_driver_alsamidi.cpp +++ b/drivers/alsamidi/midi_driver_alsamidi.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/alsamidi/midi_driver_alsamidi.h b/drivers/alsamidi/midi_driver_alsamidi.h index b6956cc32f..354fcce147 100644 --- a/drivers/alsamidi/midi_driver_alsamidi.h +++ b/drivers/alsamidi/midi_driver_alsamidi.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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/coreaudio/audio_driver_coreaudio.cpp b/drivers/coreaudio/audio_driver_coreaudio.cpp index 9081fccd3a..1e97100a32 100644 --- a/drivers/coreaudio/audio_driver_coreaudio.cpp +++ b/drivers/coreaudio/audio_driver_coreaudio.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/coreaudio/audio_driver_coreaudio.h b/drivers/coreaudio/audio_driver_coreaudio.h index f37d781cb6..05aa759078 100644 --- a/drivers/coreaudio/audio_driver_coreaudio.h +++ b/drivers/coreaudio/audio_driver_coreaudio.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/coremidi/midi_driver_coremidi.cpp b/drivers/coremidi/midi_driver_coremidi.cpp index 28665b5190..06082a9140 100644 --- a/drivers/coremidi/midi_driver_coremidi.cpp +++ b/drivers/coremidi/midi_driver_coremidi.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/coremidi/midi_driver_coremidi.h b/drivers/coremidi/midi_driver_coremidi.h index 23c2a19812..f32644e80c 100644 --- a/drivers/coremidi/midi_driver_coremidi.h +++ b/drivers/coremidi/midi_driver_coremidi.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/dummy/audio_driver_dummy.h b/drivers/dummy/audio_driver_dummy.h index 4f4d7f9bc4..6e39df9e2f 100644 --- a/drivers/dummy/audio_driver_dummy.h +++ b/drivers/dummy/audio_driver_dummy.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/dummy/rasterizer_dummy.h b/drivers/dummy/rasterizer_dummy.h index 8d5cf2ebea..00758a73a4 100644 --- a/drivers/dummy/rasterizer_dummy.h +++ b/drivers/dummy/rasterizer_dummy.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -742,6 +742,8 @@ public: int get_captured_render_info(VS::RenderInfo p_info) { return 0; } int get_render_info(VS::RenderInfo p_info) { return 0; } + String get_video_adapter_name() const { return String(); } + String get_video_adapter_vendor() const { return String(); } static RasterizerStorage *base_singleton; diff --git a/drivers/dummy/texture_loader_dummy.cpp b/drivers/dummy/texture_loader_dummy.cpp index 88d11fef2c..2dfc0afe78 100644 --- a/drivers/dummy/texture_loader_dummy.cpp +++ b/drivers/dummy/texture_loader_dummy.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/dummy/texture_loader_dummy.h b/drivers/dummy/texture_loader_dummy.h index 0bc7fa226b..86c9a375a3 100644 --- a/drivers/dummy/texture_loader_dummy.h +++ b/drivers/dummy/texture_loader_dummy.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles2/rasterizer_canvas_gles2.cpp b/drivers/gles2/rasterizer_canvas_gles2.cpp index ac54af722c..10c9846fde 100644 --- a/drivers/gles2/rasterizer_canvas_gles2.cpp +++ b/drivers/gles2/rasterizer_canvas_gles2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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,11 @@ 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); + if (polygon->antialiasing_use_indices) { + _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); + } else { + _draw_generic(GL_LINE_LOOP, polygon->points.size(), polygon->points.ptr(), polygon->uvs.ptr(), polygon->colors.ptr(), polygon->colors.size() == 1); + } glDisable(GL_LINE_SMOOTH); } #endif @@ -1838,9 +1902,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..f6ae6a60c0 100644 --- a/drivers/gles2/rasterizer_canvas_gles2.h +++ b/drivers/gles2/rasterizer_canvas_gles2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index cbd0e4a5d5..c4e9541a36 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -263,8 +263,7 @@ void RasterizerGLES2::initialize() { #endif // GLES_OVER_GL #endif // CAN_DEBUG - const GLubyte *renderer = glGetString(GL_RENDERER); - print_line("OpenGL ES 2.0 Renderer: " + String((const char *)renderer)); + print_line("OpenGL ES 2.0 Renderer: " + VisualServer::get_singleton()->get_video_adapter_name()); storage->initialize(); canvas->initialize(); scene->initialize(); diff --git a/drivers/gles2/rasterizer_gles2.h b/drivers/gles2/rasterizer_gles2.h index 4d0d961ae4..9a5501f13d 100644 --- a/drivers/gles2/rasterizer_gles2.h +++ b/drivers/gles2/rasterizer_gles2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles2/rasterizer_scene_gles2.cpp b/drivers/gles2/rasterizer_scene_gles2.cpp index bc47fb46f5..5c52d88cc7 100644 --- a/drivers/gles2/rasterizer_scene_gles2.cpp +++ b/drivers/gles2/rasterizer_scene_gles2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -1869,7 +1869,6 @@ void RasterizerSceneGLES2::_setup_light_type(LightInstance *p_light, ShadowAtlas state.scene_shader.set_conditional(SceneShaderGLES2::LIGHT_USE_PSSM2, false); state.scene_shader.set_conditional(SceneShaderGLES2::LIGHT_USE_PSSM4, false); state.scene_shader.set_conditional(SceneShaderGLES2::LIGHT_USE_PSSM_BLEND, false); - state.scene_shader.set_conditional(SceneShaderGLES2::USE_SHADOW, false); if (!p_light) { //no light, return off return; @@ -1955,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_scene_gles2.h b/drivers/gles2/rasterizer_scene_gles2.h index 7babcfeed1..74adae05aa 100644 --- a/drivers/gles2/rasterizer_scene_gles2.h +++ b/drivers/gles2/rasterizer_scene_gles2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles2/rasterizer_storage_gles2.cpp b/drivers/gles2/rasterizer_storage_gles2.cpp index 147bab9d1f..bb087a7f47 100644 --- a/drivers/gles2/rasterizer_storage_gles2.cpp +++ b/drivers/gles2/rasterizer_storage_gles2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -85,7 +85,9 @@ GLuint RasterizerStorageGLES2::system_fbo = 0; #define glClearDepth glClearDepthf // enable extensions manually for android and ios +#ifndef UWP_ENABLED #include <dlfcn.h> // needed to load extensions +#endif #ifdef IPHONE_ENABLED @@ -93,13 +95,18 @@ GLuint RasterizerStorageGLES2::system_fbo = 0; //void *glRenderbufferStorageMultisampleAPPLE; //void *glResolveMultisampleFramebufferAPPLE; #define glRenderbufferStorageMultisample glRenderbufferStorageMultisampleAPPLE -#elif ANDROID_ENABLED +#elif defined(ANDROID_ENABLED) #include <GLES2/gl2ext.h> PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glRenderbufferStorageMultisampleEXT; PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC glFramebufferTexture2DMultisampleEXT; #define glRenderbufferStorageMultisample glRenderbufferStorageMultisampleEXT #define glFramebufferTexture2DMultisample glFramebufferTexture2DMultisampleEXT + +#elif defined(UWP_ENABLED) +#include <GLES2/gl2ext.h> +#define glRenderbufferStorageMultisample glRenderbufferStorageMultisampleANGLE +#define glFramebufferTexture2DMultisample glFramebufferTexture2DMultisampleANGLE #endif #define GL_MAX_SAMPLES 0x8D57 @@ -2428,22 +2435,10 @@ void RasterizerStorageGLES2::mesh_add_surface(RID p_mesh, uint32_t p_format, VS: if (surface->blend_shape_data.size()) { ERR_PRINT_ONCE("Blend shapes are not supported in OpenGL ES 2.0"); } - surface->data = array; - surface->index_data = p_index_array; -#else - // Even on non-tools builds, a copy of the surface->data is needed in certain circumstances. - // Rigged meshes using the USE_SKELETON_SOFTWARE path need to read bone data - // from surface->data. - - // if USE_SKELETON_SOFTWARE is active - if (config.use_skeleton_software) { - // if this geometry is used specifically for skinning - if (p_format & (VS::ARRAY_FORMAT_BONES | VS::ARRAY_FORMAT_WEIGHTS)) - surface->data = array; - } - // An alternative is to always make a copy of surface->data. #endif + surface->data = array; + surface->index_data = p_index_array; surface->total_data_size += surface->array_byte_size + surface->index_array_byte_size; for (int i = 0; i < surface->skeleton_bone_used.size(); i++) { @@ -4657,7 +4652,7 @@ void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) { glGenRenderbuffers(1, &rt->depth); glBindRenderbuffer(GL_RENDERBUFFER, rt->depth); - glRenderbufferStorage(GL_RENDERBUFFER, config.depth_internalformat, rt->width, rt->height); + glRenderbufferStorage(GL_RENDERBUFFER, config.depth_buffer_internalformat, rt->width, rt->height); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->depth); } @@ -4725,7 +4720,7 @@ void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) { glGenRenderbuffers(1, &rt->multisample_depth); glBindRenderbuffer(GL_RENDERBUFFER, rt->multisample_depth); - glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, config.depth_internalformat, rt->width, rt->height); + glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, config.depth_buffer_internalformat, rt->width, rt->height); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->multisample_depth); @@ -4907,7 +4902,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; } @@ -5189,7 +5188,7 @@ void RasterizerStorageGLES2::render_target_set_external_texture(RID p_render_tar // create a multisample depth buffer, we're not reusing Godots because Godot's didn't get created.. glGenRenderbuffers(1, &rt->external.depth); glBindRenderbuffer(GL_RENDERBUFFER, rt->external.depth); - glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, config.depth_internalformat, rt->width, rt->height); + glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, config.depth_buffer_internalformat, rt->width, rt->height); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->external.depth); } @@ -5302,7 +5301,7 @@ RID RasterizerStorageGLES2::canvas_light_shadow_buffer_create(int p_width) { glGenRenderbuffers(1, &cls->depth); glBindRenderbuffer(GL_RENDERBUFFER, cls->depth); - glRenderbufferStorage(GL_RENDERBUFFER, config.depth_internalformat, cls->size, cls->height); + glRenderbufferStorage(GL_RENDERBUFFER, config.depth_buffer_internalformat, cls->size, cls->height); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, cls->depth); glGenTextures(1, &cls->distance); @@ -5767,6 +5766,16 @@ int RasterizerStorageGLES2::get_render_info(VS::RenderInfo p_info) { } } +String RasterizerStorageGLES2::get_video_adapter_name() const { + + return (const char *)glGetString(GL_RENDERER); +} + +String RasterizerStorageGLES2::get_video_adapter_vendor() const { + + return (const char *)glGetString(GL_VENDOR); +} + void RasterizerStorageGLES2::initialize() { RasterizerStorageGLES2::system_fbo = 0; @@ -5783,6 +5792,8 @@ void RasterizerStorageGLES2::initialize() { config.keep_original_textures = false; config.shrink_textures_x2 = false; + config.depth_internalformat = GL_DEPTH_COMPONENT; + config.depth_type = GL_UNSIGNED_INT; #ifdef GLES_OVER_GL config.float_texture_supported = true; @@ -5790,23 +5801,32 @@ void RasterizerStorageGLES2::initialize() { config.pvrtc_supported = false; config.etc1_supported = false; config.support_npot_repeat_mipmap = true; - config.depth_internalformat = GL_DEPTH_COMPONENT; - config.depth_type = GL_UNSIGNED_INT; + config.depth_buffer_internalformat = GL_DEPTH_COMPONENT24; #else config.float_texture_supported = config.extensions.has("GL_ARB_texture_float") || config.extensions.has("GL_OES_texture_float"); config.s3tc_supported = config.extensions.has("GL_EXT_texture_compression_s3tc") || config.extensions.has("WEBGL_compressed_texture_s3tc"); config.etc1_supported = config.extensions.has("GL_OES_compressed_ETC1_RGB8_texture") || config.extensions.has("WEBGL_compressed_texture_etc1"); 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"); - // on mobile check for 24 bit depth support + +#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_internalformat = _DEPTH_COMPONENT24_OES; + config.depth_buffer_internalformat = _DEPTH_COMPONENT24_OES; config.depth_type = GL_UNSIGNED_INT; } else { - config.depth_internalformat = GL_DEPTH_COMPONENT16; + config.depth_buffer_internalformat = GL_DEPTH_COMPONENT16; config.depth_type = GL_UNSIGNED_SHORT; } #endif +#endif #ifndef GLES_OVER_GL //Manually load extensions for android and ios @@ -5882,7 +5902,7 @@ void RasterizerStorageGLES2::initialize() { GLuint depth; glGenTextures(1, &depth); glBindTexture(GL_TEXTURE_2D, depth); - glTexImage2D(GL_TEXTURE_2D, 0, config.depth_internalformat, 32, 32, 0, config.depth_internalformat, config.depth_type, NULL); + glTexImage2D(GL_TEXTURE_2D, 0, config.depth_internalformat, 32, 32, 0, GL_DEPTH_COMPONENT, config.depth_type, NULL); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); @@ -5901,8 +5921,12 @@ void RasterizerStorageGLES2::initialize() { if (status != GL_FRAMEBUFFER_COMPLETE) { // If it fails, test to see if it supports a framebuffer texture using UNSIGNED_SHORT // This is needed because many OSX devices don't support either UNSIGNED_INT or UNSIGNED_SHORT - +#ifdef GLES_OVER_GL config.depth_internalformat = GL_DEPTH_COMPONENT16; +#else + // OES_depth_texture extension only specifies GL_DEPTH_COMPONENT. + config.depth_internalformat = GL_DEPTH_COMPONENT; +#endif config.depth_type = GL_UNSIGNED_SHORT; glGenFramebuffers(1, &fbo); @@ -5910,7 +5934,7 @@ void RasterizerStorageGLES2::initialize() { glGenTextures(1, &depth); glBindTexture(GL_TEXTURE_2D, depth); - glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, 32, 32, 0, GL_DEPTH_COMPONENT16, GL_UNSIGNED_SHORT, NULL); + glTexImage2D(GL_TEXTURE_2D, 0, config.depth_internalformat, 32, 32, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, NULL); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); diff --git a/drivers/gles2/rasterizer_storage_gles2.h b/drivers/gles2/rasterizer_storage_gles2.h index 6de530d8c3..83697b9872 100644 --- a/drivers/gles2/rasterizer_storage_gles2.h +++ b/drivers/gles2/rasterizer_storage_gles2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -99,6 +99,7 @@ public: GLuint depth_internalformat; GLuint depth_type; + GLuint depth_buffer_internalformat; } config; @@ -1306,6 +1307,8 @@ public: virtual int get_captured_render_info(VS::RenderInfo p_info); virtual int get_render_info(VS::RenderInfo p_info); + virtual String get_video_adapter_name() const; + virtual String get_video_adapter_vendor() const; RasterizerStorageGLES2(); }; diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp index 7e9b6fdb82..fc59486090 100644 --- a/drivers/gles2/shader_compiler_gles2.cpp +++ b/drivers/gles2/shader_compiler_gles2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_compiler_gles2.h b/drivers/gles2/shader_compiler_gles2.h index b8f50d6d1f..683c8bf3c4 100644 --- a/drivers/gles2/shader_compiler_gles2.h +++ b/drivers/gles2/shader_compiler_gles2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles2/shader_gles2.cpp b/drivers/gles2/shader_gles2.cpp index 58eff791ca..8bb1ef7f0f 100644 --- a/drivers/gles2/shader_gles2.cpp +++ b/drivers/gles2/shader_gles2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles2/shader_gles2.h b/drivers/gles2/shader_gles2.h index c7a6465194..f2953c9ae8 100644 --- a/drivers/gles2/shader_gles2.h +++ b/drivers/gles2/shader_gles2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..55a38c917f 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.cpp +++ b/drivers/gles3/rasterizer_canvas_gles3.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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,11 @@ 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); + if (polygon->antialiasing_use_indices) { + _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); + } else { + _draw_generic(GL_LINE_LOOP, polygon->points.size(), polygon->points.ptr(), polygon->uvs.ptr(), polygon->colors.ptr(), polygon->colors.size() == 1); + } glDisable(GL_LINE_SMOOTH); } #endif @@ -1336,11 +1417,9 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons } if (skeleton) { - glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 1); + glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 4); 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 +1606,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); @@ -1597,7 +1681,6 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons bool light_rebind = state.canvas_shader.bind(); if (light_rebind) { - 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, Transform2D()); @@ -1606,6 +1689,10 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons } else { state.canvas_shader.set_uniform(CanvasShaderGLES3::SCREEN_PIXEL_SIZE, Vector2(1.0, 1.0)); } + 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); + } } glBindBufferBase(GL_UNIFORM_BUFFER, 1, static_cast<LightInternal *>(light->light_internal.get_data())->ubo); @@ -1810,9 +1897,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..929867337d 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.h +++ b/drivers/gles3/rasterizer_canvas_gles3.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index ea15a278d6..ef2c318807 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -186,8 +186,7 @@ void RasterizerGLES3::initialize() { } */ - const GLubyte *renderer = glGetString(GL_RENDERER); - print_line("OpenGL ES 3.0 Renderer: " + String((const char *)renderer)); + print_line("OpenGL ES 3.0 Renderer: " + VisualServer::get_singleton()->get_video_adapter_name()); storage->initialize(); canvas->initialize(); scene->initialize(); diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h index 8fa208a1aa..de7c1ab7e1 100644 --- a/drivers/gles3/rasterizer_gles3.h +++ b/drivers/gles3/rasterizer_gles3.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index 9815936d1e..3ee39ede18 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h index a756ce251e..7885d7c1b7 100644 --- a/drivers/gles3/rasterizer_scene_gles3.h +++ b/drivers/gles3/rasterizer_scene_gles3.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp index 4509c9d17e..c02f17ab95 100644 --- a/drivers/gles3/rasterizer_storage_gles3.cpp +++ b/drivers/gles3/rasterizer_storage_gles3.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -1794,13 +1794,21 @@ void RasterizerStorageGLES3::sky_set_texture(RID p_sky, RID p_panorama, int p_ra glActiveTexture(GL_TEXTURE0); glBindTexture(texture->target, texture->tex_id); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 10); - // Need Mipmaps regardless of whether they are set in import by user + glTexParameteri(texture->target, GL_TEXTURE_BASE_LEVEL, 0); +#ifdef GLES_OVER_GL + glTexParameteri(texture->target, GL_TEXTURE_MAX_LEVEL, int(Math::floor(Math::log(float(texture->width)) / Math::log(2.0f)))); glGenerateMipmap(texture->target); +#else + glTexParameteri(texture->target, GL_TEXTURE_MAX_LEVEL, 0); +#endif + // Need Mipmaps regardless of whether they are set in import by user glTexParameterf(texture->target, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameterf(texture->target, GL_TEXTURE_WRAP_T, GL_REPEAT); +#ifdef GLES_OVER_GL glTexParameterf(texture->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); +#else + glTexParameterf(texture->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +#endif glTexParameterf(texture->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); if (config.srgb_decode_supported && texture->srgb && !texture->using_srgb) { @@ -1925,7 +1933,11 @@ void RasterizerStorageGLES3::sky_set_texture(RID p_sky, RID p_panorama, int p_ra glBindFramebuffer(GL_FRAMEBUFFER, tmp_fb2); +#ifdef GLES_OVER_GL if (j < 3) { +#else + if (j == 0) { +#endif shaders.cubemap_filter.set_conditional(CubemapFilterShaderGLES3::USE_DUAL_PARABOLOID, true); shaders.cubemap_filter.set_conditional(CubemapFilterShaderGLES3::USE_SOURCE_PANORAMA, true); @@ -2051,7 +2063,11 @@ void RasterizerStorageGLES3::sky_set_texture(RID p_sky, RID p_panorama, int p_ra glTexImage2D(GL_TEXTURE_2D, 0, internal_format, size, size * 2, 0, format, type, NULL); glBindFramebuffer(GL_FRAMEBUFFER, tmp_fb2); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tmp_tex, 0); +#ifdef GLES_OVER_GL if (lod < 3) { +#else + if (lod == 0) { +#endif shaders.cubemap_filter.set_conditional(CubemapFilterShaderGLES3::USE_DUAL_PARABOLOID, true); shaders.cubemap_filter.set_conditional(CubemapFilterShaderGLES3::USE_SOURCE_PANORAMA, true); @@ -4438,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; @@ -8078,6 +8095,16 @@ int RasterizerStorageGLES3::get_render_info(VS::RenderInfo p_info) { } } +String RasterizerStorageGLES3::get_video_adapter_name() const { + + return (const char *)glGetString(GL_RENDERER); +} + +String RasterizerStorageGLES3::get_video_adapter_vendor() const { + + return (const char *)glGetString(GL_VENDOR); +} + void RasterizerStorageGLES3::initialize() { RasterizerStorageGLES3::system_fbo = 0; diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h index 350b259b2b..bd853852fe 100644 --- a/drivers/gles3/rasterizer_storage_gles3.h +++ b/drivers/gles3/rasterizer_storage_gles3.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -1467,6 +1467,8 @@ public: virtual int get_captured_render_info(VS::RenderInfo p_info); virtual int get_render_info(VS::RenderInfo p_info); + virtual String get_video_adapter_name() const; + virtual String get_video_adapter_vendor() const; RasterizerStorageGLES3(); }; diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp index 7499962da3..121a7f60f4 100644 --- a/drivers/gles3/shader_compiler_gles3.cpp +++ b/drivers/gles3/shader_compiler_gles3.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/shader_compiler_gles3.h b/drivers/gles3/shader_compiler_gles3.h index 79f5c50f88..08e08241d1 100644 --- a/drivers/gles3/shader_compiler_gles3.h +++ b/drivers/gles3/shader_compiler_gles3.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp index ac911993be..5d269e22f0 100644 --- a/drivers/gles3/shader_gles3.cpp +++ b/drivers/gles3/shader_gles3.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles3/shader_gles3.h b/drivers/gles3/shader_gles3.h index d8d49868f4..2bfe72fbc0 100644 --- a/drivers/gles3/shader_gles3.h +++ b/drivers/gles3/shader_gles3.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/gles3/shaders/canvas.glsl b/drivers/gles3/shaders/canvas.glsl index 7255b0425c..07ee9cd010 100644 --- a/drivers/gles3/shaders/canvas.glsl +++ b/drivers/gles3/shaders/canvas.glsl @@ -55,7 +55,7 @@ out highp vec2 pixel_size_interp; #endif #ifdef USE_SKELETON -uniform mediump sampler2D skeleton_texture; // texunit:-1 +uniform mediump sampler2D skeleton_texture; // texunit:-4 uniform highp mat4 skeleton_transform; uniform highp mat4 skeleton_transform_inverse; #endif @@ -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 @@ -395,26 +397,29 @@ float map_ninepatch_axis(float pixel, float draw_size, float tex_pixel_size, flo draw_center--; } - if (np_repeat == 0) { //stretch - //convert to ratio + // np_repeat is passed as uniform using NinePatchRect::AxisStretchMode enum. + if (np_repeat == 0) { // Stretch. + // Convert to ratio. float ratio = (pixel - screen_margin_begin) / (draw_size - screen_margin_begin - screen_margin_end); - //scale to source texture + // Scale to source texture. return (margin_begin + ratio * (tex_size - margin_begin - margin_end)) * tex_pixel_size; - } else if (np_repeat == 1) { //tile - //convert to ratio + } else if (np_repeat == 1) { // Tile. + // Convert to offset. float ofs = mod((pixel - screen_margin_begin), tex_size - margin_begin - margin_end); - //scale to source texture + // Scale to source texture. return (margin_begin + ofs) * tex_pixel_size; - } else if (np_repeat == 2) { //tile fit - //convert to ratio + } else if (np_repeat == 2) { // Tile Fit. + // Calculate scale. float src_area = draw_size - screen_margin_begin - screen_margin_end; float dst_area = tex_size - margin_begin - margin_end; float scale = max(1.0, floor(src_area / max(dst_area, 0.0000001) + 0.5)); - - //convert to ratio + // Convert to ratio. float ratio = (pixel - screen_margin_begin) / src_area; ratio = mod(ratio * scale, 1.0); + // Scale to source texture. return (margin_begin + ratio * dst_area) * tex_pixel_size; + } else { // Shouldn't happen, but silences compiler warning. + return 0.0; } } } 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/png/image_loader_png.cpp b/drivers/png/image_loader_png.cpp index f257fafd93..eb7d196e1d 100644 --- a/drivers/png/image_loader_png.cpp +++ b/drivers/png/image_loader_png.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/png/image_loader_png.h b/drivers/png/image_loader_png.h index c910c31f1e..57f8aa314d 100644 --- a/drivers/png/image_loader_png.h +++ b/drivers/png/image_loader_png.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/png/png_driver_common.cpp b/drivers/png/png_driver_common.cpp index 46e45d07d3..f4dbf135bb 100644 --- a/drivers/png/png_driver_common.cpp +++ b/drivers/png/png_driver_common.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/png/png_driver_common.h b/drivers/png/png_driver_common.h index 3ff87759fb..ee1d32ce68 100644 --- a/drivers/png/png_driver_common.h +++ b/drivers/png/png_driver_common.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/png/resource_saver_png.cpp b/drivers/png/resource_saver_png.cpp index 3b3f1506dc..b15a84d3b9 100644 --- a/drivers/png/resource_saver_png.cpp +++ b/drivers/png/resource_saver_png.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/png/resource_saver_png.h b/drivers/png/resource_saver_png.h index 9267f2d678..6eb1db2004 100644 --- a/drivers/png/resource_saver_png.h +++ b/drivers/png/resource_saver_png.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp index 7ba2175652..68487c7805 100644 --- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp +++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -78,6 +78,8 @@ void AudioDriverPulseAudio::pa_source_info_cb(pa_context *c, const pa_source_inf } void AudioDriverPulseAudio::pa_server_info_cb(pa_context *c, const pa_server_info *i, void *userdata) { + + ERR_FAIL_COND_MSG(!i, "PulseAudio server info is null."); AudioDriverPulseAudio *ad = (AudioDriverPulseAudio *)userdata; ad->capture_default_device = i->default_source_name; diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.h b/drivers/pulseaudio/audio_driver_pulseaudio.h index caa09d6020..15948fa763 100644 --- a/drivers/pulseaudio/audio_driver_pulseaudio.h +++ b/drivers/pulseaudio/audio_driver_pulseaudio.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/register_driver_types.cpp b/drivers/register_driver_types.cpp index 20556d98af..dcc7a5c14d 100644 --- a/drivers/register_driver_types.cpp +++ b/drivers/register_driver_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/register_driver_types.h b/drivers/register_driver_types.h index a3398964dd..c8dbdbb22d 100644 --- a/drivers/register_driver_types.h +++ b/drivers/register_driver_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp index 6817137a94..02cb4fa956 100644 --- a/drivers/unix/dir_access_unix.cpp +++ b/drivers/unix/dir_access_unix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/dir_access_unix.h b/drivers/unix/dir_access_unix.h index 88674d2769..32ddc76638 100644 --- a/drivers/unix/dir_access_unix.h +++ b/drivers/unix/dir_access_unix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp index e3026f9fd9..91164dc3f9 100644 --- a/drivers/unix/file_access_unix.cpp +++ b/drivers/unix/file_access_unix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/file_access_unix.h b/drivers/unix/file_access_unix.h index e26591e3e8..8116f72345 100644 --- a/drivers/unix/file_access_unix.h +++ b/drivers/unix/file_access_unix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/ip_unix.cpp b/drivers/unix/ip_unix.cpp index cf47cdc7e8..08c099f771 100644 --- a/drivers/unix/ip_unix.cpp +++ b/drivers/unix/ip_unix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/ip_unix.h b/drivers/unix/ip_unix.h index f9bb626cc4..0580facac2 100644 --- a/drivers/unix/ip_unix.h +++ b/drivers/unix/ip_unix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/mutex_posix.cpp b/drivers/unix/mutex_posix.cpp index 0640b57305..a9fc12fb06 100644 --- a/drivers/unix/mutex_posix.cpp +++ b/drivers/unix/mutex_posix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/mutex_posix.h b/drivers/unix/mutex_posix.h index ee01ee629d..bd67106836 100644 --- a/drivers/unix/mutex_posix.h +++ b/drivers/unix/mutex_posix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/net_socket_posix.cpp b/drivers/unix/net_socket_posix.cpp index 5f99a40c79..cab5513e0a 100644 --- a/drivers/unix/net_socket_posix.cpp +++ b/drivers/unix/net_socket_posix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..25ac6e2e56 100644 --- a/drivers/unix/net_socket_posix.h +++ b/drivers/unix/net_socket_posix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index 25dee6aedb..c5eb343cc8 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -59,6 +59,7 @@ #include <poll.h> #include <signal.h> #include <stdarg.h> +#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> @@ -554,23 +555,38 @@ void UnixTerminalLogger::log_error(const char *p_function, const char *p_file, i else err_details = p_code; + // Disable color codes if stdout is not a TTY. + // This prevents Godot from writing ANSI escape codes when redirecting + // stdout and stderr to a file. + const bool tty = isatty(fileno(stdout)); + const char *red = tty ? "\E[0;31m" : ""; + const char *red_bold = tty ? "\E[1;31m" : ""; + const char *yellow = tty ? "\E[0;33m" : ""; + const char *yellow_bold = tty ? "\E[1;33m" : ""; + const char *magenta = tty ? "\E[0;35m" : ""; + const char *magenta_bold = tty ? "\E[1;35m" : ""; + const char *cyan = tty ? "\E[0;36m" : ""; + const char *cyan_bold = tty ? "\E[1;36m" : ""; + const char *reset = tty ? "\E[0m" : ""; + const char *bold = tty ? "\E[1m" : ""; + switch (p_type) { case ERR_WARNING: - logf_error("\E[1;33mWARNING: %s: \E[0m\E[1m%s\n", p_function, err_details); - logf_error("\E[0;33m At: %s:%i.\E[0m\n", p_file, p_line); + logf_error("%sWARNING: %s: %s%s%s\n", yellow_bold, p_function, reset, bold, err_details); + logf_error("%s At: %s:%i.%s\n", yellow, p_file, p_line, reset); break; case ERR_SCRIPT: - logf_error("\E[1;35mSCRIPT ERROR: %s: \E[0m\E[1m%s\n", p_function, err_details); - logf_error("\E[0;35m At: %s:%i.\E[0m\n", p_file, p_line); + logf_error("%sSCRIPT ERROR: %s: %s%s%s\n", magenta_bold, p_function, reset, bold, err_details); + logf_error("%s At: %s:%i.%s\n", magenta, p_file, p_line, reset); break; case ERR_SHADER: - logf_error("\E[1;36mSHADER ERROR: %s: \E[0m\E[1m%s\n", p_function, err_details); - logf_error("\E[0;36m At: %s:%i.\E[0m\n", p_file, p_line); + logf_error("%sSHADER ERROR: %s: %s%s%s\n", cyan_bold, p_function, reset, bold, err_details); + logf_error("%s At: %s:%i.%s\n", cyan, p_file, p_line, reset); break; case ERR_ERROR: default: - logf_error("\E[1;31mERROR: %s: \E[0m\E[1m%s\n", p_function, err_details); - logf_error("\E[0;31m At: %s:%i.\E[0m\n", p_file, p_line); + logf_error("%sERROR: %s: %s%s%s\n", red_bold, p_function, reset, bold, err_details); + logf_error("%s At: %s:%i.%s\n", red, p_file, p_line, reset); break; } } diff --git a/drivers/unix/os_unix.h b/drivers/unix/os_unix.h index a263147e23..8ce0eca8c6 100644 --- a/drivers/unix/os_unix.h +++ b/drivers/unix/os_unix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/rw_lock_posix.cpp b/drivers/unix/rw_lock_posix.cpp index c146061704..bb3eebd267 100644 --- a/drivers/unix/rw_lock_posix.cpp +++ b/drivers/unix/rw_lock_posix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/rw_lock_posix.h b/drivers/unix/rw_lock_posix.h index 7cbe5c992f..b12d373db5 100644 --- a/drivers/unix/rw_lock_posix.h +++ b/drivers/unix/rw_lock_posix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/semaphore_posix.cpp b/drivers/unix/semaphore_posix.cpp index fc2d5b0dfe..5f412adea1 100644 --- a/drivers/unix/semaphore_posix.cpp +++ b/drivers/unix/semaphore_posix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/semaphore_posix.h b/drivers/unix/semaphore_posix.h index 8aff01fc27..e06f6316db 100644 --- a/drivers/unix/semaphore_posix.h +++ b/drivers/unix/semaphore_posix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/syslog_logger.cpp b/drivers/unix/syslog_logger.cpp index 6e3a3c5f9a..59001f057d 100644 --- a/drivers/unix/syslog_logger.cpp +++ b/drivers/unix/syslog_logger.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/syslog_logger.h b/drivers/unix/syslog_logger.h index 49a34dacc3..52da12481f 100644 --- a/drivers/unix/syslog_logger.h +++ b/drivers/unix/syslog_logger.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/thread_posix.cpp b/drivers/unix/thread_posix.cpp index ef3f5fb49c..21f49a7e38 100644 --- a/drivers/unix/thread_posix.cpp +++ b/drivers/unix/thread_posix.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/unix/thread_posix.h b/drivers/unix/thread_posix.h index 5edacd3a0c..e852dcf3d5 100644 --- a/drivers/unix/thread_posix.h +++ b/drivers/unix/thread_posix.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/wasapi/audio_driver_wasapi.cpp b/drivers/wasapi/audio_driver_wasapi.cpp index 336d5c5814..8b342fb416 100644 --- a/drivers/wasapi/audio_driver_wasapi.cpp +++ b/drivers/wasapi/audio_driver_wasapi.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/wasapi/audio_driver_wasapi.h b/drivers/wasapi/audio_driver_wasapi.h index 05a2c6faef..ebceedd431 100644 --- a/drivers/wasapi/audio_driver_wasapi.h +++ b/drivers/wasapi/audio_driver_wasapi.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp index 9eac15f774..8e0eac6986 100644 --- a/drivers/windows/dir_access_windows.cpp +++ b/drivers/windows/dir_access_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/dir_access_windows.h b/drivers/windows/dir_access_windows.h index 10eee07f0c..43951c0be9 100644 --- a/drivers/windows/dir_access_windows.h +++ b/drivers/windows/dir_access_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp index 4dc1b74310..1b8760fdc7 100644 --- a/drivers/windows/file_access_windows.cpp +++ b/drivers/windows/file_access_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/file_access_windows.h b/drivers/windows/file_access_windows.h index e7f9fc690d..28d4375878 100644 --- a/drivers/windows/file_access_windows.h +++ b/drivers/windows/file_access_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/mutex_windows.cpp b/drivers/windows/mutex_windows.cpp index cfb72293aa..1f14adb48f 100644 --- a/drivers/windows/mutex_windows.cpp +++ b/drivers/windows/mutex_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/mutex_windows.h b/drivers/windows/mutex_windows.h index 582d26029c..28b97540b7 100644 --- a/drivers/windows/mutex_windows.h +++ b/drivers/windows/mutex_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/rw_lock_windows.cpp b/drivers/windows/rw_lock_windows.cpp index 40e424c4af..438f4bf10d 100644 --- a/drivers/windows/rw_lock_windows.cpp +++ b/drivers/windows/rw_lock_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/rw_lock_windows.h b/drivers/windows/rw_lock_windows.h index 1e768728a0..3705c1eb38 100644 --- a/drivers/windows/rw_lock_windows.h +++ b/drivers/windows/rw_lock_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/semaphore_windows.cpp b/drivers/windows/semaphore_windows.cpp index 55b47e45eb..ea8032ffe2 100644 --- a/drivers/windows/semaphore_windows.cpp +++ b/drivers/windows/semaphore_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/semaphore_windows.h b/drivers/windows/semaphore_windows.h index cfd33d033a..01712b6778 100644 --- a/drivers/windows/semaphore_windows.h +++ b/drivers/windows/semaphore_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/thread_windows.cpp b/drivers/windows/thread_windows.cpp index 8a2992e0c2..a7f34b64ca 100644 --- a/drivers/windows/thread_windows.cpp +++ b/drivers/windows/thread_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/windows/thread_windows.h b/drivers/windows/thread_windows.h index b47452838c..669956cd32 100644 --- a/drivers/windows/thread_windows.h +++ b/drivers/windows/thread_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/winmidi/midi_driver_winmidi.cpp b/drivers/winmidi/midi_driver_winmidi.cpp index 65676b629a..e79216efaf 100644 --- a/drivers/winmidi/midi_driver_winmidi.cpp +++ b/drivers/winmidi/midi_driver_winmidi.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/winmidi/midi_driver_winmidi.h b/drivers/winmidi/midi_driver_winmidi.h index 2eaa70ef8d..a689d3a500 100644 --- a/drivers/winmidi/midi_driver_winmidi.h +++ b/drivers/winmidi/midi_driver_winmidi.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/xaudio2/audio_driver_xaudio2.cpp b/drivers/xaudio2/audio_driver_xaudio2.cpp index 6d729c50ab..85e505009b 100644 --- a/drivers/xaudio2/audio_driver_xaudio2.cpp +++ b/drivers/xaudio2/audio_driver_xaudio2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/drivers/xaudio2/audio_driver_xaudio2.h b/drivers/xaudio2/audio_driver_xaudio2.h index f2fdf63cde..98950851d0 100644 --- a/drivers/xaudio2/audio_driver_xaudio2.h +++ b/drivers/xaudio2/audio_driver_xaudio2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/animation_bezier_editor.cpp b/editor/animation_bezier_editor.cpp index 1283956ae6..2514663b4c 100644 --- a/editor/animation_bezier_editor.cpp +++ b/editor/animation_bezier_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/animation_bezier_editor.h b/editor/animation_bezier_editor.h index 49aab48719..ef4e62231f 100644 --- a/editor/animation_bezier_editor.h +++ b/editor/animation_bezier_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index 40aa9a28b2..cd19ceb868 100644 --- a/editor/animation_track_editor.cpp +++ b/editor/animation_track_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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); @@ -4580,7 +4579,7 @@ void AnimationTrackEditor::_new_track_property_selected(String p_name) { bool valid; subindices = _get_bezier_subindices_for_type(h.type, &valid); if (!valid) { - EditorNode::get_singleton()->show_warning("Invalid track for Bezier (no suitable sub-properties)"); + EditorNode::get_singleton()->show_warning(TTR("Invalid track for Bezier (no suitable sub-properties)")); return; } } diff --git a/editor/animation_track_editor.h b/editor/animation_track_editor.h index ef6a769196..79abda2d49 100644 --- a/editor/animation_track_editor.h +++ b/editor/animation_track_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/animation_track_editor_plugins.cpp b/editor/animation_track_editor_plugins.cpp index 3e0b644b20..bb008e621e 100644 --- a/editor/animation_track_editor_plugins.cpp +++ b/editor/animation_track_editor_plugins.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/animation_track_editor_plugins.h b/editor/animation_track_editor_plugins.h index 1013cccf72..4a21ca4d27 100644 --- a/editor/animation_track_editor_plugins.h +++ b/editor/animation_track_editor_plugins.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/array_property_edit.cpp b/editor/array_property_edit.cpp index 906139e239..8cbc6a8dff 100644 --- a/editor/array_property_edit.cpp +++ b/editor/array_property_edit.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/array_property_edit.h b/editor/array_property_edit.h index fd17ebe9f8..675b842128 100644 --- a/editor/array_property_edit.h +++ b/editor/array_property_edit.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/audio_stream_preview.cpp b/editor/audio_stream_preview.cpp index b30b94ab26..64d435a901 100644 --- a/editor/audio_stream_preview.cpp +++ b/editor/audio_stream_preview.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/audio_stream_preview.h b/editor/audio_stream_preview.h index 90b59cf8c1..97a582836c 100644 --- a/editor/audio_stream_preview.h +++ b/editor/audio_stream_preview.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index 16780a795f..e5b4cbdda1 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..fc06407166 100644 --- a/editor/code_editor.h +++ b/editor/code_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..231173e459 100644 --- a/editor/collada/collada.cpp +++ b/editor/collada/collada.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/collada/collada.h b/editor/collada/collada.h index 317c3f1d37..10ed42260b 100644 --- a/editor/collada/collada.h +++ b/editor/collada/collada.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index f5a01dfb04..60058f2f43 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/connections_dialog.h b/editor/connections_dialog.h index 3846fa4d9f..8ef4eddea1 100644 --- a/editor/connections_dialog.h +++ b/editor/connections_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp index fb7cf494cd..7788d6349a 100644 --- a/editor/create_dialog.cpp +++ b/editor/create_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/create_dialog.h b/editor/create_dialog.h index 1150ac60da..94ff1b5bb2 100644 --- a/editor/create_dialog.h +++ b/editor/create_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index 1f58eda396..df957611cf 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/dependency_editor.h b/editor/dependency_editor.h index 22e28a4d26..be8d34f406 100644 --- a/editor/dependency_editor.h +++ b/editor/dependency_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/dictionary_property_edit.cpp b/editor/dictionary_property_edit.cpp index 62b50b16f2..bb01fadb72 100644 --- a/editor/dictionary_property_edit.cpp +++ b/editor/dictionary_property_edit.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/dictionary_property_edit.h b/editor/dictionary_property_edit.h index a2a81c261c..5c97b94d9f 100644 --- a/editor/dictionary_property_edit.h +++ b/editor/dictionary_property_edit.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/doc/doc_data.cpp b/editor/doc/doc_data.cpp index d472b41f2e..ea9bf508f1 100644 --- a/editor/doc/doc_data.cpp +++ b/editor/doc/doc_data.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/doc/doc_data.h b/editor/doc/doc_data.h index b722c324d6..073705f0b1 100644 --- a/editor/doc/doc_data.h +++ b/editor/doc/doc_data.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/doc/doc_dump.cpp b/editor/doc/doc_dump.cpp index 866d57e054..edb1a536c3 100644 --- a/editor/doc/doc_dump.cpp +++ b/editor/doc/doc_dump.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/doc/doc_dump.h b/editor/doc/doc_dump.h index 8e7f5e7b74..f8f1b6f805 100644 --- a/editor/doc/doc_dump.h +++ b/editor/doc/doc_dump.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp index f75d9c98e0..ba653017ef 100644 --- a/editor/editor_about.cpp +++ b/editor/editor_about.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -137,7 +137,7 @@ EditorAbout::EditorAbout() { Label *about_text = memnew(Label); about_text->set_v_size_flags(Control::SIZE_SHRINK_CENTER); about_text->set_text(VERSION_FULL_NAME + hash + - String::utf8("\n\xc2\xa9 2007-2019 Juan Linietsky, Ariel Manzur.\n\xc2\xa9 2014-2019 ") + + String::utf8("\n\xc2\xa9 2007-2020 Juan Linietsky, Ariel Manzur.\n\xc2\xa9 2014-2020 ") + TTR("Godot Engine contributors") + "\n"); hbc->add_child(about_text); diff --git a/editor/editor_about.h b/editor/editor_about.h index e2ba366c65..51438ee953 100644 --- a/editor/editor_about.h +++ b/editor/editor_about.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_asset_installer.cpp b/editor/editor_asset_installer.cpp index 98e670f952..86611bd20a 100644 --- a/editor/editor_asset_installer.cpp +++ b/editor/editor_asset_installer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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) { @@ -194,7 +195,7 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) { String res_path = "res://" + path; if (FileAccess::exists(res_path)) { ti->set_custom_color(0, get_color("error_color", "Editor")); - ti->set_tooltip(0, res_path + " (Already Exists)"); + ti->set_tooltip(0, vformat(TTR("%s (Already Exists)"), res_path)); ti->set_checked(0, false); } else { ti->set_tooltip(0, res_path); @@ -287,11 +288,11 @@ void EditorAssetInstaller::ok_pressed() { unzClose(pkg); if (failed_files.size()) { - String msg = "The following files failed extraction from package:\n\n"; + String msg = TTR("The following files failed extraction from package:") + "\n\n"; for (int i = 0; i < failed_files.size(); i++) { if (i > 15) { - msg += "\nAnd " + itos(failed_files.size() - i) + " more files."; + msg += "\n" + vformat(TTR("And %s more files."), itos(failed_files.size() - i)); break; } msg += failed_files[i]; @@ -316,7 +317,7 @@ EditorAssetInstaller::EditorAssetInstaller() { add_child(vb); tree = memnew(Tree); - vb->add_margin_child("Package Contents:", tree, true); + vb->add_margin_child(TTR("Package Contents:"), tree, true); tree->connect("item_edited", this, "_item_edited"); error = memnew(AcceptDialog); diff --git a/editor/editor_asset_installer.h b/editor/editor_asset_installer.h index 8687e0acdf..840e780264 100644 --- a/editor/editor_asset_installer.h +++ b/editor/editor_asset_installer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_atlas_packer.cpp b/editor/editor_atlas_packer.cpp index 96ddc607df..d17b3bba4f 100644 --- a/editor/editor_atlas_packer.cpp +++ b/editor/editor_atlas_packer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_atlas_packer.h b/editor/editor_atlas_packer.h index 1627f74a28..33dbe47efb 100644 --- a/editor/editor_atlas_packer.h +++ b/editor/editor_atlas_packer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index acfdea28e2..365238222f 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -1289,7 +1290,7 @@ void EditorAudioBuses::_file_dialog_callback(const String &p_string) { Error err = ResourceSaver::save(p_string, AudioServer::get_singleton()->generate_bus_layout()); if (err != OK) { - EditorNode::get_singleton()->show_warning("Error saving file: " + p_string); + EditorNode::get_singleton()->show_warning(vformat(TTR("Error saving file: %s"), p_string)); return; } diff --git a/editor/editor_audio_buses.h b/editor/editor_audio_buses.h index 113adb57c1..ef6f7e458f 100644 --- a/editor/editor_audio_buses.h +++ b/editor/editor_audio_buses.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp index f44e1b7b14..46a54969e0 100644 --- a/editor/editor_autoload_settings.cpp +++ b/editor/editor_autoload_settings.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_autoload_settings.h b/editor/editor_autoload_settings.h index 1ea2950df4..e1a04644aa 100644 --- a/editor/editor_autoload_settings.h +++ b/editor/editor_autoload_settings.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp index 1cafd1d1f4..8ca202a411 100644 --- a/editor/editor_data.cpp +++ b/editor/editor_data.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_data.h b/editor/editor_data.h index aa3e84d5a4..1b21ce4451 100644 --- a/editor/editor_data.h +++ b/editor/editor_data.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_dir_dialog.cpp b/editor/editor_dir_dialog.cpp index 525c5aa62d..09e63f70b4 100644 --- a/editor/editor_dir_dialog.cpp +++ b/editor/editor_dir_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_dir_dialog.h b/editor/editor_dir_dialog.h index e0b3d93206..44f6683034 100644 --- a/editor/editor_dir_dialog.h +++ b/editor/editor_dir_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp index 7ae8a9e0ce..d66b386f93 100644 --- a/editor/editor_export.cpp +++ b/editor/editor_export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -32,6 +32,7 @@ #include "core/crypto/crypto_core.h" #include "core/io/config_file.h" +#include "core/io/file_access_pack.h" // PACK_HEADER_MAGIC, PACK_FORMAT_VERSION #include "core/io/resource_loader.h" #include "core/io/resource_saver.h" #include "core/io/zip_io.h" @@ -970,11 +971,12 @@ Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, c int64_t pck_start_pos = f->get_position(); - f->store_32(0x43504447); //GDPC - f->store_32(1); //pack version + f->store_32(PACK_HEADER_MAGIC); + f->store_32(PACK_FORMAT_VERSION); f->store_32(VERSION_MAJOR); f->store_32(VERSION_MINOR); - f->store_32(0); //hmph + f->store_32(VERSION_PATCH); + for (int i = 0; i < 16; i++) { //reserved f->store_32(0); @@ -1049,7 +1051,7 @@ Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, c int64_t pck_size = f->get_position() - pck_start_pos; f->store_64(pck_size); - f->store_32(0x43504447); //GDPC + f->store_32(PACK_HEADER_MAGIC); if (r_embedded_size) { *r_embedded_size = f->get_position() - embed_pos; @@ -1483,41 +1485,29 @@ Ref<Texture> EditorExportPlatformPC::get_logo() const { bool EditorExportPlatformPC::can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const { String err; - bool valid = true; - bool use64 = p_preset->get("binary_format/64_bits"); - - if (use64 && (!exists_export_template(debug_file_64, &err) || !exists_export_template(release_file_64, &err))) { - valid = false; - } - - if (!use64 && (!exists_export_template(debug_file_32, &err) || !exists_export_template(release_file_32, &err))) { - valid = false; - } + bool valid = false; - String custom_debug_binary = p_preset->get("custom_template/debug"); - String custom_release_binary = p_preset->get("custom_template/release"); + // Look for export templates (first official, and if defined custom templates). - if (custom_debug_binary == "" && custom_release_binary == "") { - if (!err.empty()) - r_error = err; - r_missing_templates = !valid; - return valid; - } - - bool dvalid = true; - bool rvalid = true; + bool use64 = p_preset->get("binary_format/64_bits"); + bool dvalid = exists_export_template(use64 ? debug_file_64 : debug_file_32, &err); + bool rvalid = exists_export_template(use64 ? release_file_64 : release_file_32, &err); - if (!FileAccess::exists(custom_debug_binary)) { - dvalid = false; - err += TTR("Custom debug template not found.") + "\n"; + if (p_preset->get("custom_template/debug") != "") { + dvalid = FileAccess::exists(p_preset->get("custom_template/debug")); + if (!dvalid) { + err += TTR("Custom debug template not found.") + "\n"; + } } - - if (!FileAccess::exists(custom_release_binary)) { - rvalid = false; - err += TTR("Custom release template not found.") + "\n"; + if (p_preset->get("custom_template/release") != "") { + rvalid = FileAccess::exists(p_preset->get("custom_template/release")); + if (!rvalid) { + err += TTR("Custom release template not found.") + "\n"; + } } valid = dvalid || rvalid; + r_missing_templates = !valid; if (!err.empty()) r_error = err; @@ -1598,7 +1588,7 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr if (embedded_size >= 0x100000000 && !p_preset->get("binary_format/64_bits")) { EditorNode::get_singleton()->show_warning(TTR("On 32-bit exports the embedded PCK cannot be bigger than 4 GiB.")); - return ERR_UNAVAILABLE; + return ERR_INVALID_PARAMETER; } FixUpEmbeddedPckFunc fixup_func = get_fixup_embedded_pck_func(); diff --git a/editor/editor_export.h b/editor/editor_export.h index b0e27af629..577fd0cf7e 100644 --- a/editor/editor_export.h +++ b/editor/editor_export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_feature_profile.cpp b/editor/editor_feature_profile.cpp index 0182c3b4a2..1fa2bfcd60 100644 --- a/editor/editor_feature_profile.cpp +++ b/editor/editor_feature_profile.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_feature_profile.h b/editor/editor_feature_profile.h index d670719d7d..a5ab73da60 100644 --- a/editor/editor_feature_profile.h +++ b/editor/editor_feature_profile.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp index 2db4f03859..625f46f9d3 100644 --- a/editor/editor_file_dialog.cpp +++ b/editor/editor_file_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_file_dialog.h b/editor/editor_file_dialog.h index af52f6af5b..6af261e8dd 100644 --- a/editor/editor_file_dialog.h +++ b/editor/editor_file_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp index 2467e1f722..5abb3c4ec2 100644 --- a/editor/editor_file_system.cpp +++ b/editor/editor_file_system.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_file_system.h b/editor/editor_file_system.h index 72d9489f21..ce9936f983 100644 --- a/editor/editor_file_system.h +++ b/editor/editor_file_system.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_folding.cpp b/editor/editor_folding.cpp index 9f13049a6b..475f16f12f 100644 --- a/editor/editor_folding.cpp +++ b/editor/editor_folding.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_folding.h b/editor/editor_folding.h index 5fc980c4a9..cc49b062d0 100644 --- a/editor/editor_folding.h +++ b/editor/editor_folding.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp index 97c796c707..db2f9c53d9 100644 --- a/editor/editor_fonts.cpp +++ b/editor/editor_fonts.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_fonts.h b/editor/editor_fonts.h index d944683067..3ad7cf067b 100644 --- a/editor/editor_fonts.h +++ b/editor/editor_fonts.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index 4f7432cd65..a0c106441a 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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.h b/editor/editor_help.h index 23a6e005a0..83c279aec3 100644 --- a/editor/editor_help.h +++ b/editor/editor_help.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_help_search.cpp b/editor/editor_help_search.cpp index 27e61362ed..700d9b692b 100644 --- a/editor/editor_help_search.cpp +++ b/editor/editor_help_search.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -31,7 +31,9 @@ #include "editor_help_search.h" #include "core/os/keyboard.h" +#include "editor_feature_profile.h" #include "editor_node.h" +#include "editor_scale.h" void EditorHelpSearch::_update_icons() { @@ -170,7 +172,11 @@ void EditorHelpSearch::popup_dialog(const String &p_term) { if (p_term == "") { search_box->clear(); } else { - old_search = true; + if (old_term == p_term) + old_search = true; + else + old_term = p_term; + search_box->set_text(p_term); search_box->select_all(); } @@ -198,7 +204,7 @@ EditorHelpSearch::EditorHelpSearch() { vbox->add_child(hbox); search_box = memnew(LineEdit); - search_box->set_custom_minimum_size(Size2(200, 0)); + search_box->set_custom_minimum_size(Size2(200, 0) * EDSCALE); search_box->set_h_size_flags(SIZE_EXPAND_FILL); search_box->connect("gui_input", this, "_search_box_gui_input"); search_box->connect("text_changed", this, "_search_box_text_changed"); @@ -206,14 +212,14 @@ EditorHelpSearch::EditorHelpSearch() { hbox->add_child(search_box); case_sensitive_button = memnew(ToolButton); - case_sensitive_button->set_tooltip("Case Sensitive"); + case_sensitive_button->set_tooltip(TTR("Case Sensitive")); case_sensitive_button->connect("pressed", this, "_update_results"); case_sensitive_button->set_toggle_mode(true); case_sensitive_button->set_focus_mode(FOCUS_NONE); hbox->add_child(case_sensitive_button); hierarchy_button = memnew(ToolButton); - hierarchy_button->set_tooltip("Show Hierarchy"); + hierarchy_button->set_tooltip(TTR("Show Hierarchy")); hierarchy_button->connect("pressed", this, "_update_results"); hierarchy_button->set_toggle_mode(true); hierarchy_button->set_pressed(true); @@ -221,7 +227,7 @@ EditorHelpSearch::EditorHelpSearch() { hbox->add_child(hierarchy_button); filter_combo = memnew(OptionButton); - filter_combo->set_custom_minimum_size(Size2(200, 0)); + filter_combo->set_custom_minimum_size(Size2(200, 0) * EDSCALE); filter_combo->set_stretch_ratio(0); // Fixed width. filter_combo->add_item(TTR("Display All"), SEARCH_ALL); filter_combo->add_separator(); @@ -241,8 +247,8 @@ EditorHelpSearch::EditorHelpSearch() { results_tree->set_column_title(0, TTR("Name")); results_tree->set_column_title(1, TTR("Member Type")); results_tree->set_column_expand(1, false); - results_tree->set_column_min_width(1, 150); - results_tree->set_custom_minimum_size(Size2(0, 100)); + results_tree->set_column_min_width(1, 150 * EDSCALE); + results_tree->set_custom_minimum_size(Size2(0, 100) * EDSCALE); results_tree->set_hide_root(true); results_tree->set_select_mode(Tree::SELECT_ROW); results_tree->connect("item_activated", this, "_confirmed"); @@ -513,7 +519,7 @@ TreeItem *EditorHelpSearch::Runner::_create_method_item(TreeItem *p_parent, cons tooltip += ", "; } tooltip += ")"; - return _create_member_item(p_parent, p_class_doc->name, "MemberMethod", p_doc->name, "Method", "method", tooltip); + return _create_member_item(p_parent, p_class_doc->name, "MemberMethod", p_doc->name, TTRC("Method"), "method", tooltip); } TreeItem *EditorHelpSearch::Runner::_create_signal_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::MethodDoc *p_doc) { @@ -528,13 +534,13 @@ TreeItem *EditorHelpSearch::Runner::_create_signal_item(TreeItem *p_parent, cons tooltip += ", "; } tooltip += ")"; - return _create_member_item(p_parent, p_class_doc->name, "MemberSignal", p_doc->name, "Signal", "signal", tooltip); + return _create_member_item(p_parent, p_class_doc->name, "MemberSignal", p_doc->name, TTRC("Signal"), "signal", tooltip); } TreeItem *EditorHelpSearch::Runner::_create_constant_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::ConstantDoc *p_doc) { String tooltip = p_class_doc->name + "." + p_doc->name; - return _create_member_item(p_parent, p_class_doc->name, "MemberConstant", p_doc->name, "Constant", "constant", tooltip); + return _create_member_item(p_parent, p_class_doc->name, "MemberConstant", p_doc->name, TTRC("Constant"), "constant", tooltip); } TreeItem *EditorHelpSearch::Runner::_create_property_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::PropertyDoc *p_doc) { @@ -542,13 +548,13 @@ TreeItem *EditorHelpSearch::Runner::_create_property_item(TreeItem *p_parent, co String tooltip = p_doc->type + " " + p_class_doc->name + "." + p_doc->name; tooltip += "\n " + p_class_doc->name + "." + p_doc->setter + "(value) setter"; tooltip += "\n " + p_class_doc->name + "." + p_doc->getter + "() getter"; - return _create_member_item(p_parent, p_class_doc->name, "MemberProperty", p_doc->name, "Property", "property", tooltip); + return _create_member_item(p_parent, p_class_doc->name, "MemberProperty", p_doc->name, TTRC("Property"), "property", tooltip); } TreeItem *EditorHelpSearch::Runner::_create_theme_property_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::PropertyDoc *p_doc) { String tooltip = p_doc->type + " " + p_class_doc->name + "." + p_doc->name; - return _create_member_item(p_parent, p_class_doc->name, "MemberTheme", p_doc->name, "Theme Property", "theme_item", tooltip); + return _create_member_item(p_parent, p_class_doc->name, "MemberTheme", p_doc->name, TTRC("Theme Property"), "theme_item", tooltip); } TreeItem *EditorHelpSearch::Runner::_create_member_item(TreeItem *p_parent, const String &p_class_name, const String &p_icon, const String &p_name, const String &p_type, const String &p_metatype, const String &p_tooltip) { @@ -571,7 +577,7 @@ TreeItem *EditorHelpSearch::Runner::_create_member_item(TreeItem *p_parent, cons TreeItem *item = results_tree->create_item(p_parent); item->set_icon(0, icon); item->set_text(0, text); - item->set_text(1, TTR(p_type)); + item->set_text(1, TTRGET(p_type)); item->set_tooltip(0, p_tooltip); item->set_tooltip(1, p_tooltip); item->set_metadata(0, "class_" + p_metatype + ":" + p_class_name + ":" + p_name); diff --git a/editor/editor_help_search.h b/editor/editor_help_search.h index 12ffd024a7..5d089d1c24 100644 --- a/editor/editor_help_search.h +++ b/editor/editor_help_search.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -59,6 +59,7 @@ class EditorHelpSearch : public ConfirmationDialog { OptionButton *filter_combo; Tree *results_tree; bool old_search; + String old_term; class Runner; Ref<Runner> search; diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index 96b6a32914..56da7d93fa 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_inspector.h b/editor/editor_inspector.h index 117a63699e..792247138e 100644 --- a/editor/editor_inspector.h +++ b/editor/editor_inspector.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_layouts_dialog.cpp b/editor/editor_layouts_dialog.cpp index 36f7b30016..727e758341 100644 --- a/editor/editor_layouts_dialog.cpp +++ b/editor/editor_layouts_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_layouts_dialog.h b/editor/editor_layouts_dialog.h index 5e3a1d5a46..d18c2bce17 100644 --- a/editor/editor_layouts_dialog.h +++ b/editor/editor_layouts_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_log.cpp b/editor/editor_log.cpp index 5474f86c74..0495722a13 100644 --- a/editor/editor_log.cpp +++ b/editor/editor_log.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -174,7 +175,7 @@ EditorLog::EditorLog() { log->set_v_size_flags(SIZE_EXPAND_FILL); log->set_h_size_flags(SIZE_EXPAND_FILL); vb->add_child(log); - add_message(VERSION_FULL_NAME " (c) 2007-2019 Juan Linietsky, Ariel Manzur & Godot Contributors."); + add_message(VERSION_FULL_NAME " (c) 2007-2020 Juan Linietsky, Ariel Manzur & Godot Contributors."); eh.errfunc = _error_handler; eh.userdata = this; diff --git a/editor/editor_log.h b/editor/editor_log.h index 10561b9c83..e3980690b2 100644 --- a/editor/editor_log.h +++ b/editor/editor_log.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_network_profiler.cpp b/editor/editor_network_profiler.cpp index 8482c4e38a..1b80743237 100644 --- a/editor/editor_network_profiler.cpp +++ b/editor/editor_network_profiler.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_network_profiler.h b/editor/editor_network_profiler.h index 85fec340fd..680131c288 100644 --- a/editor/editor_network_profiler.h +++ b/editor/editor_network_profiler.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index ef382c0a19..d7bc959729 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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,11 +160,18 @@ #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> +#include <stdlib.h> EditorNode *EditorNode::singleton = NULL; @@ -523,43 +562,68 @@ void EditorNode::_fs_changed() { _mark_unsaved_scenes(); + // FIXME: Move this to a cleaner location, it's hacky to do this is _fs_changed. + String export_error; if (export_defer.preset != "" && !EditorFileSystem::get_singleton()->is_scanning()) { + String preset_name = export_defer.preset; + // Ensures export_project does not loop infinitely, because notifications may + // come during the export. + export_defer.preset = ""; Ref<EditorExportPreset> preset; for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); ++i) { preset = EditorExport::get_singleton()->get_export_preset(i); - if (preset->get_name() == export_defer.preset) { + if (preset->get_name() == preset_name) { break; } preset.unref(); } if (preset.is_null()) { - String errstr = "Unknown export preset: " + export_defer.preset; - ERR_PRINTS(errstr); + export_error = vformat("Invalid export preset name: %s.", preset_name); } else { Ref<EditorExportPlatform> platform = preset->get_platform(); if (platform.is_null()) { - String errstr = "Preset \"" + export_defer.preset + "\" doesn't have a platform."; - ERR_PRINTS(errstr); + export_error = vformat("Export preset '%s' doesn't have a matching platform.", preset_name); } else { - // ensures export_project does not loop infinitely, because notifications may - // come during the export - export_defer.preset = ""; Error err = OK; + // FIXME: This way to export only resources .pck or .zip is pretty hacky + // and undocumented, and might be problematic for platforms where .zip is + // a valid project export format (e.g. macOS). if (export_defer.path.ends_with(".pck") || export_defer.path.ends_with(".zip")) { if (export_defer.path.ends_with(".zip")) { err = platform->export_zip(preset, export_defer.debug, export_defer.path); } else if (export_defer.path.ends_with(".pck")) { err = platform->export_pack(preset, export_defer.debug, export_defer.path); } - } else { - err = platform->export_project(preset, export_defer.debug, export_defer.path); + } else { // Normal project export. + String config_error; + bool missing_templates; + if (!platform->can_export(preset, config_error, missing_templates)) { + ERR_PRINT(vformat("Cannot export project with preset '%s' due to configuration errors:\n%s", preset_name, config_error)); + err = missing_templates ? ERR_FILE_NOT_FOUND : ERR_UNCONFIGURED; + } else { + err = platform->export_project(preset, export_defer.debug, export_defer.path); + } } - if (err != OK) { - ERR_PRINTS(vformat(TTR("Project export failed with error code %d."), (int)err)); + switch (err) { + case OK: + break; + case ERR_FILE_NOT_FOUND: + export_error = vformat("Project export failed for preset '%s', the export template appears to be missing.", preset_name); + break; + case ERR_FILE_BAD_PATH: + export_error = vformat("Project export failed for preset '%s', the target path '%s' appears to be invalid.", preset_name, export_defer.path); + break; + default: + export_error = vformat("Project export failed with error code %d for preset '%s'.", (int)err, preset_name); + break; } } } + if (!export_error.empty()) { + ERR_PRINT(export_error); + OS::get_singleton()->set_exit_code(EXIT_FAILURE); + } _exit_editor(); } } @@ -630,7 +694,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 +709,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 +1027,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 +1085,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); - img->flip_y(); + x = (img->get_width() - size) / 2; + y = (img->get_height() - size) / 2; - //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->crop_from_point(x, y, size, size); + img->resize(preview_size, preview_size, Image::INTERPOLATE_LANCZOS); + } + img->convert(Image::FORMAT_RGB8); + + 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 +1347,6 @@ void EditorNode::restart_editor() { } _exit_editor(); - String exec = OS::get_singleton()->get_executable_path(); List<String> args; args.push_back("--path"); @@ -2049,14 +2113,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)) { @@ -3875,12 +3942,11 @@ void EditorNode::_editor_file_dialog_unregister(EditorFileDialog *p_dialog) { Vector<EditorNodeInitCallback> EditorNode::_init_callbacks; -Error EditorNode::export_preset(const String &p_preset, const String &p_path, bool p_debug, const String &p_password, bool p_quit_after) { +Error EditorNode::export_preset(const String &p_preset, const String &p_path, bool p_debug) { export_defer.preset = p_preset; export_defer.path = p_path; export_defer.debug = p_debug; - export_defer.password = p_password; disable_progress_dialog = true; return OK; } @@ -5829,6 +5895,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); @@ -6121,7 +6188,7 @@ EditorNode::EditorNode() { p = debug_menu->get_popup(); p->set_hide_on_window_lose_focus(true); - p->set_hide_on_item_selection(false); + p->set_hide_on_checkable_item_selection(false); p->add_check_shortcut(ED_SHORTCUT("editor/deploy_with_remote_debug", TTR("Deploy with Remote Debug")), RUN_DEPLOY_REMOTE_DEBUG); p->set_item_tooltip(p->get_item_count() - 1, TTR("When exporting or deploying, the resulting executable will attempt to connect to the IP of this computer in order to be debugged.")); p->add_check_shortcut(ED_SHORTCUT("editor/small_deploy_with_network_fs", TTR("Small Deploy with Network FS")), RUN_FILE_SERVER); @@ -6479,18 +6546,12 @@ 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); file->set_current_dir("res://"); - file_export = memnew(EditorFileDialog); - file_export->set_access(EditorFileDialog::ACCESS_FILESYSTEM); - gui_base->add_child(file_export); - file_export->set_title(TTR("Export Project")); - file_export->connect("file_selected", this, "_dialog_action"); - file_export_lib = memnew(EditorFileDialog); file_export_lib->set_title(TTR("Export Library")); file_export_lib->set_mode(EditorFileDialog::MODE_SAVE_FILE); @@ -6501,11 +6562,6 @@ EditorNode::EditorNode() { file_export_lib->get_vbox()->add_child(file_export_lib_merge); gui_base->add_child(file_export_lib); - file_export_password = memnew(LineEdit); - file_export_password->set_secret(true); - file_export_password->set_editable(false); - file_export->get_vbox()->add_margin_child(TTR("Password:"), file_export_password); - file_script = memnew(EditorFileDialog); file_script->set_title(TTR("Open & Run a Script")); file_script->set_access(EditorFileDialog::ACCESS_FILESYSTEM); diff --git a/editor/editor_node.h b/editor/editor_node.h index b7775b5e83..469ba76872 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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 { @@ -332,18 +325,13 @@ private: ExportTemplateManager *export_template_manager; EditorFeatureProfileManager *feature_profile_manager; EditorFileDialog *file_templates; - EditorFileDialog *file_export; EditorFileDialog *file_export_lib; EditorFileDialog *file_script; CheckBox *file_export_lib_merge; - LineEdit *file_export_password; String current_path; MenuButton *update_spinner; String defer_load_scene; - String defer_export; - String defer_export_platform; - bool defer_export_debug; Node *_last_instanced_scene; EditorLog *log; @@ -570,8 +558,6 @@ private: String preset; String path; bool debug; - String password; - } export_defer; bool disable_progress_dialog; @@ -789,11 +775,11 @@ 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); - Error export_preset(const String &p_preset, const String &p_path, bool p_debug, const String &p_password, bool p_quit_after = false); + Error export_preset(const String &p_preset, const String &p_path, bool p_debug); static void register_editor_types(); static void unregister_editor_types(); diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp index e4a939c379..d538c7c23d 100644 --- a/editor/editor_path.cpp +++ b/editor/editor_path.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_path.h b/editor/editor_path.h index a84da9f5ac..b0ffc487ac 100644 --- a/editor/editor_path.h +++ b/editor/editor_path.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp index 310a107ca9..b5f63dcd43 100644 --- a/editor/editor_plugin.cpp +++ b/editor/editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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.h b/editor/editor_plugin.h index 63f5a4f87a..1a78b72ade 100644 --- a/editor/editor_plugin.h +++ b/editor/editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp index 514b3ff5d2..b81a996956 100644 --- a/editor/editor_plugin_settings.cpp +++ b/editor/editor_plugin_settings.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_plugin_settings.h b/editor/editor_plugin_settings.h index 0b70295b9b..63a8395805 100644 --- a/editor/editor_plugin_settings.h +++ b/editor/editor_plugin_settings.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_profiler.cpp b/editor/editor_profiler.cpp index 471742948f..4807f8839c 100644 --- a/editor/editor_profiler.cpp +++ b/editor/editor_profiler.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -88,14 +88,13 @@ void EditorProfiler::clear() { frame_metrics.resize(metric_size); last_metric = -1; variables->clear(); - //activate->set_pressed(false); plot_sigs.clear(); plot_sigs.insert("physics_frame_time"); plot_sigs.insert("category_frame_time"); updating_frame = true; cursor_metric_edit->set_min(0); - cursor_metric_edit->set_max(0); + cursor_metric_edit->set_max(100); // Doesn't make much sense, but we can't have min == max. Doesn't hurt. cursor_metric_edit->set_value(0); updating_frame = false; hover_metric = -1; @@ -398,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_profiler.h b/editor/editor_profiler.h index 46c13d257a..f8accdf6d2 100644 --- a/editor/editor_profiler.h +++ b/editor/editor_profiler.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index e14beabfa2..c049096c35 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_properties.h b/editor/editor_properties.h index 952b0447e2..4c7358597e 100644 --- a/editor/editor_properties.h +++ b/editor/editor_properties.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_properties_array_dict.cpp b/editor/editor_properties_array_dict.cpp index c75b66c601..0dc67b298f 100644 --- a/editor/editor_properties_array_dict.cpp +++ b/editor/editor_properties_array_dict.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_properties_array_dict.h b/editor/editor_properties_array_dict.h index 2fe7c07d56..d4f8abf583 100644 --- a/editor/editor_properties_array_dict.h +++ b/editor/editor_properties_array_dict.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp index e383dadfb0..9d31e26086 100644 --- a/editor/editor_resource_preview.cpp +++ b/editor/editor_resource_preview.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_resource_preview.h b/editor/editor_resource_preview.h index ad4136e9ab..8091fbafdc 100644 --- a/editor/editor_resource_preview.h +++ b/editor/editor_resource_preview.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_run.cpp b/editor/editor_run.cpp index 7b5ec9e772..ff7420e19b 100644 --- a/editor/editor_run.cpp +++ b/editor/editor_run.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_run.h b/editor/editor_run.h index 42724630b5..b50a2c2f0e 100644 --- a/editor/editor_run.h +++ b/editor/editor_run.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_run_native.cpp b/editor/editor_run_native.cpp index 64e90f2488..4bbc111aea 100644 --- a/editor/editor_run_native.cpp +++ b/editor/editor_run_native.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_run_native.h b/editor/editor_run_native.h index a5c28b0cb4..be2e6d269d 100644 --- a/editor/editor_run_native.h +++ b/editor/editor_run_native.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_run_script.cpp b/editor/editor_run_script.cpp index 17ce8a7c7b..1f269c246a 100644 --- a/editor/editor_run_script.cpp +++ b/editor/editor_run_script.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_run_script.h b/editor/editor_run_script.h index e019ca6223..edf75b9e73 100644 --- a/editor/editor_run_script.h +++ b/editor/editor_run_script.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_scale.cpp b/editor/editor_scale.cpp index 785e75c332..358241cbcc 100644 --- a/editor/editor_scale.cpp +++ b/editor/editor_scale.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_scale.h b/editor/editor_scale.h index 95a797c9f4..91e5df15d4 100644 --- a/editor/editor_scale.h +++ b/editor/editor_scale.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp index 1993f24b24..28825b45e1 100644 --- a/editor/editor_sectioned_inspector.cpp +++ b/editor/editor_sectioned_inspector.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_sectioned_inspector.h b/editor/editor_sectioned_inspector.h index 4395e9bb27..7073b73751 100644 --- a/editor/editor_sectioned_inspector.h +++ b/editor/editor_sectioned_inspector.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 87e8a53e94..92e3f61ca5 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -455,7 +456,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { _initial_set("text_editor/appearance/show_info_gutter", true); _initial_set("text_editor/appearance/code_folding", true); _initial_set("text_editor/appearance/word_wrap", false); - _initial_set("text_editor/appearance/show_line_length_guideline", false); + _initial_set("text_editor/appearance/show_line_length_guideline", true); _initial_set("text_editor/appearance/line_length_guideline_column", 80); hints["text_editor/appearance/line_length_guideline_column"] = PropertyInfo(Variant::INT, "text_editor/appearance/line_length_guideline_column", PROPERTY_HINT_RANGE, "20, 160, 1"); diff --git a/editor/editor_settings.h b/editor/editor_settings.h index 0738185e95..4caa494d59 100644 --- a/editor/editor_settings.h +++ b/editor/editor_settings.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_spin_slider.cpp b/editor/editor_spin_slider.cpp index fbc4a5ee5c..5db18d8853 100644 --- a/editor/editor_spin_slider.cpp +++ b/editor/editor_spin_slider.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_spin_slider.h b/editor/editor_spin_slider.h index 2dc6e2c2f2..81a7b981cc 100644 --- a/editor/editor_spin_slider.h +++ b/editor/editor_spin_slider.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_sub_scene.cpp b/editor/editor_sub_scene.cpp index a77051c80b..cd533649e3 100644 --- a/editor/editor_sub_scene.cpp +++ b/editor/editor_sub_scene.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_sub_scene.h b/editor/editor_sub_scene.h index 69efc2be20..8205db25d7 100644 --- a/editor/editor_sub_scene.h +++ b/editor/editor_sub_scene.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index f05c7709d4..2cacc767c8 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -848,6 +848,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); @@ -1011,6 +1012,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_color("grid_major", "GraphEdit", Color(0.0, 0.0, 0.0, 0.15)); theme->set_color("grid_minor", "GraphEdit", Color(0.0, 0.0, 0.0, 0.07)); } + theme->set_color("selection_fill", "GraphEdit", theme->get_color("box_selection_fill_color", "Editor")); + theme->set_color("selection_stroke", "GraphEdit", theme->get_color("box_selection_stroke_color", "Editor")); theme->set_color("activity", "GraphEdit", accent_color); theme->set_icon("minus", "GraphEdit", theme->get_icon("ZoomLess", "EditorIcons")); theme->set_icon("more", "GraphEdit", theme->get_icon("ZoomMore", "EditorIcons")); @@ -1093,6 +1096,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/editor_themes.h b/editor/editor_themes.h index bd1f260ba6..6e9630804f 100644 --- a/editor/editor_themes.h +++ b/editor/editor_themes.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_vcs_interface.cpp b/editor/editor_vcs_interface.cpp index 766f9c3913..0562c3ba43 100644 --- a/editor/editor_vcs_interface.cpp +++ b/editor/editor_vcs_interface.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/editor_vcs_interface.h b/editor/editor_vcs_interface.h index 394a18f974..85d5e30367 100644 --- a/editor/editor_vcs_interface.h +++ b/editor/editor_vcs_interface.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp index f47f9b8b92..cb636f8cdc 100644 --- a/editor/export_template_manager.cpp +++ b/editor/export_template_manager.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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(); @@ -351,7 +353,7 @@ void ExportTemplateManager::ok_pressed() { void ExportTemplateManager::_http_download_mirror_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data) { if (p_status != HTTPRequest::RESULT_SUCCESS || p_code != 200) { - EditorNode::get_singleton()->show_warning("Error getting the list of mirrors."); + EditorNode::get_singleton()->show_warning(TTR("Error getting the list of mirrors.")); return; } @@ -369,7 +371,7 @@ void ExportTemplateManager::_http_download_mirror_completed(int p_status, int p_ int errline; Error err = JSON::parse(mirror_str, r, errs, errline); if (err != OK) { - EditorNode::get_singleton()->show_warning("Error parsing JSON of mirror list. Please report this issue!"); + EditorNode::get_singleton()->show_warning(TTR("Error parsing JSON of mirror list. Please report this issue!")); return; } @@ -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/export_template_manager.h b/editor/export_template_manager.h index ad3ab507b3..96e61a6569 100644 --- a/editor/export_template_manager.h +++ b/editor/export_template_manager.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/file_type_cache.cpp b/editor/file_type_cache.cpp index 602906cb8d..52ab80cc48 100644 --- a/editor/file_type_cache.cpp +++ b/editor/file_type_cache.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/file_type_cache.h b/editor/file_type_cache.h index 87e2e40a02..216effea00 100644 --- a/editor/file_type_cache.h +++ b/editor/file_type_cache.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/fileserver/editor_file_server.cpp b/editor/fileserver/editor_file_server.cpp index 2bea61fe04..af7eb0c4c7 100644 --- a/editor/fileserver/editor_file_server.cpp +++ b/editor/fileserver/editor_file_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/fileserver/editor_file_server.h b/editor/fileserver/editor_file_server.h index 04efb6b09c..4ce4c0cda6 100644 --- a/editor/fileserver/editor_file_server.h +++ b/editor/fileserver/editor_file_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index eb3ae33065..fb5c2b25c9 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -86,6 +90,7 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory // Create all items for the files in the subdirectory. if (display_mode == DISPLAY_MODE_TREE_ONLY) { + String main_scene = ProjectSettings::get_singleton()->get("application/run/main_scene"); for (int i = 0; i < p_dir->get_file_count(); i++) { String file_type = p_dir->get_file_type(i); @@ -115,7 +120,6 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory file_item->select(0); file_item->set_as_cursor(0); } - String main_scene = ProjectSettings::get_singleton()->get("application/run/main_scene"); if (main_scene == file_metadata) { file_item->set_custom_color(0, get_color("accent_color", "Editor")); } @@ -124,6 +128,11 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory udata.push_back(file_item); EditorResourcePreview::get_singleton()->queue_resource_preview(file_metadata, this, "_tree_thumbnail_done", udata); } + } else if (display_mode == DISPLAY_MODE_SPLIT) { + if (lpath.get_base_dir() == path.get_base_dir()) { + subdirectory_item->select(0); + subdirectory_item->set_as_cursor(0); + } } if (searched_string.length() > 0) { @@ -741,6 +750,7 @@ void FileSystemDock::_update_file_list(bool p_keep_selection) { } // Fills the ItemList control node from the FileInfos. + String main_scene = ProjectSettings::get_singleton()->get("application/run/main_scene"); String oi = "Object"; for (List<FileInfo>::Element *E = filelist.front(); E; E = E->next()) { FileInfo *finfo = &(E->get()); @@ -777,6 +787,10 @@ void FileSystemDock::_update_file_list(bool p_keep_selection) { files->set_item_metadata(item_index, fpath); } + if (fpath == main_scene) { + files->set_item_custom_fg_color(item_index, get_color("accent_color", "Editor")); + } + // Generate the preview. if (!finfo->import_broken) { Array udata; @@ -1746,8 +1760,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(); } break; case FILE_COPY_PATH: { @@ -2682,9 +2696,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..49692c8349 100644 --- a/editor/filesystem_dock.h +++ b/editor/filesystem_dock.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..86a4a9ef47 100644 --- a/editor/find_in_files.cpp +++ b/editor/find_in_files.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/find_in_files.h b/editor/find_in_files.h index 178b9a2080..327c3f1b5a 100644 --- a/editor/find_in_files.h +++ b/editor/find_in_files.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp index 74d81bf561..c19bee321a 100644 --- a/editor/groups_editor.cpp +++ b/editor/groups_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -120,7 +121,7 @@ bool GroupDialog::_can_edit(Node *p_node, String p_group) { } void GroupDialog::_add_pressed() { - TreeItem *selected = nodes_to_add->get_selected(); + TreeItem *selected = nodes_to_add->get_next_selected(NULL); if (!selected) { return; @@ -149,7 +150,7 @@ void GroupDialog::_add_pressed() { } void GroupDialog::_removed_pressed() { - TreeItem *selected = nodes_to_remove->get_selected(); + TreeItem *selected = nodes_to_remove->get_next_selected(NULL); if (!selected) { return; @@ -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/groups_editor.h b/editor/groups_editor.h index 78ef99d5c8..84c653bdea 100644 --- a/editor/groups_editor.h +++ b/editor/groups_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/icons/icon_gizmo_directional_light.svg b/editor/icons/icon_gizmo_directional_light.svg index a0e31c8b19..dc2d6bf82d 100644 --- a/editor/icons/icon_gizmo_directional_light.svg +++ b/editor/icons/icon_gizmo_directional_light.svg @@ -1 +1 @@ -<svg height="128" viewBox="0 0 128 128" width="128" xmlns="http://www.w3.org/2000/svg"><path d="m64 4c-4.432 0-8 3.568-8 8v16c0 4.432 3.568 8 8 8s8-3.568 8-8v-16c0-4.432-3.568-8-8-8zm-36.77 15.223c-2.045 0-4.0893.78461-5.6562 2.3516-3.1339 3.1339-3.1339 8.1786 0 11.312l11.312 11.314c3.1339 3.1339 8.1806 3.1339 11.314 0s3.1339-8.1806 0-11.314l-11.314-11.312c-1.5669-1.5669-3.6113-2.3516-5.6562-2.3516zm73.539 0c-2.045 0-4.0893.78461-5.6562 2.3516l-11.314 11.312c-3.1339 3.1339-3.1339 8.1806 0 11.314s8.1806 3.1339 11.314 0l11.312-11.314c3.1339-3.1339 3.1339-8.1786 0-11.312-1.567-1.5669-3.6113-2.3516-5.6562-2.3516zm-36.77 20.777a24 24 0 0 0 -24 24 24 24 0 0 0 24 24 24 24 0 0 0 24-24 24 24 0 0 0 -24-24zm-52 16c-4.432 0-8 3.568-8 8s3.568 8 8 8h16c4.432 0 8-3.568 8-8s-3.568-8-8-8zm88 0c-4.432 0-8 3.568-8 8s3.568 8 8 8h16c4.432 0 8-3.568 8-8s-3.568-8-8-8zm-61.455 25.449c-2.045 0-4.0913.78266-5.6582 2.3496l-11.312 11.314c-3.1339 3.1339-3.1339 8.1786 0 11.312 3.1339 3.1339 8.1786 3.1339 11.312 0l11.314-11.312c3.1339-3.1339 3.1339-8.1806 0-11.314-1.5669-1.5669-3.6113-2.3496-5.6562-2.3496zm50.91 0c-2.045 0-4.0893.78266-5.6562 2.3496-3.1339 3.1339-3.1339 8.1806 0 11.314l11.314 11.312c3.1339 3.1339 8.1786 3.1339 11.312 0s3.1339-8.1786 0-11.312l-11.312-11.314c-1.5669-1.5669-3.6132-2.3496-5.6582-2.3496zm-25.455 10.551c-4.432 0-8 3.568-8 8v16c0 4.432 3.568 8 8 8s8-3.568 8-8v-16c0-4.432-3.568-8-8-8z" fill-opacity=".29412" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2"/><path d="m64 8c-2.216 0-4 1.784-4 4v16c0 2.216 1.784 4 4 4s4-1.784 4-4v-16c0-2.216-1.784-4-4-4zm-36.77 15.227c-1.0225 0-2.0447.39231-2.8281 1.1758-1.5669 1.5669-1.5669 4.0893 0 5.6562l11.312 11.314c1.5669 1.5669 4.0913 1.5669 5.6582 0s1.5669-4.0913 0-5.6582l-11.314-11.312c-.78348-.78348-1.8056-1.1758-2.8281-1.1758zm73.539 0c-1.0225 0-2.0446.39231-2.8281 1.1758l-11.314 11.312c-1.5669 1.5669-1.5669 4.0913 0 5.6582s4.0913 1.5669 5.6582 0l11.313-11.314c1.5669-1.5669 1.5669-4.0893 0-5.6562-.78348-.78348-1.8056-1.1758-2.8281-1.1758zm-36.77 20.773c-11.046.00001-20 8.9543-20 20 .000007 11.046 8.9543 20 20 20s20-8.9543 20-20c-.000008-11.046-8.9543-20-20-20zm-52 16c-2.216 0-4 1.784-4 4s1.784 4 4 4h16c2.216 0 4-1.784 4-4s-1.784-4-4-4zm88 0c-2.216 0-4 1.784-4 4s1.784 4 4 4h16c2.216 0 4-1.784 4-4s-1.784-4-4-4zm-61.455 25.453c-1.0225 0-2.0466.39035-2.8301 1.1738l-11.312 11.314c-1.5669 1.5669-1.5669 4.0893 0 5.6563 1.5669 1.5669 4.0893 1.5669 5.6562 0l11.314-11.313c1.5669-1.5669 1.5669-4.0913 0-5.6582-.78347-.78347-1.8056-1.1738-2.8281-1.1738zm50.91 0c-1.0225 0-2.0447.39035-2.8281 1.1738-1.5669 1.5669-1.5669 4.0913 0 5.6582l11.314 11.313c1.5669 1.5669 4.0893 1.5669 5.6563 0 1.5669-1.567 1.5669-4.0893 0-5.6563l-11.313-11.314c-.78347-.78347-1.8076-1.1738-2.8301-1.1738zm-25.455 10.547c-2.216 0-4 1.784-4 4v16c0 2.216 1.784 4 4 4s4-1.784 4-4v-16c0-2.216-1.784-4-4-4z" fill="#f7f5cf"/></svg>
\ No newline at end of file +<svg height="128" viewBox="0 0 128 128" width="128" xmlns="http://www.w3.org/2000/svg"><path d="m64 4c-4.432 0-8 3.568-8 8v16c0 4.432 3.568 8 8 8s8-3.568 8-8v-16c0-4.432-3.568-8-8-8zm-36.77 15.223c-2.045 0-4.0893.78461-5.6562 2.3516-3.1339 3.1339-3.1339 8.1786 0 11.312l11.312 11.314c3.1339 3.1339 8.1806 3.1339 11.314 0s3.1339-8.1806 0-11.314l-11.314-11.312c-1.5669-1.5669-3.6113-2.3516-5.6562-2.3516zm73.539 0c-2.045 0-4.0893.78461-5.6562 2.3516l-11.314 11.312c-3.1339 3.1339-3.1339 8.1806 0 11.314s8.1806 3.1339 11.314 0l11.312-11.314c3.1339-3.1339 3.1339-8.1786 0-11.312-1.567-1.5669-3.6113-2.3516-5.6562-2.3516zm-36.77 20.777a24 24 0 0 0 -24 24 24 24 0 0 0 24 24 24 24 0 0 0 24-24 24 24 0 0 0 -24-24zm-52 16c-4.432 0-8 3.568-8 8s3.568 8 8 8h16c4.432 0 8-3.568 8-8s-3.568-8-8-8zm88 0c-4.432 0-8 3.568-8 8s3.568 8 8 8h16c4.432 0 8-3.568 8-8s-3.568-8-8-8zm-61.455 25.449c-2.045 0-4.0913.78266-5.6582 2.3496l-11.312 11.314c-3.1339 3.1339-3.1339 8.1786 0 11.312 3.1339 3.1339 8.1786 3.1339 11.312 0l11.314-11.312c3.1339-3.1339 3.1339-8.1806 0-11.314-1.5669-1.5669-3.6113-2.3496-5.6562-2.3496zm50.91 0c-2.045 0-4.0893.78266-5.6562 2.3496-3.1339 3.1339-3.1339 8.1806 0 11.314l11.314 11.312c3.1339 3.1339 8.1786 3.1339 11.312 0s3.1339-8.1786 0-11.312l-11.312-11.314c-1.5669-1.5669-3.6132-2.3496-5.6582-2.3496zm-25.455 10.551c-4.432 0-8 3.568-8 8v16c0 4.432 3.568 8 8 8s8-3.568 8-8v-16c0-4.432-3.568-8-8-8z" fill-opacity=".29412" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2"/><path d="m64 8c-2.216 0-4 1.784-4 4v16c0 2.216 1.784 4 4 4s4-1.784 4-4v-16c0-2.216-1.784-4-4-4zm-36.77 15.227c-1.0225 0-2.0447.39231-2.8281 1.1758-1.5669 1.5669-1.5669 4.0893 0 5.6562l11.312 11.314c1.5669 1.5669 4.0913 1.5669 5.6582 0s1.5669-4.0913 0-5.6582l-11.314-11.312c-.78348-.78348-1.8056-1.1758-2.8281-1.1758zm73.539 0c-1.0225 0-2.0446.39231-2.8281 1.1758l-11.314 11.312c-1.5669 1.5669-1.5669 4.0913 0 5.6582s4.0913 1.5669 5.6582 0l11.313-11.314c1.5669-1.5669 1.5669-4.0893 0-5.6562-.78348-.78348-1.8056-1.1758-2.8281-1.1758zm-36.77 20.773c-11.046.00001-20 8.9543-20 20 .000007 11.046 8.9543 20 20 20s20-8.9543 20-20c-.000008-11.046-8.9543-20-20-20zm-52 16c-2.216 0-4 1.784-4 4s1.784 4 4 4h16c2.216 0 4-1.784 4-4s-1.784-4-4-4zm88 0c-2.216 0-4 1.784-4 4s1.784 4 4 4h16c2.216 0 4-1.784 4-4s-1.784-4-4-4zm-61.455 25.453c-1.0225 0-2.0466.39035-2.8301 1.1738l-11.312 11.314c-1.5669 1.5669-1.5669 4.0893 0 5.6563 1.5669 1.5669 4.0893 1.5669 5.6562 0l11.314-11.313c1.5669-1.5669 1.5669-4.0913 0-5.6582-.78347-.78347-1.8056-1.1738-2.8281-1.1738zm50.91 0c-1.0225 0-2.0447.39035-2.8281 1.1738-1.5669 1.5669-1.5669 4.0913 0 5.6582l11.314 11.313c1.5669 1.5669 4.0893 1.5669 5.6563 0 1.5669-1.567 1.5669-4.0893 0-5.6563l-11.313-11.314c-.78347-.78347-1.8076-1.1738-2.8301-1.1738zm-25.455 10.547c-2.216 0-4 1.784-4 4v16c0 2.216 1.784 4 4 4s4-1.784 4-4v-16c0-2.216-1.784-4-4-4z" fill="#fefefe"/></svg>
\ No newline at end of file diff --git a/editor/icons/icon_gizmo_light.svg b/editor/icons/icon_gizmo_light.svg index e3d2a148fa..1e47082a0a 100644 --- a/editor/icons/icon_gizmo_light.svg +++ b/editor/icons/icon_gizmo_light.svg @@ -1 +1 @@ -<svg height="128" viewBox="0 0 128 128" width="128" xmlns="http://www.w3.org/2000/svg"><path d="m64 2a44 44 0 0 0 -44 44 44 44 0 0 0 24 39.189v5.8105 5 3c0 5.0515 3.3756 9.2769 8 10.578v16.422h24v-16.422c4.6244-1.3012 8-5.5266 8-10.578v-3-5-5.8574a44 44 0 0 0 24-39.143 44 44 0 0 0 -44-44zm0 20a24 24 0 0 1 24 24 24 24 0 0 1 -24 24 24 24 0 0 1 -24-24 24 24 0 0 1 24-24z" fill-opacity=".29412" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2.2"/><path d="m64 6a40 40 0 0 0 -40 40 40 40 0 0 0 24 36.607v15.393a8 8 0 0 0 8 8h16a8 8 0 0 0 8-8v-15.363a40 40 0 0 0 24-36.637 40 40 0 0 0 -40-40zm0 12a28 28 0 0 1 28 28 28 28 0 0 1 -28 28 28 28 0 0 1 -28-28 28 28 0 0 1 28-28zm-8 96v8h16v-8z" fill="#f7f5cf"/></svg>
\ No newline at end of file +<svg height="128" viewBox="0 0 128 128" width="128" xmlns="http://www.w3.org/2000/svg"><path d="m64 2a44 44 0 0 0 -44 44 44 44 0 0 0 24 39.189v5.8105 5 3c0 5.0515 3.3756 9.2769 8 10.578v16.422h24v-16.422c4.6244-1.3012 8-5.5266 8-10.578v-3-5-5.8574a44 44 0 0 0 24-39.143 44 44 0 0 0 -44-44zm0 20a24 24 0 0 1 24 24 24 24 0 0 1 -24 24 24 24 0 0 1 -24-24 24 24 0 0 1 24-24z" fill-opacity=".29412" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2.2"/><path d="m64 6a40 40 0 0 0 -40 40 40 40 0 0 0 24 36.607v15.393a8 8 0 0 0 8 8h16a8 8 0 0 0 8-8v-15.363a40 40 0 0 0 24-36.637 40 40 0 0 0 -40-40zm0 12a28 28 0 0 1 28 28 28 28 0 0 1 -28 28 28 28 0 0 1 -28-28 28 28 0 0 1 28-28zm-8 96v8h16v-8z" fill="#fefefe"/></svg>
\ No newline at end of file diff --git a/editor/icons/icon_gizmo_spot_light.svg b/editor/icons/icon_gizmo_spot_light.svg index 7f0b23937f..23a8364679 100644 --- a/editor/icons/icon_gizmo_spot_light.svg +++ b/editor/icons/icon_gizmo_spot_light.svg @@ -1 +1 @@ -<svg height="128" viewBox="0 0 128 128" width="128" xmlns="http://www.w3.org/2000/svg"><path d="m52 4c-6.5788 0-12 5.4212-12 12v26.625c-12.263 7.2822-19.978 19.75-20 33.369l-.005859 4.0059h28.578c1.7994 6.8632 8.0265 12 15.428 12s13.628-5.1368 15.428-12h28.576l-.00391-4.0039c-.01526-13.625-7.7323-26.099-20-33.385v-26.611c0-6.5788-5.4212-12-12-12zm-11.689 78.016c-1.536-.10738-3.1419.23676-4.5586 1.0547l-10.393 6c-3.7786 2.1816-5.1117 7.1503-2.9297 10.93 2.1816 3.7786 7.1503 5.1117 10.93 2.9297l10.393-6c3.7796-2.1822 5.1087-7.1521 2.9277-10.93-1.3629-2.3605-3.8057-3.8052-6.3691-3.9844zm47.379 0c-2.5634.1792-5.0063 1.6238-6.3691 3.9844-2.181 3.7776-.85187 8.7475 2.9277 10.93l10.393 6c3.7794 2.182 8.7481.8489 10.93-2.9297 2.182-3.7794.84891-8.7481-2.9297-10.93l-10.393-6c-1.4167-.81792-3.0225-1.1621-4.5586-1.0547zm-23.689 13.984c-4.3628 0-8 3.6372-8 8v12c0 4.3628 3.6372 8 8 8s8-3.6372 8-8v-12c0-4.3628-3.6372-8-8-8z" fill-opacity=".29412"/><path d="m52 8c-4.432 0-8 3.568-8 8v12 16.875a40 36 0 0 0 -20 31.125h28a12 12 0 0 0 12 12 12 12 0 0 0 12-12h28a40 36 0 0 0 -20-31.141v-20.859-8c0-4.432-3.568-8-8-8zm-11.969 78.006c-.76793-.053681-1.5596.1138-2.2793.5293l-10.393 6c-1.9191 1.108-2.5728 3.5457-1.4648 5.4648s3.5457 2.5728 5.4648 1.4648l10.393-6c1.9191-1.108 2.5709-3.5457 1.4629-5.4648-.6925-1.1994-1.9037-1.9047-3.1836-1.9941zm47.938 0c-1.2799.08947-2.4911.7947-3.1836 1.9941-1.108 1.9191-.45622 4.3568 1.4629 5.4648l10.393 6c1.9191 1.108 4.3568.45427 5.4648-1.4648s.45427-4.3568-1.4648-5.4648l-10.393-6c-.71967-.4155-1.5114-.58298-2.2793-.5293zm-23.969 13.994c-2.216 0-4 1.784-4 4v12c0 2.216 1.784 4 4 4s4-1.784 4-4v-12c0-2.216-1.784-4-4-4z" fill="#f7f5cf" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.1082"/></svg>
\ No newline at end of file +<svg height="128" viewBox="0 0 128 128" width="128" xmlns="http://www.w3.org/2000/svg"><path d="m52 4c-6.5788 0-12 5.4212-12 12v26.625c-12.263 7.2822-19.978 19.75-20 33.369l-.005859 4.0059h28.578c1.7994 6.8632 8.0265 12 15.428 12s13.628-5.1368 15.428-12h28.576l-.00391-4.0039c-.01526-13.625-7.7323-26.099-20-33.385v-26.611c0-6.5788-5.4212-12-12-12zm-11.689 78.016c-1.536-.10738-3.1419.23676-4.5586 1.0547l-10.393 6c-3.7786 2.1816-5.1117 7.1503-2.9297 10.93 2.1816 3.7786 7.1503 5.1117 10.93 2.9297l10.393-6c3.7796-2.1822 5.1087-7.1521 2.9277-10.93-1.3629-2.3605-3.8057-3.8052-6.3691-3.9844zm47.379 0c-2.5634.1792-5.0063 1.6238-6.3691 3.9844-2.181 3.7776-.85187 8.7475 2.9277 10.93l10.393 6c3.7794 2.182 8.7481.8489 10.93-2.9297 2.182-3.7794.84891-8.7481-2.9297-10.93l-10.393-6c-1.4167-.81792-3.0225-1.1621-4.5586-1.0547zm-23.689 13.984c-4.3628 0-8 3.6372-8 8v12c0 4.3628 3.6372 8 8 8s8-3.6372 8-8v-12c0-4.3628-3.6372-8-8-8z" fill-opacity=".29412"/><path d="m52 8c-4.432 0-8 3.568-8 8v12 16.875a40 36 0 0 0 -20 31.125h28a12 12 0 0 0 12 12 12 12 0 0 0 12-12h28a40 36 0 0 0 -20-31.141v-20.859-8c0-4.432-3.568-8-8-8zm-11.969 78.006c-.76793-.053681-1.5596.1138-2.2793.5293l-10.393 6c-1.9191 1.108-2.5728 3.5457-1.4648 5.4648s3.5457 2.5728 5.4648 1.4648l10.393-6c1.9191-1.108 2.5709-3.5457 1.4629-5.4648-.6925-1.1994-1.9037-1.9047-3.1836-1.9941zm47.938 0c-1.2799.08947-2.4911.7947-3.1836 1.9941-1.108 1.9191-.45622 4.3568 1.4629 5.4648l10.393 6c1.9191 1.108 4.3568.45427 5.4648-1.4648s.45427-4.3568-1.4648-5.4648l-10.393-6c-.71967-.4155-1.5114-.58298-2.2793-.5293zm-23.969 13.994c-2.216 0-4 1.784-4 4v12c0 2.216 1.784 4 4 4s4-1.784 4-4v-12c0-2.216-1.784-4-4-4z" fill="#fefefe" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.1082"/></svg>
\ No newline at end of file diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp index d604a95320..b3f97714ae 100644 --- a/editor/import/editor_import_collada.cpp +++ b/editor/import/editor_import_collada.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_import_collada.h b/editor/import/editor_import_collada.h index 6497cdb110..822a6450be 100644 --- a/editor/import/editor_import_collada.h +++ b/editor/import/editor_import_collada.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/editor_import_plugin.cpp b/editor/import/editor_import_plugin.cpp index 98f4947c2d..53a654c971 100644 --- a/editor/import/editor_import_plugin.cpp +++ b/editor/import/editor_import_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/editor_import_plugin.h b/editor/import/editor_import_plugin.h index eb119b4ba3..4383b1b084 100644 --- a/editor/import/editor_import_plugin.h +++ b/editor/import/editor_import_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp index c7c1cc9708..f5128103f3 100644 --- a/editor/import/editor_scene_importer_gltf.cpp +++ b/editor/import/editor_scene_importer_gltf.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -229,9 +229,16 @@ Error EditorSceneImporterGLTF::_parse_scenes(GLTFState &state) { ERR_FAIL_COND_V(!state.json.has("scenes"), ERR_FILE_CORRUPT); const Array &scenes = state.json["scenes"]; - ERR_FAIL_COND_V(!scenes.size(), ERR_FILE_CORRUPT); - for (int i = 0; i < 1; i++) { //only first scene is imported - const Dictionary &s = scenes[i]; + int loaded_scene = 0; + if (state.json.has("scene")) { + loaded_scene = state.json["scene"]; + } else { + WARN_PRINT("The load-time scene is not defined in the glTF2 file. Picking the first scene.") + } + + if (scenes.size()) { + ERR_FAIL_COND_V(loaded_scene >= scenes.size(), ERR_FILE_CORRUPT); + const Dictionary &s = scenes[loaded_scene]; ERR_FAIL_COND_V(!s.has("nodes"), ERR_UNAVAILABLE); const Array &nodes = s["nodes"]; for (int j = 0; j < nodes.size(); j++) { @@ -848,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); @@ -1473,9 +1479,16 @@ Error EditorSceneImporterGLTF::_parse_materials(GLTFState &state) { if (d.has("alphaMode")) { const String &am = d["alphaMode"]; - if (am != "OPAQUE") { + if (am == "BLEND") { material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true); material->set_depth_draw_mode(SpatialMaterial::DEPTH_DRAW_ALPHA_OPAQUE_PREPASS); + } else if (am == "MASK") { + material->set_flag(SpatialMaterial::FLAG_USE_ALPHA_SCISSOR, true); + if (d.has("alphaCutoff")) { + material->set_alpha_scissor_threshold(d["alphaCutoff"]); + } else { + material->set_alpha_scissor_threshold(0.5f); + } } } @@ -2136,7 +2149,6 @@ Error EditorSceneImporterGLTF::_create_skeletons(GLTFState &state) { skeleton->add_bone(node->name); skeleton->set_bone_rest(bone_index, node->xform); - skeleton->set_bone_pose(bone_index, node->xform); if (node->parent >= 0 && state.nodes[node->parent]->skeleton == skel_i) { const int bone_parent = skeleton->find_bone(state.nodes[node->parent]->name); @@ -2317,7 +2329,7 @@ Error EditorSceneImporterGLTF::_parse_animations(GLTFState &state) { Array samplers = d["samplers"]; if (d.has("name")) { - animation.name = d["name"]; + animation.name = _sanitize_scene_name(d["name"]); } for (int j = 0; j < channels.size(); j++) { diff --git a/editor/import/editor_scene_importer_gltf.h b/editor/import/editor_scene_importer_gltf.h index 6021bf10c8..4a91b99aa7 100644 --- a/editor/import/editor_scene_importer_gltf.h +++ b/editor/import/editor_scene_importer_gltf.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -172,7 +172,10 @@ class EditorSceneImporterGLTF : public EditorSceneImporter { min = 0; max = 0; sparse_count = 0; + sparse_indices_buffer_view = 0; sparse_indices_byte_offset = 0; + sparse_indices_component_type = 0; + sparse_values_buffer_view = 0; sparse_values_byte_offset = 0; } }; diff --git a/editor/import/resource_importer_bitmask.cpp b/editor/import/resource_importer_bitmask.cpp index 18e53fc783..c6fdbd1378 100644 --- a/editor/import/resource_importer_bitmask.cpp +++ b/editor/import/resource_importer_bitmask.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_bitmask.h b/editor/import/resource_importer_bitmask.h index 6ae7608ff2..dd95cb687a 100644 --- a/editor/import/resource_importer_bitmask.h +++ b/editor/import/resource_importer_bitmask.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_csv.cpp b/editor/import/resource_importer_csv.cpp index 64b5309cab..424f90bd54 100644 --- a/editor/import/resource_importer_csv.cpp +++ b/editor/import/resource_importer_csv.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_csv.h b/editor/import/resource_importer_csv.h index 7d06bdb188..2030dd1f99 100644 --- a/editor/import/resource_importer_csv.h +++ b/editor/import/resource_importer_csv.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_csv_translation.cpp b/editor/import/resource_importer_csv_translation.cpp index d988e1dcc3..3119fb088b 100644 --- a/editor/import/resource_importer_csv_translation.cpp +++ b/editor/import/resource_importer_csv_translation.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_csv_translation.h b/editor/import/resource_importer_csv_translation.h index c2753b326f..ec33d6aa16 100644 --- a/editor/import/resource_importer_csv_translation.h +++ b/editor/import/resource_importer_csv_translation.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_image.cpp b/editor/import/resource_importer_image.cpp index 3d7663ba8f..a1f5a79b00 100644 --- a/editor/import/resource_importer_image.cpp +++ b/editor/import/resource_importer_image.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_image.h b/editor/import/resource_importer_image.h index beadf5a8ea..6ad77eec1b 100644 --- a/editor/import/resource_importer_image.h +++ b/editor/import/resource_importer_image.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_layered_texture.cpp b/editor/import/resource_importer_layered_texture.cpp index 7e3c4cecf4..9b819bc341 100644 --- a/editor/import/resource_importer_layered_texture.cpp +++ b/editor/import/resource_importer_layered_texture.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_layered_texture.h b/editor/import/resource_importer_layered_texture.h index d6acbbabca..6dc4b6ed3c 100644 --- a/editor/import/resource_importer_layered_texture.h +++ b/editor/import/resource_importer_layered_texture.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_obj.cpp b/editor/import/resource_importer_obj.cpp index 31a099ef83..06bbe17785 100644 --- a/editor/import/resource_importer_obj.cpp +++ b/editor/import/resource_importer_obj.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_obj.h b/editor/import/resource_importer_obj.h index adad21da61..678be45106 100644 --- a/editor/import/resource_importer_obj.h +++ b/editor/import/resource_importer_obj.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp index 3a99968192..cab317990e 100644 --- a/editor/import/resource_importer_scene.cpp +++ b/editor/import/resource_importer_scene.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_scene.h b/editor/import/resource_importer_scene.h index ef9a77917f..2691b224eb 100644 --- a/editor/import/resource_importer_scene.h +++ b/editor/import/resource_importer_scene.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp index 25431179b5..88547280ce 100644 --- a/editor/import/resource_importer_texture.cpp +++ b/editor/import/resource_importer_texture.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_texture.h b/editor/import/resource_importer_texture.h index da712bf84d..fbfd47f4f0 100644 --- a/editor/import/resource_importer_texture.h +++ b/editor/import/resource_importer_texture.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_texture_atlas.cpp b/editor/import/resource_importer_texture_atlas.cpp index 51a6cc6757..335e1114e6 100644 --- a/editor/import/resource_importer_texture_atlas.cpp +++ b/editor/import/resource_importer_texture_atlas.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_texture_atlas.h b/editor/import/resource_importer_texture_atlas.h index 3c6fc343c4..e455a157cf 100644 --- a/editor/import/resource_importer_texture_atlas.h +++ b/editor/import/resource_importer_texture_atlas.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_wav.cpp b/editor/import/resource_importer_wav.cpp index 74586a4100..2d43fa089d 100644 --- a/editor/import/resource_importer_wav.cpp +++ b/editor/import/resource_importer_wav.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import/resource_importer_wav.h b/editor/import/resource_importer_wav.h index 24481ea46b..59d33feef0 100644 --- a/editor/import/resource_importer_wav.h +++ b/editor/import/resource_importer_wav.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp index 947e322075..20d47e8250 100644 --- a/editor/import_dock.cpp +++ b/editor/import_dock.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/import_dock.h b/editor/import_dock.h index c839e19d67..a4378fb60d 100644 --- a/editor/import_dock.h +++ b/editor/import_dock.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp index 02b0159241..2be3464d30 100644 --- a/editor/inspector_dock.cpp +++ b/editor/inspector_dock.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/inspector_dock.h b/editor/inspector_dock.h index 866b152d2e..a7da4bef4c 100644 --- a/editor/inspector_dock.h +++ b/editor/inspector_dock.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/multi_node_edit.cpp b/editor/multi_node_edit.cpp index e1992b8540..7bc67b54c1 100644 --- a/editor/multi_node_edit.cpp +++ b/editor/multi_node_edit.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/multi_node_edit.h b/editor/multi_node_edit.h index 33df4a2ca5..d3eefafcec 100644 --- a/editor/multi_node_edit.h +++ b/editor/multi_node_edit.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/node_dock.cpp b/editor/node_dock.cpp index 7ba1796600..20b8b3f5cb 100644 --- a/editor/node_dock.cpp +++ b/editor/node_dock.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -31,6 +31,7 @@ #include "node_dock.h" #include "editor_node.h" +#include "editor_scale.h" void NodeDock::show_groups() { diff --git a/editor/node_dock.h b/editor/node_dock.h index 1dd988479b..ae33c5b9a5 100644 --- a/editor/node_dock.h +++ b/editor/node_dock.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/pane_drag.cpp b/editor/pane_drag.cpp index 67fda8134d..eef4db456c 100644 --- a/editor/pane_drag.cpp +++ b/editor/pane_drag.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/pane_drag.h b/editor/pane_drag.h index 36c5953d84..7e66bb429f 100644 --- a/editor/pane_drag.h +++ b/editor/pane_drag.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugin_config_dialog.cpp b/editor/plugin_config_dialog.cpp index 971e746509..28667abe77 100644 --- a/editor/plugin_config_dialog.cpp +++ b/editor/plugin_config_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/plugin_config_dialog.h b/editor/plugin_config_dialog.h index 525b7755dd..fa148125bc 100644 --- a/editor/plugin_config_dialog.h +++ b/editor/plugin_config_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp index 7f023af848..c8a36a3a99 100644 --- a/editor/plugins/abstract_polygon_2d_editor.cpp +++ b/editor/plugins/abstract_polygon_2d_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/abstract_polygon_2d_editor.h b/editor/plugins/abstract_polygon_2d_editor.h index a00cdd0cf6..6ed6d0a257 100644 --- a/editor/plugins/abstract_polygon_2d_editor.h +++ b/editor/plugins/abstract_polygon_2d_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/animation_blend_space_1d_editor.cpp b/editor/plugins/animation_blend_space_1d_editor.cpp index e07f041eb1..d743d1ac2f 100644 --- a/editor/plugins/animation_blend_space_1d_editor.cpp +++ b/editor/plugins/animation_blend_space_1d_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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 { @@ -702,13 +703,13 @@ AnimationNodeBlendSpace1DEditor::AnimationNodeBlendSpace1DEditor() { bottom_hb->set_h_size_flags(SIZE_EXPAND_FILL); min_value = memnew(SpinBox); - min_value->set_max(0); min_value->set_min(-10000); + min_value->set_max(0); min_value->set_step(0.01); max_value = memnew(SpinBox); - max_value->set_max(10000); max_value->set_min(0.01); + max_value->set_max(10000); max_value->set_step(0.01); label_value = memnew(LineEdit); diff --git a/editor/plugins/animation_blend_space_1d_editor.h b/editor/plugins/animation_blend_space_1d_editor.h index 4a924b46c1..346ad36cff 100644 --- a/editor/plugins/animation_blend_space_1d_editor.h +++ b/editor/plugins/animation_blend_space_1d_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/animation_blend_space_2d_editor.cpp b/editor/plugins/animation_blend_space_2d_editor.cpp index b422e3e927..dc7754ba9a 100644 --- a/editor/plugins/animation_blend_space_2d_editor.cpp +++ b/editor/plugins/animation_blend_space_2d_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_space_2d_editor.h b/editor/plugins/animation_blend_space_2d_editor.h index 850a6201bb..50b0d9a06c 100644 --- a/editor/plugins/animation_blend_space_2d_editor.h +++ b/editor/plugins/animation_blend_space_2d_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/animation_blend_tree_editor_plugin.cpp b/editor/plugins/animation_blend_tree_editor_plugin.cpp index e147206ec4..def3f4bfec 100644 --- a/editor/plugins/animation_blend_tree_editor_plugin.cpp +++ b/editor/plugins/animation_blend_tree_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..4f5badea9f 100644 --- a/editor/plugins/animation_blend_tree_editor_plugin.h +++ b/editor/plugins/animation_blend_tree_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..5b41da6e8e 100644 --- a/editor/plugins/animation_player_editor_plugin.cpp +++ b/editor/plugins/animation_player_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_player_editor_plugin.h b/editor/plugins/animation_player_editor_plugin.h index 663ffd57f3..55c2f365ce 100644 --- a/editor/plugins/animation_player_editor_plugin.h +++ b/editor/plugins/animation_player_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp index ce400ad6dd..2a582a1249 100644 --- a/editor/plugins/animation_state_machine_editor.cpp +++ b/editor/plugins/animation_state_machine_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -262,7 +263,7 @@ void AnimationNodeStateMachineEditor::_state_machine_gui_input(const Ref<InputEv if (connecting_to_node != StringName()) { if (state_machine->has_transition(connecting_from, connecting_to_node)) { - EditorNode::get_singleton()->show_warning("Transition exists!"); + EditorNode::get_singleton()->show_warning(TTR("Transition exists!")); } else { @@ -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/animation_state_machine_editor.h b/editor/plugins/animation_state_machine_editor.h index 8b0a5a0b00..132e66b28d 100644 --- a/editor/plugins/animation_state_machine_editor.h +++ b/editor/plugins/animation_state_machine_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/animation_tree_editor_plugin.cpp b/editor/plugins/animation_tree_editor_plugin.cpp index 28dc5bf5c8..a0b58b8f7e 100644 --- a/editor/plugins/animation_tree_editor_plugin.cpp +++ b/editor/plugins/animation_tree_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/animation_tree_editor_plugin.h b/editor/plugins/animation_tree_editor_plugin.h index 4ecbf2e05e..0b93b0fd8e 100644 --- a/editor/plugins/animation_tree_editor_plugin.h +++ b/editor/plugins/animation_tree_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/animation_tree_player_editor_plugin.cpp b/editor/plugins/animation_tree_player_editor_plugin.cpp index c99ad7f441..a85def5c6d 100644 --- a/editor/plugins/animation_tree_player_editor_plugin.cpp +++ b/editor/plugins/animation_tree_player_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/animation_tree_player_editor_plugin.h b/editor/plugins/animation_tree_player_editor_plugin.h index 03bc559b86..d3fd6ae362 100644 --- a/editor/plugins/animation_tree_player_editor_plugin.h +++ b/editor/plugins/animation_tree_player_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index 95767a96d8..5d73ffa209 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/asset_library_editor_plugin.h b/editor/plugins/asset_library_editor_plugin.h index 70ffbd9eed..aa3c735810 100644 --- a/editor/plugins/asset_library_editor_plugin.h +++ b/editor/plugins/asset_library_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/audio_stream_editor_plugin.cpp b/editor/plugins/audio_stream_editor_plugin.cpp index 0ab3d26c85..b6e5d48a83 100644 --- a/editor/plugins/audio_stream_editor_plugin.cpp +++ b/editor/plugins/audio_stream_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/audio_stream_editor_plugin.h b/editor/plugins/audio_stream_editor_plugin.h index 12e4faef94..2191b541f6 100644 --- a/editor/plugins/audio_stream_editor_plugin.h +++ b/editor/plugins/audio_stream_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/baked_lightmap_editor_plugin.cpp b/editor/plugins/baked_lightmap_editor_plugin.cpp index d75f06de12..7db936ccb8 100644 --- a/editor/plugins/baked_lightmap_editor_plugin.cpp +++ b/editor/plugins/baked_lightmap_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/baked_lightmap_editor_plugin.h b/editor/plugins/baked_lightmap_editor_plugin.h index ff4b59244f..8b94257a62 100644 --- a/editor/plugins/baked_lightmap_editor_plugin.h +++ b/editor/plugins/baked_lightmap_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/camera_editor_plugin.cpp b/editor/plugins/camera_editor_plugin.cpp index 2531d59d1b..6f5bc69bd1 100644 --- a/editor/plugins/camera_editor_plugin.cpp +++ b/editor/plugins/camera_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/camera_editor_plugin.h b/editor/plugins/camera_editor_plugin.h index 400aee132d..9758a1ffbd 100644 --- a/editor/plugins/camera_editor_plugin.h +++ b/editor/plugins/camera_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 20b4cf43bf..89e25ffcff 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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(); @@ -2238,6 +2248,7 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) { // Clear the selection if not additive editor_selection->clear(); viewport->update(); + selected_from_canvas = true; }; drag_from = click; @@ -3201,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()); @@ -3835,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")); } @@ -4067,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); } @@ -4206,11 +4216,13 @@ void CanvasItemEditor::_zoom_on_position(float p_zoom, Point2 p_position) { void CanvasItemEditor::_update_zoom_label() { String zoom_text; + // The zoom level displayed is relative to the editor scale + // (like in most image editors). if (zoom >= 10) { - // Don't show a decimal when the zoom level is higher than 1000 % - zoom_text = rtos(Math::round(zoom * 100)) + " %"; + // Don't show a decimal when the zoom level is higher than 1000 %. + zoom_text = rtos(Math::round((zoom / EDSCALE) * 100)) + " %"; } else { - zoom_text = rtos(Math::stepify(zoom * 100, 0.1)) + " %"; + zoom_text = rtos(Math::stepify((zoom / EDSCALE) * 100, 0.1)) + " %"; } zoom_reset->set_text(zoom_text); @@ -4221,7 +4233,7 @@ void CanvasItemEditor::_button_zoom_minus() { } void CanvasItemEditor::_button_zoom_reset() { - _zoom_on_position(1.0, viewport_scrollable->get_size() / 2.0); + _zoom_on_position(1.0 * EDSCALE, viewport_scrollable->get_size() / 2.0); } void CanvasItemEditor::_button_zoom_plus() { @@ -4751,19 +4763,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(); @@ -4927,8 +4941,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 @@ -4981,7 +4995,8 @@ void CanvasItemEditor::_bind_methods() { Dictionary CanvasItemEditor::get_state() const { Dictionary state; - state["zoom"] = zoom; + // Take the editor scale into account. + state["zoom"] = zoom / EDSCALE; state["ofs"] = view_offset; state["grid_offset"] = grid_offset; state["grid_step"] = grid_step; @@ -5018,7 +5033,9 @@ void CanvasItemEditor::set_state(const Dictionary &p_state) { bool update_scrollbars = false; Dictionary state = p_state; if (state.has("zoom")) { - zoom = p_state["zoom"]; + // Compensate the editor scale, so that the editor scale can be changed + // and the zoom level will still be the same (relative to the editor scale). + zoom = float(p_state["zoom"]) * EDSCALE; _update_zoom_label(); } @@ -5234,11 +5251,11 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { show_rulers = true; show_guides = true; show_edit_locks = true; - zoom = 1; + zoom = 1.0 / EDSCALE; view_offset = Point2(-150 - RULER_WIDTH, -95 - RULER_WIDTH); previous_update_view_offset = view_offset; // Moves the view a little bit to the left so that (0,0) is visible. The values a relative to a 16/10 screen grid_offset = Point2(); - grid_step = Point2(10, 10); + grid_step = Point2(8, 8); // A power-of-two value works better as a default primary_grid_steps = 8; // A power-of-two value works better as a default grid_step_multiplier = 0; snap_rotation_offset = 0; diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h index 74adb882d1..3291d6b9bf 100644 --- a/editor/plugins/canvas_item_editor_plugin.h +++ b/editor/plugins/canvas_item_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.cpp b/editor/plugins/collision_polygon_2d_editor_plugin.cpp index 0179adc148..3d32c0b698 100644 --- a/editor/plugins/collision_polygon_2d_editor_plugin.cpp +++ b/editor/plugins/collision_polygon_2d_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.h b/editor/plugins/collision_polygon_2d_editor_plugin.h index 3f0734fb19..a4fa7c7b3b 100644 --- a/editor/plugins/collision_polygon_2d_editor_plugin.h +++ b/editor/plugins/collision_polygon_2d_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/collision_polygon_editor_plugin.cpp b/editor/plugins/collision_polygon_editor_plugin.cpp index 8cf09406c7..8620437ac6 100644 --- a/editor/plugins/collision_polygon_editor_plugin.cpp +++ b/editor/plugins/collision_polygon_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/collision_polygon_editor_plugin.h b/editor/plugins/collision_polygon_editor_plugin.h index 2a904a53ba..1871c6ee7e 100644 --- a/editor/plugins/collision_polygon_editor_plugin.h +++ b/editor/plugins/collision_polygon_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/collision_shape_2d_editor_plugin.cpp b/editor/plugins/collision_shape_2d_editor_plugin.cpp index c8561d22a4..be9e5b0e3a 100644 --- a/editor/plugins/collision_shape_2d_editor_plugin.cpp +++ b/editor/plugins/collision_shape_2d_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/collision_shape_2d_editor_plugin.h b/editor/plugins/collision_shape_2d_editor_plugin.h index 10a1a6bd98..025420a886 100644 --- a/editor/plugins/collision_shape_2d_editor_plugin.h +++ b/editor/plugins/collision_shape_2d_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/cpu_particles_2d_editor_plugin.cpp b/editor/plugins/cpu_particles_2d_editor_plugin.cpp index 374900d4c7..655048c271 100644 --- a/editor/plugins/cpu_particles_2d_editor_plugin.cpp +++ b/editor/plugins/cpu_particles_2d_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -296,9 +296,9 @@ CPUParticles2DEditorPlugin::CPUParticles2DEditorPlugin(EditorNode *p_node) { emission_mask->add_child(emvb); emission_mask_mode = memnew(OptionButton); emvb->add_margin_child(TTR("Emission Mask"), emission_mask_mode); - emission_mask_mode->add_item("Solid Pixels", EMISSION_MODE_SOLID); - emission_mask_mode->add_item("Border Pixels", EMISSION_MODE_BORDER); - emission_mask_mode->add_item("Directed Border Pixels", EMISSION_MODE_BORDER_DIRECTED); + emission_mask_mode->add_item(TTR("Solid Pixels"), EMISSION_MODE_SOLID); + emission_mask_mode->add_item(TTR("Border Pixels"), EMISSION_MODE_BORDER); + emission_mask_mode->add_item(TTR("Directed Border Pixels"), EMISSION_MODE_BORDER_DIRECTED); emission_colors = memnew(CheckBox); emission_colors->set_text(TTR("Capture from Pixel")); emvb->add_margin_child(TTR("Emission Colors"), emission_colors); diff --git a/editor/plugins/cpu_particles_2d_editor_plugin.h b/editor/plugins/cpu_particles_2d_editor_plugin.h index 84bbfff095..21b06b6489 100644 --- a/editor/plugins/cpu_particles_2d_editor_plugin.h +++ b/editor/plugins/cpu_particles_2d_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/cpu_particles_editor_plugin.cpp b/editor/plugins/cpu_particles_editor_plugin.cpp index 93ffce41fa..2074ba6b99 100644 --- a/editor/plugins/cpu_particles_editor_plugin.cpp +++ b/editor/plugins/cpu_particles_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/cpu_particles_editor_plugin.h b/editor/plugins/cpu_particles_editor_plugin.h index 674f00dc9f..deaced9ad9 100644 --- a/editor/plugins/cpu_particles_editor_plugin.h +++ b/editor/plugins/cpu_particles_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/curve_editor_plugin.cpp b/editor/plugins/curve_editor_plugin.cpp index 727d92ba05..a4fc9b37ad 100644 --- a/editor/plugins/curve_editor_plugin.cpp +++ b/editor/plugins/curve_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..06e2692373 100644 --- a/editor/plugins/curve_editor_plugin.h +++ b/editor/plugins/curve_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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 007ce58bd7..9b0d5d3daf 100644 --- a/editor/plugins/editor_preview_plugins.cpp +++ b/editor/plugins/editor_preview_plugins.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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) { @@ -827,19 +828,23 @@ void EditorFontPreviewPlugin::_bind_methods() { bool EditorFontPreviewPlugin::handles(const String &p_type) const { - return ClassDB::is_parent_class(p_type, "DynamicFontData"); + return ClassDB::is_parent_class(p_type, "DynamicFontData") || ClassDB::is_parent_class(p_type, "DynamicFont"); } Ref<Texture> EditorFontPreviewPlugin::generate_from_path(const String &p_path, const Size2 &p_size) const { - Ref<DynamicFontData> SampledFont; - SampledFont.instance(); - SampledFont->set_font_path(p_path); - + RES res = ResourceLoader::load(p_path); Ref<DynamicFont> sampled_font; - sampled_font.instance(); + if (res->is_class("DynamicFont")) { + sampled_font = res->duplicate(); + if (sampled_font->get_outline_color() == Color(1, 1, 1, 1)) { + sampled_font->set_outline_color(Color(0, 0, 0, 1)); + } + } else if (res->is_class("DynamicFontData")) { + sampled_font.instance(); + sampled_font->set_font_data(res); + } sampled_font->set_size(50); - sampled_font->set_font_data(SampledFont); String sampled_text = "Abg"; Vector2 size = sampled_font->get_string_size(sampled_text); diff --git a/editor/plugins/editor_preview_plugins.h b/editor/plugins/editor_preview_plugins.h index 71a6c0fc08..e6e4aff8de 100644 --- a/editor/plugins/editor_preview_plugins.h +++ b/editor/plugins/editor_preview_plugins.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/gi_probe_editor_plugin.cpp b/editor/plugins/gi_probe_editor_plugin.cpp index a6125af1f7..8914e0ed01 100644 --- a/editor/plugins/gi_probe_editor_plugin.cpp +++ b/editor/plugins/gi_probe_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/gi_probe_editor_plugin.h b/editor/plugins/gi_probe_editor_plugin.h index c33668ae19..5db682835d 100644 --- a/editor/plugins/gi_probe_editor_plugin.h +++ b/editor/plugins/gi_probe_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/gradient_editor_plugin.cpp b/editor/plugins/gradient_editor_plugin.cpp index e85c475ad7..0a3a994eb7 100644 --- a/editor/plugins/gradient_editor_plugin.cpp +++ b/editor/plugins/gradient_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/gradient_editor_plugin.h b/editor/plugins/gradient_editor_plugin.h index a87a5fe0ba..9ebd9610e5 100644 --- a/editor/plugins/gradient_editor_plugin.h +++ b/editor/plugins/gradient_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/item_list_editor_plugin.cpp b/editor/plugins/item_list_editor_plugin.cpp index b3f3ccf501..39dc130f42 100644 --- a/editor/plugins/item_list_editor_plugin.cpp +++ b/editor/plugins/item_list_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/item_list_editor_plugin.h b/editor/plugins/item_list_editor_plugin.h index 78b176620e..8a73367bf7 100644 --- a/editor/plugins/item_list_editor_plugin.h +++ b/editor/plugins/item_list_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/light_occluder_2d_editor_plugin.cpp b/editor/plugins/light_occluder_2d_editor_plugin.cpp index d8f6259598..22df287f97 100644 --- a/editor/plugins/light_occluder_2d_editor_plugin.cpp +++ b/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/light_occluder_2d_editor_plugin.h b/editor/plugins/light_occluder_2d_editor_plugin.h index 95fa0df2c1..74ae9e0889 100644 --- a/editor/plugins/light_occluder_2d_editor_plugin.h +++ b/editor/plugins/light_occluder_2d_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/line_2d_editor_plugin.cpp b/editor/plugins/line_2d_editor_plugin.cpp index 368cf719c6..4ac9d0af3b 100644 --- a/editor/plugins/line_2d_editor_plugin.cpp +++ b/editor/plugins/line_2d_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/line_2d_editor_plugin.h b/editor/plugins/line_2d_editor_plugin.h index a7a9813cb5..ef54dbc3f7 100644 --- a/editor/plugins/line_2d_editor_plugin.h +++ b/editor/plugins/line_2d_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/material_editor_plugin.cpp b/editor/plugins/material_editor_plugin.cpp index e125c18ef1..750f814319 100644 --- a/editor/plugins/material_editor_plugin.cpp +++ b/editor/plugins/material_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..7f0a373dc7 100644 --- a/editor/plugins/material_editor_plugin.h +++ b/editor/plugins/material_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..d06e5b6349 100644 --- a/editor/plugins/mesh_editor_plugin.cpp +++ b/editor/plugins/mesh_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..87c4a1776b 100644 --- a/editor/plugins/mesh_editor_plugin.h +++ b/editor/plugins/mesh_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..25329906a9 100644 --- a/editor/plugins/mesh_instance_editor_plugin.cpp +++ b/editor/plugins/mesh_instance_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -456,7 +457,7 @@ MeshInstanceEditor::MeshInstanceEditor() { add_child(err_dialog); debug_uv_dialog = memnew(AcceptDialog); - debug_uv_dialog->set_title("UV Channel Debug"); + debug_uv_dialog->set_title(TTR("UV Channel Debug")); add_child(debug_uv_dialog); debug_uv = memnew(Control); debug_uv->set_custom_minimum_size(Size2(600, 600) * EDSCALE); diff --git a/editor/plugins/mesh_instance_editor_plugin.h b/editor/plugins/mesh_instance_editor_plugin.h index d82af621df..5c95676fc4 100644 --- a/editor/plugins/mesh_instance_editor_plugin.h +++ b/editor/plugins/mesh_instance_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/mesh_library_editor_plugin.cpp b/editor/plugins/mesh_library_editor_plugin.cpp index 7fbb35e565..92898ff9c3 100644 --- a/editor/plugins/mesh_library_editor_plugin.cpp +++ b/editor/plugins/mesh_library_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -241,7 +241,7 @@ void MeshLibraryEditor::_menu_cbk(int p_option) { } break; case MENU_OPTION_UPDATE_FROM_SCENE: { - cd->set_text("Update from existing scene?:\n" + String(mesh_library->get_meta("_editor_source_scene"))); + cd->set_text(vformat(TTR("Update from existing scene?:\n%s"), String(mesh_library->get_meta("_editor_source_scene")))); cd->popup_centered(Size2(500, 60)); } break; } @@ -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/mesh_library_editor_plugin.h b/editor/plugins/mesh_library_editor_plugin.h index 8121ff52bd..74b0a280e3 100644 --- a/editor/plugins/mesh_library_editor_plugin.h +++ b/editor/plugins/mesh_library_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/multimesh_editor_plugin.cpp b/editor/plugins/multimesh_editor_plugin.cpp index 3ea014a38d..5dc222f84c 100644 --- a/editor/plugins/multimesh_editor_plugin.cpp +++ b/editor/plugins/multimesh_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/multimesh_editor_plugin.h b/editor/plugins/multimesh_editor_plugin.h index 5323441bd8..2c7b98cfbc 100644 --- a/editor/plugins/multimesh_editor_plugin.h +++ b/editor/plugins/multimesh_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/navigation_polygon_editor_plugin.cpp b/editor/plugins/navigation_polygon_editor_plugin.cpp index 0d6b649526..c4e61f2488 100644 --- a/editor/plugins/navigation_polygon_editor_plugin.cpp +++ b/editor/plugins/navigation_polygon_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/navigation_polygon_editor_plugin.h b/editor/plugins/navigation_polygon_editor_plugin.h index 2a387a8b1e..1cab336381 100644 --- a/editor/plugins/navigation_polygon_editor_plugin.h +++ b/editor/plugins/navigation_polygon_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/particles_2d_editor_plugin.cpp b/editor/plugins/particles_2d_editor_plugin.cpp index 957ce42304..b036368bc8 100644 --- a/editor/plugins/particles_2d_editor_plugin.cpp +++ b/editor/plugins/particles_2d_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -424,9 +424,9 @@ Particles2DEditorPlugin::Particles2DEditorPlugin(EditorNode *p_node) { emission_mask->add_child(emvb); emission_mask_mode = memnew(OptionButton); emvb->add_margin_child(TTR("Emission Mask"), emission_mask_mode); - emission_mask_mode->add_item("Solid Pixels", EMISSION_MODE_SOLID); - emission_mask_mode->add_item("Border Pixels", EMISSION_MODE_BORDER); - emission_mask_mode->add_item("Directed Border Pixels", EMISSION_MODE_BORDER_DIRECTED); + emission_mask_mode->add_item(TTR("Solid Pixels"), EMISSION_MODE_SOLID); + emission_mask_mode->add_item(TTR("Border Pixels"), EMISSION_MODE_BORDER); + emission_mask_mode->add_item(TTR("Directed Border Pixels"), EMISSION_MODE_BORDER_DIRECTED); emission_colors = memnew(CheckBox); emission_colors->set_text(TTR("Capture from Pixel")); emvb->add_margin_child(TTR("Emission Colors"), emission_colors); diff --git a/editor/plugins/particles_2d_editor_plugin.h b/editor/plugins/particles_2d_editor_plugin.h index 0f092aaa4f..29652a1826 100644 --- a/editor/plugins/particles_2d_editor_plugin.h +++ b/editor/plugins/particles_2d_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/particles_editor_plugin.cpp b/editor/plugins/particles_editor_plugin.cpp index 31b0539bfe..f869dabf9a 100644 --- a/editor/plugins/particles_editor_plugin.cpp +++ b/editor/plugins/particles_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/particles_editor_plugin.h b/editor/plugins/particles_editor_plugin.h index 1b3a1877a4..4b20d00670 100644 --- a/editor/plugins/particles_editor_plugin.h +++ b/editor/plugins/particles_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/path_2d_editor_plugin.cpp b/editor/plugins/path_2d_editor_plugin.cpp index f02dc0bd6d..3737dbdd57 100644 --- a/editor/plugins/path_2d_editor_plugin.cpp +++ b/editor/plugins/path_2d_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/path_2d_editor_plugin.h b/editor/plugins/path_2d_editor_plugin.h index ecec5f5253..aae0e11c99 100644 --- a/editor/plugins/path_2d_editor_plugin.h +++ b/editor/plugins/path_2d_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/path_editor_plugin.cpp b/editor/plugins/path_editor_plugin.cpp index 2493380585..67889bc074 100644 --- a/editor/plugins/path_editor_plugin.cpp +++ b/editor/plugins/path_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/path_editor_plugin.h b/editor/plugins/path_editor_plugin.h index 5482d09377..8ff83911f8 100644 --- a/editor/plugins/path_editor_plugin.h +++ b/editor/plugins/path_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/physical_bone_plugin.cpp b/editor/plugins/physical_bone_plugin.cpp index 96681a105f..28099a927b 100644 --- a/editor/plugins/physical_bone_plugin.cpp +++ b/editor/plugins/physical_bone_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/physical_bone_plugin.h b/editor/plugins/physical_bone_plugin.h index 78c1c331a0..459a67db05 100644 --- a/editor/plugins/physical_bone_plugin.h +++ b/editor/plugins/physical_bone_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp index bd532a6418..de23193df0 100644 --- a/editor/plugins/polygon_2d_editor_plugin.cpp +++ b/editor/plugins/polygon_2d_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/polygon_2d_editor_plugin.h b/editor/plugins/polygon_2d_editor_plugin.h index 009501a70c..1454a03325 100644 --- a/editor/plugins/polygon_2d_editor_plugin.h +++ b/editor/plugins/polygon_2d_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp index 620bf28415..d423be7d24 100644 --- a/editor/plugins/resource_preloader_editor_plugin.cpp +++ b/editor/plugins/resource_preloader_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/resource_preloader_editor_plugin.h b/editor/plugins/resource_preloader_editor_plugin.h index 346249b1c5..88e9cf4956 100644 --- a/editor/plugins/resource_preloader_editor_plugin.h +++ b/editor/plugins/resource_preloader_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/root_motion_editor_plugin.cpp b/editor/plugins/root_motion_editor_plugin.cpp index 05f682f469..3489537fa4 100644 --- a/editor/plugins/root_motion_editor_plugin.cpp +++ b/editor/plugins/root_motion_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/root_motion_editor_plugin.h b/editor/plugins/root_motion_editor_plugin.h index af5d8fc122..8a7691de5d 100644 --- a/editor/plugins/root_motion_editor_plugin.h +++ b/editor/plugins/root_motion_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index f7e997a269..d0bd57d658 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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,12 +990,22 @@ 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"); - script_create_dialog->popup_centered(Size2(300, 300) * EDSCALE); + script_create_dialog->config("Node", "new_script", false); + script_create_dialog->popup_centered(); } break; case FILE_NEW_TEXTFILE: { file_dialog->set_mode(EditorFileDialog::MODE_SAVE_FILE); @@ -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; } @@ -1250,12 +1270,15 @@ void ScriptEditor::_menu_option(int p_option) { _copy_script_path(); } break; case SHOW_IN_FILE_SYSTEM: { - RES script = current->get_edited_resource(); - FileSystemDock *file_system_dock = EditorNode::get_singleton()->get_filesystem_dock(); - file_system_dock->navigate_to_path(script->get_path()); - // Ensure that the FileSystem dock is visible. - TabContainer *tab_container = (TabContainer *)file_system_dock->get_parent_control(); - tab_container->set_current_tab(file_system_dock->get_position_in_parent()); + const RES script = current->get_edited_resource(); + const String path = script->get_path(); + if (!path.empty()) { + FileSystemDock *file_system_dock = EditorNode::get_singleton()->get_filesystem_dock(); + file_system_dock->navigate_to_path(path); + // Ensure that the FileSystem dock is visible. + TabContainer *tab_container = (TabContainer *)file_system_dock->get_parent_control(); + tab_container->set_current_tab(file_system_dock->get_position_in_parent()); + } } break; case CLOSE_DOCS: { _close_docs_tab(); @@ -2497,7 +2520,10 @@ void ScriptEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data, Co ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(node); EditorHelp *eh = Object::cast_to<EditorHelp>(node); if (se || eh) { - int new_index = script_list->get_item_metadata(script_list->get_item_at_position(p_point)); + int new_index = 0; + if (script_list->get_item_count() > 0) { + new_index = script_list->get_item_metadata(script_list->get_item_at_position(p_point)); + } tab_container->move_child(node, new_index); tab_container->set_current_tab(new_index); _update_script_names(); @@ -2514,7 +2540,10 @@ void ScriptEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data, Co ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(node); EditorHelp *eh = Object::cast_to<EditorHelp>(node); if (se || eh) { - int new_index = script_list->get_item_metadata(script_list->get_item_at_position(p_point)); + int new_index = 0; + if (script_list->get_item_count() > 0) { + new_index = script_list->get_item_metadata(script_list->get_item_at_position(p_point)); + } tab_container->move_child(node, new_index); tab_container->set_current_tab(new_index); _update_script_names(); @@ -2525,7 +2554,10 @@ void ScriptEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data, Co Vector<String> files = d["files"]; - int new_index = script_list->get_item_metadata(script_list->get_item_at_position(p_point)); + int new_index = 0; + if (script_list->get_item_count() > 0) { + new_index = script_list->get_item_metadata(script_list->get_item_at_position(p_point)); + } int num_tabs_before = tab_container->get_child_count(); for (int i = 0; i < files.size(); i++) { String file = files[i]; @@ -2551,16 +2583,20 @@ void ScriptEditor::_unhandled_input(const Ref<InputEvent> &p_event) { if (!is_visible_in_tree() || !p_event->is_pressed() || p_event->is_echo()) return; if (ED_IS_SHORTCUT("script_editor/next_script", p_event)) { - int next_tab = script_list->get_current() + 1; - next_tab %= script_list->get_item_count(); - _go_to_tab(script_list->get_item_metadata(next_tab)); - _update_script_names(); + if (script_list->get_item_count() > 1) { + int next_tab = script_list->get_current() + 1; + next_tab %= script_list->get_item_count(); + _go_to_tab(script_list->get_item_metadata(next_tab)); + _update_script_names(); + } } if (ED_IS_SHORTCUT("script_editor/prev_script", p_event)) { - int next_tab = script_list->get_current() - 1; - next_tab = next_tab >= 0 ? next_tab : script_list->get_item_count() - 1; - _go_to_tab(script_list->get_item_metadata(next_tab)); - _update_script_names(); + if (script_list->get_item_count() > 1) { + int next_tab = script_list->get_current() - 1; + next_tab = next_tab >= 0 ? next_tab : script_list->get_item_count() - 1; + _go_to_tab(script_list->get_item_metadata(next_tab)); + _update_script_names(); + } } if (ED_IS_SHORTCUT("script_editor/window_move_up", p_event)) { _menu_option(WINDOW_MOVE_UP); @@ -3238,7 +3274,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { ED_SHORTCUT("script_editor/window_move_up", TTR("Move Up"), KEY_MASK_SHIFT | KEY_MASK_ALT | KEY_UP); ED_SHORTCUT("script_editor/window_move_down", TTR("Move Down"), KEY_MASK_SHIFT | KEY_MASK_ALT | KEY_DOWN); ED_SHORTCUT("script_editor/next_script", TTR("Next script"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_PERIOD); // these should be KEY_GREATER and KEY_LESS but those don't work - ED_SHORTCUT("script_editor/prev_script", TTR("Previous script"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_COLON); + ED_SHORTCUT("script_editor/prev_script", TTR("Previous script"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_COMMA); set_process_unhandled_input(true); file_menu = memnew(MenuButton); diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h index 294294fc56..a41480c80d 100644 --- a/editor/plugins/script_editor_plugin.h +++ b/editor/plugins/script_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..f0e4a4bfdc 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; } } @@ -1547,7 +1560,7 @@ void ScriptTextEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data Node *sn = _find_script_node(get_tree()->get_edited_scene_root(), get_tree()->get_edited_scene_root(), script); if (!sn) { - EditorNode::get_singleton()->show_warning("Can't drop nodes because script '" + get_name() + "' is not used in this scene."); + EditorNode::get_singleton()->show_warning(vformat(TTR("Can't drop nodes because script '%s' is not used in this scene."), get_name())); 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..9018e9d3c2 100644 --- a/editor/plugins/script_text_editor.h +++ b/editor/plugins/script_text_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp index 97f194e40f..7e55415134 100644 --- a/editor/plugins/shader_editor_plugin.cpp +++ b/editor/plugins/shader_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/shader_editor_plugin.h b/editor/plugins/shader_editor_plugin.h index ca9f489713..900b40bd7a 100644 --- a/editor/plugins/shader_editor_plugin.h +++ b/editor/plugins/shader_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/skeleton_2d_editor_plugin.cpp b/editor/plugins/skeleton_2d_editor_plugin.cpp index 0ccb60e39e..dbe64f202d 100644 --- a/editor/plugins/skeleton_2d_editor_plugin.cpp +++ b/editor/plugins/skeleton_2d_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/skeleton_2d_editor_plugin.h b/editor/plugins/skeleton_2d_editor_plugin.h index d8e2d23257..ebc6746b81 100644 --- a/editor/plugins/skeleton_2d_editor_plugin.h +++ b/editor/plugins/skeleton_2d_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/skeleton_editor_plugin.cpp b/editor/plugins/skeleton_editor_plugin.cpp index cd360d4caf..8b5fe7d2c5 100644 --- a/editor/plugins/skeleton_editor_plugin.cpp +++ b/editor/plugins/skeleton_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -65,7 +65,6 @@ void SkeletonEditor::create_physical_skeleton() { for (int bone_id = 0; bc > bone_id; ++bone_id) { const int parent = skeleton->get_bone_parent(bone_id); - const int parent_parent = skeleton->get_bone_parent(parent); if (parent < 0) { @@ -73,6 +72,8 @@ void SkeletonEditor::create_physical_skeleton() { } else { + const int parent_parent = skeleton->get_bone_parent(parent); + bones_infos.write[bone_id].relative_rest = bones_infos[parent].relative_rest * skeleton->get_bone_rest(bone_id); /// create physical bone on parent diff --git a/editor/plugins/skeleton_editor_plugin.h b/editor/plugins/skeleton_editor_plugin.h index 558e954815..1dce6d12ed 100644 --- a/editor/plugins/skeleton_editor_plugin.h +++ b/editor/plugins/skeleton_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/skeleton_ik_editor_plugin.cpp b/editor/plugins/skeleton_ik_editor_plugin.cpp index 928171950a..43dc13b270 100644 --- a/editor/plugins/skeleton_ik_editor_plugin.cpp +++ b/editor/plugins/skeleton_ik_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/skeleton_ik_editor_plugin.h b/editor/plugins/skeleton_ik_editor_plugin.h index d1ef7c99c5..06c07031f6 100644 --- a/editor/plugins/skeleton_ik_editor_plugin.h +++ b/editor/plugins/skeleton_ik_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index d187e4ff4a..252f067eb1 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; @@ -521,7 +524,7 @@ void SpatialEditorViewport::_select_region() { if (selected.find(item) != -1) continue; - if (_is_node_locked(Object::cast_to<Spatial>(item))) continue; + if (_is_node_locked(item)) continue; Ref<EditorSpatialGizmo> seg = sp->get_gizmo(); @@ -6142,6 +6145,8 @@ void EditorSpatialGizmoPlugin::create_icon_material(const String &p_name, const icon->set_albedo(color); icon->set_flag(SpatialMaterial::FLAG_UNSHADED, true); + icon->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true); + icon->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true); icon->set_cull_mode(SpatialMaterial::CULL_DISABLED); icon->set_depth_draw_mode(SpatialMaterial::DEPTH_DRAW_DISABLED); icon->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true); diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h index 65e3c32ca8..356646221e 100644 --- a/editor/plugins/spatial_editor_plugin.h +++ b/editor/plugins/spatial_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -41,6 +41,7 @@ class Camera; class SpatialEditor; class EditorSpatialGizmoPlugin; +class ViewportContainer; class EditorSpatialGizmo : public SpatialGizmo { @@ -101,11 +102,11 @@ protected: static void _bind_methods(); public: - void add_lines(const Vector<Vector3> &p_lines, const Ref<Material> &p_material, bool p_billboard = false); + void add_lines(const Vector<Vector3> &p_lines, const Ref<Material> &p_material, bool p_billboard = false, const Color &p_modulate = Color(1, 1, 1)); void add_mesh(const Ref<ArrayMesh> &p_mesh, bool p_billboard = false, const Ref<SkinReference> &p_skin_reference = Ref<SkinReference>(), const Ref<Material> &p_material = Ref<Material>()); void add_collision_segments(const Vector<Vector3> &p_lines); void add_collision_triangles(const Ref<TriangleMesh> &p_tmesh); - void add_unscaled_billboard(const Ref<Material> &p_material, float p_scale = 1); + void add_unscaled_billboard(const Ref<Material> &p_material, float p_scale = 1, const Color &p_modulate = Color(1, 1, 1)); void add_handles(const Vector<Vector3> &p_handles, const Ref<Material> &p_material, bool p_billboard = false, bool p_secondary = false); void add_solid_box(Ref<Material> &p_material, Vector3 p_size, Vector3 p_position = Vector3()); diff --git a/editor/plugins/sprite_editor_plugin.cpp b/editor/plugins/sprite_editor_plugin.cpp index 40734cffc4..f5ea88eeae 100644 --- a/editor/plugins/sprite_editor_plugin.cpp +++ b/editor/plugins/sprite_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -125,7 +126,7 @@ void SpriteEditor::_menu_option(int p_option) { case MENU_OPTION_CONVERT_TO_MESH_2D: { debug_uv_dialog->get_ok()->set_text(TTR("Create Mesh2D")); - debug_uv_dialog->set_title("Mesh2D Preview"); + debug_uv_dialog->set_title(TTR("Mesh2D Preview")); _update_mesh_data(); debug_uv_dialog->popup_centered(); @@ -135,7 +136,7 @@ void SpriteEditor::_menu_option(int p_option) { case MENU_OPTION_CONVERT_TO_POLYGON_2D: { debug_uv_dialog->get_ok()->set_text(TTR("Create Polygon2D")); - debug_uv_dialog->set_title("Polygon2D Preview"); + debug_uv_dialog->set_title(TTR("Polygon2D Preview")); _update_mesh_data(); debug_uv_dialog->popup_centered(); @@ -144,7 +145,7 @@ void SpriteEditor::_menu_option(int p_option) { case MENU_OPTION_CREATE_COLLISION_POLY_2D: { debug_uv_dialog->get_ok()->set_text(TTR("Create CollisionPolygon2D")); - debug_uv_dialog->set_title("CollisionPolygon2D Preview"); + debug_uv_dialog->set_title(TTR("CollisionPolygon2D Preview")); _update_mesh_data(); debug_uv_dialog->popup_centered(); @@ -154,7 +155,7 @@ void SpriteEditor::_menu_option(int p_option) { case MENU_OPTION_CREATE_LIGHT_OCCLUDER_2D: { debug_uv_dialog->get_ok()->set_text(TTR("Create LightOccluder2D")); - debug_uv_dialog->set_title("LightOccluder2D Preview"); + debug_uv_dialog->set_title(TTR("LightOccluder2D Preview")); _update_mesh_data(); debug_uv_dialog->popup_centered(); diff --git a/editor/plugins/sprite_editor_plugin.h b/editor/plugins/sprite_editor_plugin.h index 4ca7bca1a8..13177c9142 100644 --- a/editor/plugins/sprite_editor_plugin.h +++ b/editor/plugins/sprite_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp index 34780af59e..4101980e29 100644 --- a/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/editor/plugins/sprite_frames_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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) { } @@ -202,7 +204,7 @@ void SpriteFramesEditor::_prepare_sprite_sheet(const String &p_file) { Ref<Resource> texture = ResourceLoader::load(p_file); if (!texture.is_valid()) { - EditorNode::get_singleton()->show_warning("Unable to load images"); + EditorNode::get_singleton()->show_warning(TTR("Unable to load images")); ERR_FAIL_COND(!texture.is_valid()); } if (texture != split_sheet_preview->get_texture()) { @@ -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/sprite_frames_editor_plugin.h b/editor/plugins/sprite_frames_editor_plugin.h index f20b54f910..aa683605ed 100644 --- a/editor/plugins/sprite_frames_editor_plugin.h +++ b/editor/plugins/sprite_frames_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/style_box_editor_plugin.cpp b/editor/plugins/style_box_editor_plugin.cpp index c4a9803ff4..eebcd567a4 100644 --- a/editor/plugins/style_box_editor_plugin.cpp +++ b/editor/plugins/style_box_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; @@ -68,7 +70,14 @@ void StyleBoxPreview::_sb_changed() { void StyleBoxPreview::_redraw() { if (stylebox.is_valid()) { - preview->draw_style_box(stylebox, preview->get_rect()); + Rect2 preview_rect = preview->get_rect(); + + // Re-adjust preview panel to fit all drawn content + Rect2 draw_rect = stylebox->get_draw_rect(preview_rect); + preview_rect.size -= draw_rect.size - preview_rect.size; + preview_rect.position -= draw_rect.position - preview_rect.position; + + preview->draw_style_box(stylebox, preview_rect); } } @@ -81,6 +90,7 @@ void StyleBoxPreview::_bind_methods() { StyleBoxPreview::StyleBoxPreview() { preview = memnew(Control); preview->set_custom_minimum_size(Size2(0, 150 * EDSCALE)); + preview->set_clip_contents(true); preview->connect("draw", this, "_redraw"); add_margin_child(TTR("Preview:"), preview); } diff --git a/editor/plugins/style_box_editor_plugin.h b/editor/plugins/style_box_editor_plugin.h index fead8e0de8..f4a72d9d1c 100644 --- a/editor/plugins/style_box_editor_plugin.h +++ b/editor/plugins/style_box_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/text_editor.cpp b/editor/plugins/text_editor.cpp index 0cef5a8b6f..57447abf47 100644 --- a/editor/plugins/text_editor.cpp +++ b/editor/plugins/text_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -713,7 +713,7 @@ TextEditor::TextEditor() { goto_menu->get_popup()->add_separator(); bookmarks_menu = memnew(PopupMenu); - bookmarks_menu->set_name(TTR("Bookmarks")); + bookmarks_menu->set_name("Bookmarks"); goto_menu->get_popup()->add_child(bookmarks_menu); goto_menu->get_popup()->add_submenu_item(TTR("Bookmarks"), "Bookmarks"); _update_bookmark_list(); diff --git a/editor/plugins/text_editor.h b/editor/plugins/text_editor.h index 7d441a187d..fe157a29e6 100644 --- a/editor/plugins/text_editor.h +++ b/editor/plugins/text_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/texture_editor_plugin.cpp b/editor/plugins/texture_editor_plugin.cpp index 6d71c56ead..9489836984 100644 --- a/editor/plugins/texture_editor_plugin.cpp +++ b/editor/plugins/texture_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/texture_editor_plugin.h b/editor/plugins/texture_editor_plugin.h index ed25783303..f587579902 100644 --- a/editor/plugins/texture_editor_plugin.h +++ b/editor/plugins/texture_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp index a2f4040152..294bedd598 100644 --- a/editor/plugins/texture_region_editor_plugin.cpp +++ b/editor/plugins/texture_region_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" /** @@ -135,13 +136,19 @@ void TextureRegionEditor::_region_draw() { Ref<Texture> select_handle = get_icon("EditorHandle", "EditorIcons"); - Rect2 scroll_rect; + Rect2 scroll_rect(Point2(), base_tex->get_size()); - Vector2 endpoints[4] = { - mtx.basis_xform(rect.position), - mtx.basis_xform(rect.position + Vector2(rect.size.x, 0)), - mtx.basis_xform(rect.position + rect.size), - mtx.basis_xform(rect.position + Vector2(0, rect.size.y)) + const Vector2 raw_endpoints[4] = { + rect.position, + rect.position + Vector2(rect.size.x, 0), + rect.position + rect.size, + rect.position + Vector2(0, rect.size.y) + }; + const Vector2 endpoints[4] = { + mtx.basis_xform(raw_endpoints[0]), + mtx.basis_xform(raw_endpoints[1]), + mtx.basis_xform(raw_endpoints[2]), + mtx.basis_xform(raw_endpoints[3]) }; Color color = get_color("mono_color", "Editor"); for (int i = 0; i < 4; i++) { @@ -150,7 +157,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); @@ -163,31 +170,32 @@ void TextureRegionEditor::_region_draw() { if (snap_mode != SNAP_AUTOSLICE) edit_draw->draw_texture(select_handle, (endpoints[i] + ofs - (select_handle->get_size() / 2)).floor() - draw_ofs * draw_zoom); - scroll_rect.expand_to(endpoints[i]); + scroll_rect.expand_to(raw_endpoints[i]); } - scroll_rect.position -= edit_draw->get_size(); - scroll_rect.size += edit_draw->get_size() * 2.0; + const Size2 scroll_margin = edit_draw->get_size() / draw_zoom; + scroll_rect.position -= scroll_margin; + scroll_rect.size += scroll_margin * 2; updating_scroll = true; hscroll->set_min(scroll_rect.position.x); hscroll->set_max(scroll_rect.position.x + scroll_rect.size.x); - if (ABS(scroll_rect.position.x - (scroll_rect.position.x + scroll_rect.size.x)) <= edit_draw->get_size().x) { + if (ABS(scroll_rect.position.x - (scroll_rect.position.x + scroll_rect.size.x)) <= scroll_margin.x) { hscroll->hide(); } else { hscroll->show(); - hscroll->set_page(edit_draw->get_size().x); + hscroll->set_page(scroll_margin.x); hscroll->set_value(draw_ofs.x); } vscroll->set_min(scroll_rect.position.y); vscroll->set_max(scroll_rect.position.y + scroll_rect.size.y); - if (ABS(scroll_rect.position.y - (scroll_rect.position.y + scroll_rect.size.y)) <= edit_draw->get_size().y) { + if (ABS(scroll_rect.position.y - (scroll_rect.position.y + scroll_rect.size.y)) <= scroll_margin.y) { vscroll->hide(); draw_ofs.y = scroll_rect.position.y; } else { vscroll->show(); - vscroll->set_page(edit_draw->get_size().y); + vscroll->set_page(scroll_margin.y); vscroll->set_value(draw_ofs.y); } updating_scroll = false; diff --git a/editor/plugins/texture_region_editor_plugin.h b/editor/plugins/texture_region_editor_plugin.h index 4eb84ae176..d877cf9436 100644 --- a/editor/plugins/texture_region_editor_plugin.h +++ b/editor/plugins/texture_region_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp index d501a04016..22105f7ed4 100644 --- a/editor/plugins/theme_editor_plugin.cpp +++ b/editor/plugins/theme_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/theme_editor_plugin.h b/editor/plugins/theme_editor_plugin.h index 6ffee46569..c51583593d 100644 --- a/editor/plugins/theme_editor_plugin.h +++ b/editor/plugins/theme_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index 385ba4cfda..a107cb020d 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -52,12 +52,6 @@ void TileMapEditor::_notification(int p_what) { case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - bool new_show_tile_info = EditorSettings::get_singleton()->get("editors/tile_map/show_tile_info_on_hover"); - if (new_show_tile_info != show_tile_info) { - show_tile_info = new_show_tile_info; - tile_info->set_visible(show_tile_info); - } - if (is_visible_in_tree()) { _update_palette(); } @@ -1250,14 +1244,13 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) { CanvasItemEditor::get_singleton()->update_viewport(); } - if (show_tile_info) { - int tile_under = node->get_cell(over_tile.x, over_tile.y); - String tile_name = "none"; + int tile_under = node->get_cell(over_tile.x, over_tile.y); + String tile_name = "none"; - if (node->get_tileset()->has_tile(tile_under)) - tile_name = node->get_tileset()->tile_get_name(tile_under); - tile_info->set_text(String::num(over_tile.x) + ", " + String::num(over_tile.y) + " [" + tile_name + "]"); - } + if (node->get_tileset()->has_tile(tile_under)) + tile_name = node->get_tileset()->tile_get_name(tile_under); + tile_info->show(); + tile_info->set_text(String::num(over_tile.x) + ", " + String::num(over_tile.y) + " [" + tile_name + "]"); if (tool == TOOL_PAINTING) { @@ -1925,7 +1918,6 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { tool = TOOL_NONE; selection_active = false; mouse_over = false; - show_tile_info = true; flip_h = false; flip_v = false; @@ -2055,7 +2047,12 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { // Tile position. tile_info = memnew(Label); - toolbar_right->add_child(tile_info); + tile_info->set_modulate(Color(1, 1, 1, 0.8)); + tile_info->set_mouse_filter(MOUSE_FILTER_IGNORE); + tile_info->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("main", "EditorFonts")); + // The tile info is only displayed after a tile has been hovered. + tile_info->hide(); + CanvasItemEditor::get_singleton()->add_control_to_info_overlay(tile_info); // Menu. options = memnew(MenuButton); @@ -2151,6 +2148,10 @@ void TileMapEditorPlugin::make_visible(bool p_visible) { tile_map_editor->show(); tile_map_editor->get_toolbar()->show(); tile_map_editor->get_toolbar_right()->show(); + // `tile_info` isn't shown here, as it's displayed after a tile has been hovered. + // Otherwise, a translucent black rectangle would be visible as there would be an + // empty Label in the CanvasItemEditor's info overlay. + // Change to TOOL_SELECT when TileMap node is selected, to prevent accidental movement. CanvasItemEditor::get_singleton()->set_current_tool(CanvasItemEditor::TOOL_SELECT); } else { @@ -2158,6 +2159,7 @@ void TileMapEditorPlugin::make_visible(bool p_visible) { tile_map_editor->hide(); tile_map_editor->get_toolbar()->hide(); tile_map_editor->get_toolbar_right()->hide(); + tile_map_editor->get_tile_info()->hide(); tile_map_editor->edit(NULL); } } @@ -2170,7 +2172,6 @@ TileMapEditorPlugin::TileMapEditorPlugin(EditorNode *p_node) { EDITOR_DEF("editors/tile_map/show_tile_ids", false); EDITOR_DEF("editors/tile_map/sort_tiles_by_name", true); EDITOR_DEF("editors/tile_map/bucket_fill_preview", true); - EDITOR_DEF("editors/tile_map/show_tile_info_on_hover", true); EDITOR_DEF("editors/tile_map/editor_side", 1); EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "editors/tile_map/editor_side", PROPERTY_HINT_ENUM, "Left,Right")); diff --git a/editor/plugins/tile_map_editor_plugin.h b/editor/plugins/tile_map_editor_plugin.h index e3d678c2fd..927f0887bb 100644 --- a/editor/plugins/tile_map_editor_plugin.h +++ b/editor/plugins/tile_map_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -109,7 +109,6 @@ class TileMapEditor : public VBoxContainer { bool selection_active; bool mouse_over; - bool show_tile_info; bool flip_h; bool flip_v; @@ -218,6 +217,7 @@ protected: public: HBoxContainer *get_toolbar() const { return toolbar; } HBoxContainer *get_toolbar_right() const { return toolbar_right; } + Label *get_tile_info() const { return tile_info; } bool forward_gui_input(const Ref<InputEvent> &p_event); void forward_canvas_draw_over_viewport(Control *p_overlay); diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp index a8cf5b46e1..b64ff6119c 100644 --- a/editor/plugins/tile_set_editor_plugin.cpp +++ b/editor/plugins/tile_set_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; @@ -1994,10 +2037,10 @@ void TileSetEditor::_update_toggle_shape_button() { tools[SHAPE_TOGGLE_TYPE]->hide(); } else if (concave.is_valid()) { tools[SHAPE_TOGGLE_TYPE]->set_icon(get_icon("ConvexPolygonShape2D", "EditorIcons")); - tools[SHAPE_TOGGLE_TYPE]->set_text("Make Convex"); + tools[SHAPE_TOGGLE_TYPE]->set_text(TTR("Make Convex")); } else if (convex.is_valid()) { tools[SHAPE_TOGGLE_TYPE]->set_icon(get_icon("ConcavePolygonShape2D", "EditorIcons")); - tools[SHAPE_TOGGLE_TYPE]->set_text("Make Concave"); + tools[SHAPE_TOGGLE_TYPE]->set_text(TTR("Make Concave")); } else { // Shouldn't happen separator_shape_toggle->hide(); @@ -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..0e0bd6448c 100644 --- a/editor/plugins/tile_set_editor_plugin.h +++ b/editor/plugins/tile_set_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..c53fc7e6c5 100644 --- a/editor/plugins/version_control_editor_plugin.cpp +++ b/editor/plugins/version_control_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/version_control_editor_plugin.h b/editor/plugins/version_control_editor_plugin.h index f9f8437e15..4a98c8580e 100644 --- a/editor/plugins/version_control_editor_plugin.h +++ b/editor/plugins/version_control_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 1a74779fb5..972e4f2172 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h index 5197f8c77f..8c5dd8e82f 100644 --- a/editor/plugins/visual_shader_editor_plugin.h +++ b/editor/plugins/visual_shader_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/progress_dialog.cpp b/editor/progress_dialog.cpp index 04b863f3aa..0665b1d013 100644 --- a/editor/progress_dialog.cpp +++ b/editor/progress_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/progress_dialog.h b/editor/progress_dialog.h index d8dfb73357..e01c7d802b 100644 --- a/editor/progress_dialog.h +++ b/editor/progress_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/project_export.cpp b/editor/project_export.cpp index 617ad62d4a..73564191e1 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_export.h b/editor/project_export.h index 476a30c9c0..00e6dfd6e3 100644 --- a/editor/project_export.h +++ b/editor/project_export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index ab62a59be1..0a904a42df 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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); } @@ -1410,9 +1409,7 @@ void ProjectList::sort_projects() { for (int i = 0; i < _projects.size(); ++i) { Item &item = _projects.write[i]; - if (item.control->is_visible()) { - item.control->get_parent()->move_child(item.control, i); - } + item.control->get_parent()->move_child(item.control, i); } // Rewind the coroutine because order of projects changed @@ -2439,7 +2436,7 @@ ProjectManager::ProjectManager() { String cp; cp += 0xA9; - OS::get_singleton()->set_window_title(VERSION_NAME + String(" - ") + TTR("Project Manager") + " - " + cp + " 2007-2019 Juan Linietsky, Ariel Manzur & Godot Contributors"); + OS::get_singleton()->set_window_title(VERSION_NAME + String(" - ") + TTR("Project Manager") + " - " + cp + " 2007-2020 Juan Linietsky, Ariel Manzur & Godot Contributors"); Control *center_box = memnew(Control); center_box->set_v_size_flags(SIZE_EXPAND_FILL); @@ -2466,9 +2463,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 +2693,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_manager.h b/editor/project_manager.h index cf0b8b8801..b8f7403e27 100644 --- a/editor/project_manager.h +++ b/editor/project_manager.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp index 0428aafe7e..b656fd647f 100644 --- a/editor/project_settings_editor.cpp +++ b/editor/project_settings_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/project_settings_editor.h b/editor/project_settings_editor.h index c164b49d0e..5755b258c3 100644 --- a/editor/project_settings_editor.h +++ b/editor/project_settings_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp index ce82d44164..2dcbc4c14c 100644 --- a/editor/property_editor.cpp +++ b/editor/property_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/property_editor.h b/editor/property_editor.h index b1c61c5e25..bc2a222714 100644 --- a/editor/property_editor.h +++ b/editor/property_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/property_selector.cpp b/editor/property_selector.cpp index 3bc93c3900..426ec51e4c 100644 --- a/editor/property_selector.cpp +++ b/editor/property_selector.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/property_selector.h b/editor/property_selector.h index a6c1ec6498..8a190189ff 100644 --- a/editor/property_selector.h +++ b/editor/property_selector.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/pvrtc_compress.cpp b/editor/pvrtc_compress.cpp index 7cdd900d25..43963d3aae 100644 --- a/editor/pvrtc_compress.cpp +++ b/editor/pvrtc_compress.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/pvrtc_compress.h b/editor/pvrtc_compress.h index fef6430578..77bc11b224 100644 --- a/editor/pvrtc_compress.h +++ b/editor/pvrtc_compress.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp index 4e1c900ee4..4cd70b0f8e 100644 --- a/editor/quick_open.cpp +++ b/editor/quick_open.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/quick_open.h b/editor/quick_open.h index b6a2e50e88..a4eb44c805 100644 --- a/editor/quick_open.h +++ b/editor/quick_open.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/register_exporters.h b/editor/register_exporters.h index b3a2a05f33..27071f4a51 100644 --- a/editor/register_exporters.h +++ b/editor/register_exporters.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/rename_dialog.cpp b/editor/rename_dialog.cpp index cc9e14975f..ce37b9e7f6 100644 --- a/editor/rename_dialog.cpp +++ b/editor/rename_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/rename_dialog.h b/editor/rename_dialog.h index 9f0fbf66a1..692e56f1a4 100644 --- a/editor/rename_dialog.h +++ b/editor/rename_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/reparent_dialog.cpp b/editor/reparent_dialog.cpp index b4c80d4cfb..dd35f41b7a 100644 --- a/editor/reparent_dialog.cpp +++ b/editor/reparent_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/reparent_dialog.h b/editor/reparent_dialog.h index 3df2a5bda7..29db70baa5 100644 --- a/editor/reparent_dialog.h +++ b/editor/reparent_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/run_settings_dialog.cpp b/editor/run_settings_dialog.cpp index e957afc1b7..3a8d17b54e 100644 --- a/editor/run_settings_dialog.cpp +++ b/editor/run_settings_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/run_settings_dialog.h b/editor/run_settings_dialog.h index d819705290..b812bbfa9e 100644 --- a/editor/run_settings_dialog.h +++ b/editor/run_settings_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 5c08482aa4..dca6087f8b 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -1737,7 +1739,6 @@ void SceneTreeDock::_script_created(Ref<Script> p_script) { void SceneTreeDock::_script_creation_closed() { script_create_dialog->disconnect("script_created", this, "_script_created"); - script_create_dialog->disconnect("popup_hide", this, "_script_creation_closed"); } void SceneTreeDock::_toggle_editable_children_from_selection() { @@ -2616,7 +2617,7 @@ void SceneTreeDock::attach_script_to_selected(bool p_extend) { } script_create_dialog->connect("script_created", this, "_script_created"); - script_create_dialog->connect("popup_hide", this, "_script_creation_closed"); + script_create_dialog->connect("popup_hide", this, "_script_creation_closed", varray(), CONNECT_ONESHOT); script_create_dialog->set_inheritance_base_type("Node"); script_create_dialog->config(inherits, path); script_create_dialog->popup_centered(); diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h index 56fbb86824..c6ddbc3dfe 100644 --- a/editor/scene_tree_dock.h +++ b/editor/scene_tree_dock.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index dc5eb4bbd0..c49ea72e99 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/scene_tree_editor.h b/editor/scene_tree_editor.h index b216be3b59..17ee5ace66 100644 --- a/editor/scene_tree_editor.h +++ b/editor/scene_tree_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp index 08bf52ab57..25bc13033c 100644 --- a/editor/script_create_dialog.cpp +++ b/editor/script_create_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -46,7 +46,7 @@ void ScriptCreateDialog::_notification(int p_what) { case NOTIFICATION_THEME_CHANGED: case NOTIFICATION_ENTER_TREE: { for (int i = 0; i < ScriptServer::get_language_count(); i++) { - String lang = ScriptServer::get_language(i)->get_name(); + String lang = ScriptServer::get_language(i)->get_type(); Ref<Texture> lang_icon = get_icon(lang, "EditorIcons"); if (lang_icon.is_valid()) { language_menu->set_item_icon(i, lang_icon); @@ -109,6 +109,7 @@ void ScriptCreateDialog::config(const String &p_base_name, const String &p_base_ if (p_base_path != "") { initial_bp = p_base_path.get_basename(); file_path->set_text(initial_bp + "." + ScriptServer::get_language(language_menu->get_selected())->get_extension()); + current_language = language_menu->get_selected(); } else { initial_bp = ""; file_path->set_text(""); @@ -677,6 +678,11 @@ void ScriptCreateDialog::_update_dialog() { } } + if (!_can_be_built_in()) { + internal->set_pressed(false); + } + internal->set_disabled(!_can_be_built_in()); + /* Is Script created or loaded from existing file */ if (is_built_in) { @@ -684,8 +690,6 @@ void ScriptCreateDialog::_update_dialog() { parent_name->set_editable(true); parent_search_button->set_disabled(false); parent_browse_button->set_disabled(!can_inherit_from_file); - internal->set_visible(_can_be_built_in()); - internal_label->set_visible(_can_be_built_in()); _msg_path_valid(true, TTR("Built-in script (into scene file).")); } else if (is_new_script_created) { // New Script Created @@ -693,8 +697,6 @@ void ScriptCreateDialog::_update_dialog() { parent_name->set_editable(true); parent_search_button->set_disabled(false); parent_browse_button->set_disabled(!can_inherit_from_file); - internal->set_visible(_can_be_built_in()); - internal_label->set_visible(_can_be_built_in()); if (is_path_valid) { _msg_path_valid(true, TTR("Will create a new script file.")); } @@ -704,7 +706,6 @@ void ScriptCreateDialog::_update_dialog() { parent_name->set_editable(false); parent_search_button->set_disabled(true); parent_browse_button->set_disabled(true); - internal->set_disabled(!_can_be_built_in()); if (is_path_valid) { _msg_path_valid(true, TTR("Will load an existing script file.")); } @@ -833,8 +834,7 @@ ScriptCreateDialog::ScriptCreateDialog() { internal = memnew(CheckBox); internal->set_text(TTR("On")); internal->connect("pressed", this, "_built_in_pressed"); - internal_label = memnew(Label(TTR("Built-in Script:"))); - gc->add_child(internal_label); + gc->add_child(memnew(Label(TTR("Built-in Script:")))); gc->add_child(internal); /* Path */ diff --git a/editor/script_create_dialog.h b/editor/script_create_dialog.h index 31cf2478cf..91d6315a78 100644 --- a/editor/script_create_dialog.h +++ b/editor/script_create_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -58,7 +58,6 @@ class ScriptCreateDialog : public ConfirmationDialog { Button *path_button; EditorFileDialog *file_browse; CheckBox *internal; - Label *internal_label; VBoxContainer *path_vb; AcceptDialog *alert; CreateDialog *select_class; diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp index 8e7aac896a..71a946b256 100644 --- a/editor/script_editor_debugger.cpp +++ b/editor/script_editor_debugger.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/script_editor_debugger.h b/editor/script_editor_debugger.h index c885614dab..7d91e247b6 100644 --- a/editor/script_editor_debugger.h +++ b/editor/script_editor_debugger.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index a38c6b98cc..44962323e5 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/settings_config_dialog.h b/editor/settings_config_dialog.h index 0937766bae..03dd18d23f 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp index cfd9ec19d2..89713c2579 100644 --- a/editor/spatial_editor_gizmos.cpp +++ b/editor/spatial_editor_gizmos.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -201,7 +201,10 @@ void EditorSpatialGizmo::add_mesh(const Ref<ArrayMesh> &p_mesh, bool p_billboard instances.push_back(ins); } -void EditorSpatialGizmo::add_lines(const Vector<Vector3> &p_lines, const Ref<Material> &p_material, bool p_billboard) { +void EditorSpatialGizmo::add_lines(const Vector<Vector3> &p_lines, const Ref<Material> &p_material, bool p_billboard, const Color &p_modulate) { + if (p_lines.empty()) { + return; + } ERR_FAIL_COND(!spatial_node); Instance ins; @@ -218,9 +221,9 @@ void EditorSpatialGizmo::add_lines(const Vector<Vector3> &p_lines, const Ref<Mat PoolVector<Color>::Write w = color.write(); for (int i = 0; i < p_lines.size(); i++) { if (is_selected()) - w[i] = Color(1, 1, 1, 0.8); + w[i] = Color(1, 1, 1, 0.8) * p_modulate; else - w[i] = Color(1, 1, 1, 0.2); + w[i] = Color(1, 1, 1, 0.2) * p_modulate; } } @@ -250,13 +253,14 @@ void EditorSpatialGizmo::add_lines(const Vector<Vector3> &p_lines, const Ref<Mat instances.push_back(ins); } -void EditorSpatialGizmo::add_unscaled_billboard(const Ref<Material> &p_material, float p_scale) { +void EditorSpatialGizmo::add_unscaled_billboard(const Ref<Material> &p_material, float p_scale, const Color &p_modulate) { ERR_FAIL_COND(!spatial_node); Instance ins; Vector<Vector3> vs; Vector<Vector2> uv; + Vector<Color> colors; vs.push_back(Vector3(-p_scale, p_scale, 0)); vs.push_back(Vector3(p_scale, p_scale, 0)); @@ -268,11 +272,17 @@ void EditorSpatialGizmo::add_unscaled_billboard(const Ref<Material> &p_material, uv.push_back(Vector2(1, 1)); uv.push_back(Vector2(0, 1)); + colors.push_back(p_modulate); + colors.push_back(p_modulate); + colors.push_back(p_modulate); + colors.push_back(p_modulate); + Ref<ArrayMesh> mesh = memnew(ArrayMesh); Array a; a.resize(Mesh::ARRAY_MAX); a[Mesh::ARRAY_VERTEX] = vs; a[Mesh::ARRAY_TEX_UV] = uv; + a[Mesh::ARRAY_COLOR] = colors; mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLE_FAN, a); mesh->surface_set_material(0, p_material); @@ -726,11 +736,11 @@ void EditorSpatialGizmo::set_plugin(EditorSpatialGizmoPlugin *p_plugin) { void EditorSpatialGizmo::_bind_methods() { - ClassDB::bind_method(D_METHOD("add_lines", "lines", "material", "billboard"), &EditorSpatialGizmo::add_lines, DEFVAL(false)); + ClassDB::bind_method(D_METHOD("add_lines", "lines", "material", "billboard", "modulate"), &EditorSpatialGizmo::add_lines, DEFVAL(false), DEFVAL(Color(1, 1, 1))); ClassDB::bind_method(D_METHOD("add_mesh", "mesh", "billboard", "skeleton", "material"), &EditorSpatialGizmo::add_mesh, DEFVAL(false), DEFVAL(Ref<SkinReference>()), DEFVAL(Variant())); ClassDB::bind_method(D_METHOD("add_collision_segments", "segments"), &EditorSpatialGizmo::add_collision_segments); ClassDB::bind_method(D_METHOD("add_collision_triangles", "triangles"), &EditorSpatialGizmo::add_collision_triangles); - ClassDB::bind_method(D_METHOD("add_unscaled_billboard", "material", "default_scale"), &EditorSpatialGizmo::add_unscaled_billboard, DEFVAL(1)); + ClassDB::bind_method(D_METHOD("add_unscaled_billboard", "material", "default_scale", "modulate"), &EditorSpatialGizmo::add_unscaled_billboard, DEFVAL(1), DEFVAL(Color(1, 1, 1))); ClassDB::bind_method(D_METHOD("add_handles", "handles", "material", "billboard", "secondary"), &EditorSpatialGizmo::add_handles, DEFVAL(false), DEFVAL(false)); ClassDB::bind_method(D_METHOD("set_spatial_node", "node"), &EditorSpatialGizmo::_set_spatial_node); ClassDB::bind_method(D_METHOD("get_spatial_node"), &EditorSpatialGizmo::get_spatial_node); @@ -781,11 +791,10 @@ Vector3 EditorSpatialGizmo::get_handle_pos(int p_idx) const { LightSpatialGizmoPlugin::LightSpatialGizmoPlugin() { - Color gizmo_color = EDITOR_DEF("editors/3d_gizmos/gizmo_colors/light", Color(1, 1, 0.7)); - - create_material("lines_primary", gizmo_color); - create_material("lines_secondary", gizmo_color * Color(1, 1, 1, 0.35)); - create_material("lines_billboard", gizmo_color, true); + // Enable vertex colors for the materials below as the gizmo color depends on the light color. + create_material("lines_primary", Color(1, 1, 1), false, false, true); + create_material("lines_secondary", Color(1, 1, 1, 0.35), false, false, true); + create_material("lines_billboard", Color(1, 1, 1), true, false, true); create_icon_material("light_directional_icon", SpatialEditor::get_singleton()->get_icon("GizmoDirectionalLight", "EditorIcons")); create_icon_material("light_omni_icon", SpatialEditor::get_singleton()->get_icon("GizmoLight", "EditorIcons")); @@ -931,6 +940,10 @@ void LightSpatialGizmoPlugin::redraw(EditorSpatialGizmo *p_gizmo) { Light *light = Object::cast_to<Light>(p_gizmo->get_spatial_node()); + Color color = light->get_color(); + // Make the gizmo color as bright as possible for better visibility + color.set_hsv(color.get_h(), color.get_s(), 1); + p_gizmo->clear(); if (Object::cast_to<DirectionalLight>(light)) { @@ -967,8 +980,8 @@ void LightSpatialGizmoPlugin::redraw(EditorSpatialGizmo *p_gizmo) { } } - p_gizmo->add_lines(lines, material); - p_gizmo->add_unscaled_billboard(icon, 0.05); + p_gizmo->add_lines(lines, material, false, color); + p_gizmo->add_unscaled_billboard(icon, 0.05, color); } if (Object::cast_to<OmniLight>(light)) { @@ -1004,9 +1017,9 @@ void LightSpatialGizmoPlugin::redraw(EditorSpatialGizmo *p_gizmo) { points_billboard.push_back(Vector3(b.x, b.y, 0)); } - p_gizmo->add_lines(points, lines_material, true); - p_gizmo->add_lines(points_billboard, lines_billboard_material, true); - p_gizmo->add_unscaled_billboard(icon, 0.05); + p_gizmo->add_lines(points, lines_material, true, color); + p_gizmo->add_lines(points_billboard, lines_billboard_material, true, color); + p_gizmo->add_unscaled_billboard(icon, 0.05, color); Vector<Vector3> handles; handles.push_back(Vector3(r, 0, 0)); @@ -1048,8 +1061,8 @@ void LightSpatialGizmoPlugin::redraw(EditorSpatialGizmo *p_gizmo) { points_primary.push_back(Vector3(0, 0, -r)); points_primary.push_back(Vector3()); - p_gizmo->add_lines(points_primary, material_primary); - p_gizmo->add_lines(points_secondary, material_secondary); + p_gizmo->add_lines(points_primary, material_primary, false, color); + p_gizmo->add_lines(points_secondary, material_secondary, false, color); const float ra = 16 * Math_PI * 2.0 / 64.0; const Point2 a = Vector2(Math::sin(ra), Math::cos(ra)) * w; @@ -1059,7 +1072,7 @@ void LightSpatialGizmoPlugin::redraw(EditorSpatialGizmo *p_gizmo) { handles.push_back(Vector3(a.x, a.y, -d)); p_gizmo->add_handles(handles, get_material("handles")); - p_gizmo->add_unscaled_billboard(icon, 0.05); + p_gizmo->add_unscaled_billboard(icon, 0.05, color); } } @@ -1272,7 +1285,7 @@ void CameraSpatialGizmoPlugin::set_handle(EditorSpatialGizmo *p_gizmo, int p_idx if (camera->get_projection() == Camera::PROJECTION_PERSPECTIVE) { Transform gt2 = camera->get_global_transform(); float a = _find_closest_angle_to_half_pi_arc(s[0], s[1], 1.0, gt2); - camera->set("fov", a * 2.0); + camera->set("fov", CLAMP(a * 2.0, 1, 179)); } else { Vector3 ra, rb; @@ -1282,8 +1295,7 @@ void CameraSpatialGizmoPlugin::set_handle(EditorSpatialGizmo *p_gizmo, int p_idx d = Math::stepify(d, SpatialEditor::get_singleton()->get_translate_snap()); } - if (d < 0) - d = 0; + d = CLAMP(d, 0.1, 16384); camera->set("size", d); } @@ -4190,8 +4202,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/spatial_editor_gizmos.h b/editor/spatial_editor_gizmos.h index 317ea0c570..1d6801a136 100644 --- a/editor/spatial_editor_gizmos.h +++ b/editor/spatial_editor_gizmos.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/editor/translations/af.po b/editor/translations/af.po index 131ecd5c0d..3ca45d41a0 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -1,6 +1,6 @@ # Afrikaans translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Ray West <the.raxar@gmail.com>, 2017. # Julius Stopforth <jjstopforth@gmail.com>, 2018. @@ -26,6 +26,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Ongeldige tiepe argument om te omskep(), gebruik TYPE_* konstante" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -435,6 +439,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Anim Voeg Baan By" @@ -544,8 +552,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 +748,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 +835,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 +1027,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 +1518,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 +1778,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 "" @@ -2047,6 +2070,15 @@ msgid "Search Help" msgstr "Deursoek Hulp" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Letterkas Sensitief" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Soek" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "Vervang Alles" @@ -2090,6 +2122,30 @@ msgstr "Lede" msgid "Class" msgstr "Klas:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metodes" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Seine" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Konstant" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Eienskappe" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Eienskappe" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2707,7 +2763,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 "" @@ -2919,7 +2976,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -3023,6 +3080,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 +3140,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." @@ -3391,6 +3456,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3518,6 +3591,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 "" @@ -3602,6 +3679,11 @@ msgstr "Geërf deur:" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Stoor As" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Open Lêer(s)" @@ -4360,6 +4442,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Anim Voeg Baan By" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Maak Funksie" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4602,6 +4698,11 @@ msgstr "Skuif Byvoeg Sleutel" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Oorgang" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Oorgang" @@ -4688,6 +4789,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 @@ -4945,6 +5051,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 "" @@ -5051,6 +5183,14 @@ 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 "" @@ -5059,6 +5199,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "Skaal Verhouding:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -5132,6 +5277,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 "" @@ -5145,6 +5361,20 @@ 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 "" @@ -5286,6 +5516,10 @@ 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 "" @@ -5427,7 +5661,7 @@ msgstr "Anim Voeg Sleutel by" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5777,11 +6011,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6425,6 +6673,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 "" @@ -6557,10 +6822,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 "" @@ -6655,11 +6916,6 @@ msgid "Source" msgstr "Hulpbron" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Seine" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6688,6 +6944,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7339,20 +7600,39 @@ msgstr "Skep Nuwe" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Voorskou:" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Skep Intekening" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Skep Intekening" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Skep Intekening" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Skep Vouer" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Skep Vouer" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7433,6 +7713,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7716,6 +8000,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7732,8 +8017,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Konstant" +#, fuzzy +msgid "Theme File" +msgstr "Open 'n Lêer" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7849,6 +8135,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 "" @@ -7865,6 +8163,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 "" @@ -8093,6 +8422,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Skep Intekening" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Skep Intekening" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Skep Intekening" @@ -8375,7 +8714,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8970,9 +9309,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9036,6 +9376,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 "" @@ -9081,6 +9430,12 @@ 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 "" @@ -9129,6 +9484,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Verpak" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9180,6 +9540,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 "" @@ -9443,6 +9812,10 @@ msgid "Projects" msgstr "Projek Stigters" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9526,18 +9899,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10781,10 +11142,6 @@ 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 "" @@ -10923,6 +11280,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Alle Seleksie" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -11068,6 +11430,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." @@ -11134,16 +11506,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" @@ -11193,10 +11555,6 @@ 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 "" @@ -11278,7 +11636,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11319,6 +11677,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 "" @@ -11520,27 +11893,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 "" @@ -11594,11 +11950,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Ongeldige naam." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Ongeldige naam." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Ongeldige naam." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Ongeldige naam." @@ -12184,9 +12550,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?" @@ -12238,10 +12601,6 @@ msgstr "" #~ msgstr "GUI Tema Items:" #, fuzzy -#~ msgid "Property: " -#~ msgstr "Eienskappe" - -#, fuzzy #~ msgid "Toggle folder status as Favorite." #~ msgstr "Wissel Gunsteling" @@ -12336,9 +12695,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "Vervang Met" -#~ msgid "Case Sensitive" -#~ msgstr "Letterkas Sensitief" - #~ msgid "Backwards" #~ msgstr "Terugwaarts" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index a4133403a1..7e71aa7f52 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -1,6 +1,6 @@ # Arabic translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Adel <dragonhunter250@gmail.com>, 2018. # athomield <athomield@hotmail.com>, 2017. @@ -30,12 +30,14 @@ # PhoenixHO <oussamahaddouche0@gmail.com>, 2019. # orcstudio <orcstudio@orcstudio.org>, 2019. # Rachid Graphicos <graphicos1d@gmail.com>, 2019. +# traveller010 <manar.bushnaq.001@gmail.com>, 2019. +# Ahmed Shahwan <dev.ahmed.shahwan@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-26 00:02+0000\n" +"Last-Translator: Ahmed Shahwan <dev.ahmed.shahwan@gmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" "Language: ar\n" @@ -44,7 +46,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\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -52,6 +54,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "نوع معامل خاطئ للدالة convert()ØŒ إستخدم ثوابت TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "" + +#: 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." @@ -182,29 +188,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 +444,12 @@ msgid "Not possible to add a new track without a root" msgstr "لا يمكن Ø¥Ø¶Ø§ÙØ© مقطع جديد بدون جذر" #: editor/animation_track_editor.cpp -#, fuzzy +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" -msgstr "Ø¥Ø¶Ø§ÙØ© مسار" +msgstr "Ø¥Ø¶Ø§ÙØ© مسار لمنØÙ†Ù‰ بريزير" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." @@ -517,12 +521,11 @@ 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 +536,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 +555,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 +658,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 +671,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 +712,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 +741,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 +772,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 +792,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 +825,11 @@ msgid "Extra Call Arguments:" msgstr "وسائط إستدعاء إضاÙية :" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "إختر طريقة" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "إعدادات متقدمة" @@ -836,7 +840,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 +848,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 +876,7 @@ msgstr "وصل" #: editor/connections_dialog.cpp #, fuzzy msgid "Signal:" -msgstr "الإشارات:" +msgstr "إشارة:" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" @@ -897,14 +900,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 +981,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 +1006,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 +1041,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 +1086,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 +1178,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 +1206,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 +1275,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 +1349,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 +1406,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 +1480,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 +1748,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 مزيد من Ø§Ù„Ù…Ù„ÙØ§Øª" @@ -2045,6 +2043,15 @@ msgid "Search Help" msgstr "Ø¥Ø¨ØØ« ÙÙŠ المساعدة" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "ØØ³Ø§Ø³Ø© Ù„ØØ§Ù„Ø© Ø§Ù„Ø£ØØ±Ù" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "أظهر المساعدات" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "إظهار الكل" @@ -2081,6 +2088,30 @@ msgstr "نوع العضو" msgid "Class" msgstr "الصنÙ" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "قائمة الطرق" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "إشارات" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "ثابت" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "خصيصة:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "خصائص الثمة" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "خصيصة:" @@ -2738,7 +2769,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 "مشروع" @@ -2976,8 +3008,8 @@ msgid "Play" msgstr "تشغيل" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "إيقا٠المشهد مؤقتاً" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3086,6 +3118,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 +3179,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." @@ -3463,6 +3505,14 @@ msgid "Importing:" msgstr "يستورد:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3591,6 +3641,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 "‌تصدير مدير القوالب" @@ -3672,6 +3727,11 @@ msgstr "مشهد مورث جديد..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "إختر المشهد الأساسي" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "ÙØªØ مشهد" @@ -4456,6 +4516,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "مقاطع الرسوم Ø§Ù„Ù…ØªØØ±ÙƒØ©:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "مقاطع صوتية:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "الإعدادات:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4700,6 +4775,11 @@ msgstr "وضع Ø§Ù„ØªØØ±ÙŠÙƒ" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "تØÙˆÙ„" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "تØÙˆÙ„" @@ -4786,6 +4866,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" @@ -5048,6 +5133,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 "الأول" @@ -5162,6 +5273,15 @@ msgid "Grid Step:" msgstr "خطوة الشبكة:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "خطوتان" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "معادل الدوران:" @@ -5171,6 +5291,11 @@ msgstr "خطوة الدوران:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "تكبير/تصغير:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "ØªØØ±ÙŠÙƒ الموجه العمودي" @@ -5245,6 +5370,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 "المرتكزات Ùقط" @@ -5258,6 +5462,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "ØØ¯Ø¯" @@ -5407,6 +5625,11 @@ msgid "Use Rotation Snap" msgstr "إستعمال كبس التدوير" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "إستخدم الكبس" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "نسبية الكبس" @@ -5557,7 +5780,7 @@ msgstr "أدخل Ù…ÙØªØ§Ø (مسارات موجودة Ø¨Ø§Ù„ÙØ¹Ù„)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5916,11 +6139,27 @@ msgstr "إنشاء شبكة الخطوط العريضة" msgid "Outline Size:" msgstr "ØØ¬Ù… الخطوط:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Ù…Ø³Ø Ø§Ù„Ø¹Ù†ØµØ± %dØŸ" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +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 "Ø¥Ø¶Ø§ÙØ© عنصر" @@ -6582,6 +6821,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 "" @@ -6715,10 +6971,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 "" @@ -6815,11 +7067,6 @@ msgid "Source" msgstr "مورد" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "إشارات" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6848,6 +7095,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7507,21 +7759,40 @@ msgstr "إنشاء شبكة الخطوط العريضة" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "ÙŠÙنشئ مستعرضات الميش" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "إنشاء بولي" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "إنشاء Ù…ÙØ¶Ù„ع التنقل" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "إنشاء Ù…ÙØ¶Ù„ع التنقل" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "أنشئ شكل Ù…ÙØ·Ø¨Ù‚" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "أنشئ شكل Ù…ÙØ·Ø¨Ù‚" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "الميش ÙØ§Ø±Øº!" @@ -7605,6 +7876,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "ÙØ´Ù„ تØÙ…يل المورد." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7894,6 +8170,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7910,8 +8187,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "ثابت" +#, fuzzy +msgid "Theme File" +msgstr "Ø¥ÙØªØ ملÙ" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8030,6 +8308,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 "" @@ -8048,6 +8339,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 "وضع التدوير" @@ -8287,6 +8613,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "إنشاء بولي" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "أنشئ عظام" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "إنشاء Ù…ÙØ¶Ù„ع التنقل" @@ -8582,7 +8918,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9179,9 +9515,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9246,6 +9583,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 "" @@ -9293,6 +9639,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "تصدير المشروع" @@ -9342,6 +9694,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Ù…Ù„ÙØ§Øª" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9397,6 +9754,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 "" @@ -9661,6 +10027,10 @@ msgid "Projects" msgstr "مشروع" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9744,18 +10114,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -11026,10 +11384,6 @@ msgid "GDNative" msgstr "" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "الخطوة (المتغيرة المدخلة/argument) تساوي ØµÙØ± !" @@ -11176,6 +11530,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "ÙƒÙÙ„ Ø§Ù„Ù…ÙØØ¯Ø¯" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "إخلاء Ø§Ù„Ù…ØØ¯Ø¯" @@ -11321,6 +11680,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 "إسم غير ØµØ§Ù„ØØŒ يجب أن لا يتصادم مع الأسماء المبنية تلقائياً الموجودة." @@ -11386,16 +11755,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 "Ù…Ø³Ø Ø§Ù„Ù†Ù‚Ø·Ø©" @@ -11445,10 +11804,6 @@ 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 "" @@ -11531,7 +11886,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11574,6 +11929,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 "الإعدادات:" @@ -11775,27 +12145,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 "" @@ -11846,11 +12199,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "إسم صن٠غير صالØ" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "اسم غير صالØ." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "اسم غير صالØ." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "اسم غير صالØ." @@ -12399,6 +12762,9 @@ msgstr "يمكن تعيين المتغيرات Ùقط ÙÙŠ الذروة ." msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "إيقا٠المشهد مؤقتاً" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "الكبس إلي الشبكة" @@ -12646,10 +13012,6 @@ msgstr "" #~ msgstr "زر Ø§Ù„ÙØ£Ø±Ø© الأيمن: Ù…Ø³Ø Ø§Ù„Ù†Ù‚Ø·Ø©." #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "إظهار Ø§Ù„Ù…Ù„ÙØ§Øª" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "تقريب" @@ -12869,9 +13231,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "إستبدلت بـ" -#~ msgid "Case Sensitive" -#~ msgstr "ØØ³Ø§Ø³Ø© Ù„ØØ§Ù„Ø© Ø§Ù„Ø£ØØ±Ù" - #~ msgid "Backwards" #~ msgstr "إلي الخلÙ" diff --git a/editor/translations/bg.po b/editor/translations/bg.po index 880682ab7c..a4045e0664 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -1,6 +1,6 @@ # Bulgarian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Bojidar Marinov <bojidar.marinov.bg@gmail.com>, 2016. # Иван Пенев (Ðдмирал ÐнимЕ) <aeternus.arcis@gmail.com>, 2016-2017. @@ -31,6 +31,10 @@ msgstr "" "TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -432,6 +436,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "ДобавÑне на нови пътечки." @@ -539,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 "" @@ -733,6 +742,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 +827,11 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "Изберете метод" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -990,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 "" @@ -1461,7 +1480,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 +1740,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 "ВнеÑен проект" @@ -2003,6 +2027,16 @@ msgstr "ТърÑи в Помощ" #: editor/editor_help_search.cpp #, fuzzy +msgid "Case Sensitive" +msgstr "ЗатварÑне на Ñцената" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "ТърÑене" + +#: editor/editor_help_search.cpp +#, fuzzy msgid "Display All" msgstr "Преименувай Ð’Ñички" @@ -2044,6 +2078,30 @@ msgstr "" msgid "Class" msgstr "КлаÑ:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Методи" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "ÐаÑтройки на редактора" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "ПоÑтоÑнно" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Изберете ÑвойÑтво" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "ПоÑтавÑне на възелите" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2670,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 "Проект" @@ -2889,8 +2948,8 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "ПреуÑтановÑване на Ñцената" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -2994,6 +3053,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 +3115,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 "" @@ -3367,6 +3436,15 @@ msgid "Importing:" msgstr "ВнаÑÑне:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Имаше грешка при изнаÑÑне на проекта!" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3499,6 +3577,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 "" @@ -3584,6 +3667,11 @@ msgstr "Ðов Ñкрипт" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Изберете главна Ñцена" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "ОтварÑне на Ñцена" @@ -4366,6 +4454,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "ДобавÑне на нови пътечки." + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Отиди на Ред" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4607,6 +4709,11 @@ msgstr "Режим на ПремеÑтване" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Преход" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "ДобавÑне на превод" @@ -4693,6 +4800,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 @@ -4954,6 +5066,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 "Ðачална" @@ -5061,6 +5199,14 @@ 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 #, fuzzy msgid "Rotation Offset:" msgstr "ИзмеÑтване при Завъртане:" @@ -5071,6 +5217,11 @@ msgstr "Съпка при Завъртане:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "Мащаб:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "ПемеÑти вертикална помощна линиÑ" @@ -5145,6 +5296,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 "" @@ -5158,6 +5389,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "Изберете метод" @@ -5305,6 +5550,10 @@ 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 "" @@ -5452,7 +5701,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5801,11 +6050,27 @@ msgstr "" msgid "Outline Size:" msgstr "Размер на Очертанието:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "ОбновÑване от Cцена" + +#: 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 "" @@ -6451,6 +6716,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 "ВнаÑÑне на тема" @@ -6584,11 +6866,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 "" @@ -6685,11 +6962,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "ÐаÑтройки на редактора" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6716,6 +6988,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7374,20 +7651,39 @@ msgstr "Създайте нов/а %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Преглед" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Създаване на папка" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Създаване на папка" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Създаване на папка" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Създаване на папка" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Създаване на папка" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7469,6 +7765,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "ÐеуÑпешно зареждане на реÑурÑите." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7758,6 +8059,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7774,8 +8076,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "ПоÑтоÑнно" +#, fuzzy +msgid "Theme File" +msgstr "Тема" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7893,6 +8196,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 "Следващ Ñкрипт" @@ -7912,6 +8228,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 "Режим на Завъртане" @@ -8153,6 +8504,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "ПремеÑтване на Полигон" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "ПремеÑтване на Полигон" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Създаване на папка" @@ -8439,7 +8800,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9033,9 +9394,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9100,6 +9462,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 "" @@ -9146,6 +9517,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "ИзнаÑÑне на проекта" @@ -9195,6 +9572,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Файл:" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9251,6 +9633,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 "" @@ -9520,6 +9911,10 @@ msgid "Projects" msgstr "Проект" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Сканиране" @@ -9604,18 +9999,6 @@ msgid "Device" msgstr "УÑтройÑтво" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10887,10 +11270,6 @@ msgid "GDNative" msgstr "" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "Стъпката на range() е нула!" @@ -11044,6 +11423,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "ÐаÑтройки" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "Ðова Ñцена" @@ -11189,6 +11573,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 "" @@ -11254,16 +11648,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 "ЗатварÑне на вÑичко" @@ -11313,10 +11697,6 @@ 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 "" @@ -11402,7 +11782,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11443,6 +11823,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 "" @@ -11643,27 +12037,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 "" @@ -11718,11 +12095,21 @@ msgstr "ÐеуÑпешно Ñъздаване на папка." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "невалидно име на Група." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "невалидно име на Група." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "невалидно име на Група." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Име:" @@ -12294,6 +12681,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "ПреуÑтановÑване на Ñцената" + #, fuzzy #~ msgid "Methods:" #~ msgstr "Методи" @@ -12437,10 +12827,6 @@ msgstr "" #~ msgid "RMB: Erase Point." #~ msgstr "RMB: Изтрий Точка." -#, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Ðов TextFile" - #~ msgid "Save Theme As" #~ msgstr "Запази Темата Като" @@ -12559,10 +12945,6 @@ msgstr "" #~ msgid "Invalid project path, the path must exist!" #~ msgstr "ÐедейÑтвителен път. ПътÑÑ‚ трÑбва да ÑъщеÑтвува!" -#, fuzzy -#~ msgid "Error creating the signature object." -#~ msgstr "Имаше грешка при изнаÑÑне на проекта!" - #~ msgid "Import assets to the project." #~ msgstr "ВнаÑÑне на обекти в проекта." diff --git a/editor/translations/bn.po b/editor/translations/bn.po index fa1842f3a2..aa249eabc6 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -1,17 +1,18 @@ # Bengali translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Abu Md. Maruf Sarker <maruf.webdev@gmail.com>, 2016-2017. # 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 @@ -27,6 +28,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "অবৈধ পà§à¦°à¦•ার রূপানà§à¦¤à¦° করার যà§à¦•à§à¦¤à¦¿(),use TYPE_* constants." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -39,7 +44,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 @@ -452,6 +457,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à§à¦¯à¦¾à¦• যোগ করà§à¦¨" @@ -564,8 +573,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 +770,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 +861,11 @@ msgstr "ডাকযোগà§à¦¯ অতিরিকà§à¦¤ মান/আরà§à¦— #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "মেথড/পদà§à¦§à¦¤à¦¿ বাছাই করà§à¦¨" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ" @@ -1035,7 +1055,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 +1549,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 +1822,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 "পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হয়েছে" @@ -2103,6 +2129,15 @@ msgid "Search Help" msgstr "সাহাযà§à¦¯ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "অকà§à¦·à¦°à§‡à¦° মাতà§à¦°à¦¾ (বড়/ছোট-হাতের) সংবেদনশীল" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "বোনà§â€Œ/হাড় দেখান" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "Normal পà§à¦°à¦¦à¦°à§à¦¶à¦¨" @@ -2147,6 +2182,30 @@ msgstr "সদসà§à¦¯à¦—ণ (Members):" msgid "Class" msgstr "কà§à¦²à¦¾à¦¸:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "মেথডের তালিকা:" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "সংকেতসমূহ" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "ধà§à¦°à§à¦¬à¦•/কনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦Ÿ" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "পà§à¦°à¦ªà¦¾à¦°à§à¦Ÿà¦¿:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "পà§à¦°à¦ªà¦¾à¦°à§à¦Ÿà¦¿:" @@ -2827,7 +2886,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 "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª" @@ -3070,8 +3130,8 @@ msgid "Play" msgstr "চালান" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "দৃশà§à¦¯à¦Ÿà¦¿à¦•ে বিরতি দিন" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3180,6 +3240,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 +3308,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." @@ -3582,6 +3652,15 @@ msgid "Importing:" msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ হচà§à¦›à§‡:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦¿à¦¤ বসà§à¦¤à§ (signature object) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3728,6 +3807,11 @@ msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ অপসারণ #: editor/export_template_manager.cpp #, fuzzy +msgid "Godot Export Templates" +msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡" + +#: editor/export_template_manager.cpp +#, fuzzy msgid "Export Template Manager" msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡" @@ -3826,6 +3910,11 @@ msgstr "নতà§à¦¨ উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারী দৃশà§à¦¯..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "পà§à¦°à¦§à¦¾à¦¨ দৃশà§à¦¯" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "দৃশà§à¦¯ খà§à¦²à§à¦¨" @@ -4630,6 +4719,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "কà§à¦²à¦¿à¦ªà¦¸à¦®à§‚হ" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "অডিও শà§à¦°à§‹à¦¤à¦¾" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "ফাংশনগà§à¦²à¦¿:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4879,6 +4983,11 @@ msgstr "মোড (Mode) সরান" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "টà§à¦°à§à¦¯à¦¾à¦¨à¦œà¦¿à¦¶à¦¨/সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦°à¦£" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "অনà§à¦¬à¦¾à¦¦ সংযোগ করà§à¦¨" @@ -4966,6 +5075,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 @@ -5236,6 +5350,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 "পà§à¦°à¦¥à¦®" @@ -5346,6 +5486,14 @@ 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 "ঘূরà§à¦£à¦¾à§Ÿà¦¨à§‡à¦° অফসেট/à¦à¦¾à¦°à¦¸à¦¾à¦®à§à¦¯:" @@ -5355,6 +5503,11 @@ msgstr "ঘূরà§à¦£à¦¾à§Ÿà¦¨à§‡à¦° পদকà§à¦·à§‡à¦ª:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "সà§à¦•েল/মাপ:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "à¦à¦¾à¦°à§à¦Ÿà¦¿à¦•à§à¦¯à¦¾à¦² গাইড সরান" @@ -5436,6 +5589,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 "অà§à¦¯à¦¾à¦‚কর" @@ -5450,6 +5685,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨" @@ -5601,6 +5850,11 @@ msgid "Use Rotation Snap" msgstr "ঘূরà§à¦£à¦¨ সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "আপেকà§à¦·à¦¿à¦• সà§à¦¨à§à¦¯à¦¾à¦ª" @@ -5758,7 +6012,7 @@ msgstr "চাবি সনà§à¦¨à¦¿à¦¬à§‡à¦¶ করà§à¦¨ (বিদà§à¦¯à¦®à¦ #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -6129,11 +6383,27 @@ msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–া মেস তৈরি করà§à¦¨" msgid "Outline Size:" msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–ার আকার:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "%d টি বসà§à¦¤à§ অপসারণ করবেন?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +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 "বসà§à¦¤à§ যোগ করà§à¦¨" @@ -6815,6 +7085,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 "থিম ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨" @@ -6950,11 +7237,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 "পদারà§à¦ªà¦£ করà§à¦¨" @@ -7054,11 +7336,6 @@ msgid "Source" msgstr "উৎস:" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "সংকেতসমূহ" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "টারà§à¦—েট" @@ -7087,6 +7364,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° ফাইল সিসà§à¦Ÿà§‡à¦® থেকে রিসোরà§à¦¸ ডà§à¦°à¦ª করা সমà§à¦à¦¬à¥¤" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Lookup Symbol" msgstr "সিমà§à¦¬à¦² সমà§à¦ªà§‚রà§à¦£ করà§à¦¨" @@ -7778,21 +8060,40 @@ msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–া মেস তৈরি করà§à¦¨" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "মেস লাইবà§à¦°à§‡à¦°à¦¿ তৈরি হচà§à¦›à§‡" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Poly তৈরি করà§à¦¨" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Navigation Polygon তৈরি করà§à¦¨" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Navigation Polygon তৈরি করà§à¦¨" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "অকলà§à¦¡à¦¾à¦° (occluder) পলিগন তৈরি করà§à¦¨" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "অকলà§à¦¡à¦¾à¦° (occluder) পলিগন তৈরি করà§à¦¨" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "সংরকà§à¦·à¦£à§‡à¦° পথটি খালি!" @@ -7880,6 +8181,11 @@ msgid "Add Frame" msgstr "ফà§à¦°à§‡à¦® যোগ করà§à¦¨" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "ছবি লোড করা সমà§à¦à¦¬ হচà§à¦›à§‡ না:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "সমসà§à¦¯à¦¾: ফà§à¦°à§‡à¦® রিসোরà§à¦¸ লোড করা সমà§à¦à¦¬ হয়নি!" @@ -8183,6 +8489,7 @@ msgid "Data Type:" msgstr "ডাটার ধরণ:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "আইকন" @@ -8199,8 +8506,9 @@ msgid "Color" msgstr "রঙ" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "ধà§à¦°à§à¦¬à¦•/কনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦Ÿ" +#, fuzzy +msgid "Theme File" +msgstr "থিম" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -8325,6 +8633,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 "পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ" @@ -8344,6 +8666,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 "চালানোর মোড:" @@ -8585,6 +8942,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "পলিগন সরান" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "পলিগন সরান" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Navigation Polygon তৈরি করà§à¦¨" @@ -8887,8 +9254,9 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "সà§à¦•েলার অপারেটর পরিবরà§à¦¤à¦¨ করà§à¦¨" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -9492,9 +9860,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9563,6 +9932,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 "ইনপà§à¦Ÿ অপসারণ করà§à¦¨" @@ -9615,6 +9993,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° পà§à¦°à¦¿à¦¸à§‡à¦Ÿ:" @@ -9676,6 +10060,11 @@ msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথ:" #: editor/project_export.cpp #, fuzzy +msgid "Pack File" +msgstr "ফাইল" + +#: editor/project_export.cpp +#, fuzzy msgid "Features" msgstr "গঠনবিনà§à¦¯à¦¾à¦¸" @@ -9731,6 +10120,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 "à¦à¦‡ পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡à¦° জনà§à¦¯ দরকারি à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦—à§à¦²à¦¿ খà§à¦à¦œà§‡ পাওয়া যাচà§à¦›à§‡ না:" @@ -10023,6 +10421,10 @@ msgid "Projects" msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "সà§à¦•à§à¦¯à¦¾à¦¨" @@ -10110,18 +10512,6 @@ msgid "Device" msgstr "ডিà¦à¦¾à¦‡à¦¸/যনà§à¦¤à§à¦°" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "কনà§à¦Ÿà§à¦°à§‹à¦²+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "যেকোনো কী/চাবি চাপà§à¦¨..." @@ -11463,10 +11853,6 @@ msgid "GDNative" msgstr "জিডিনà§à¦¯à¦¾à¦Ÿà¦¿à¦" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "ধাপ মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ শূনà§à¦¯!" @@ -11618,6 +12004,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ মà§à¦›à§‡ ফেলà§à¦¨" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "নিরà§à¦¬à¦¾à¦šà¦¨à¦•ে কেনà§à¦¦à§à¦°à§€à¦à§‚ত করà§à¦¨" @@ -11784,6 +12175,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 "" "অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ নাম। নামটি অবশà§à¦¯à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨ পূরà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ধরণের নামের সাথে পরমà§à¦ªà¦°à¦¬à¦¿à¦°à§‡à¦¾à¦§à§€ " @@ -11851,16 +12252,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 "পথের বিনà§à¦¦à§ অপসারণ করà§à¦¨" @@ -11922,10 +12313,6 @@ 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 "শাখা (tree) হতে নোড (সমূহ) যà§à¦•à§à¦¤ করà§à¦¨" @@ -12017,7 +12404,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -12060,6 +12447,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 "ফাংশন:" @@ -12264,28 +12666,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 "" @@ -12343,10 +12728,20 @@ msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "অগà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ কà§à¦²à¦¾à¦¸ নাম" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "à¦à¦•ক (অননà§à¦¯) নামটি অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤" #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package publisher display name." +msgstr "à¦à¦•ক (অননà§à¦¯) নামটি অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤" + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "পণà§à¦¯à§‡à¦° অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।" @@ -12946,6 +13341,18 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "দৃশà§à¦¯à¦Ÿà¦¿à¦•ে বিরতি দিন" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "কনà§à¦Ÿà§à¦°à§‹à¦²+" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª মোড:" @@ -13443,9 +13850,6 @@ msgstr "" #~ msgid "Rotate 270 degrees" #~ msgstr "২à§à§¦ ডিগà§à¦°à¦¿ ঘোরানà§â€Œ" -#~ msgid "Warning" -#~ msgstr "সতরà§à¦•তা" - #~ msgid "Variable" #~ msgstr "চলক/à¦à§‡à¦°à¦¿à§Ÿà§‡à¦¬à¦²" @@ -13786,9 +14190,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "à¦à¦° দà§à¦¬à¦¾à¦°à¦¾ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨" -#~ msgid "Case Sensitive" -#~ msgstr "অকà§à¦·à¦°à§‡à¦° মাতà§à¦°à¦¾ (বড়/ছোট-হাতের) সংবেদনশীল" - #~ msgid "Backwards" #~ msgstr "পিছনের/অতীতের দিকে" @@ -13929,9 +14330,6 @@ msgstr "" #~ msgid "Re-Import Changed Resources" #~ msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ রিসোরà§à¦¸-সমূহ পরিবরà§à¦¤à¦¿à¦¤ হয়েছে" -#~ msgid "Loading Export Templates" -#~ msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡" - #, fuzzy #~ msgid "" #~ "\n" @@ -14232,9 +14630,6 @@ msgstr "" #~ msgid "Loading Image:" #~ msgstr "ছবি লোড করা হচà§à¦›à§‡:" -#~ msgid "Couldn't load image:" -#~ msgstr "ছবি লোড করা সমà§à¦à¦¬ হচà§à¦›à§‡ না:" - #~ msgid "Converting Images" #~ msgstr "ছবিসমূহ রূপানà§à¦¤à¦° করা হচà§à¦›à§‡" @@ -14414,9 +14809,6 @@ msgstr "" #~ "সারà§à¦Ÿà¦¿à¦«à¦¿à¦•েট ফাইলটি পড়া সমà§à¦à¦¬ হচà§à¦›à§‡ না। ফাইলের পথ à¦à¦¬à¦‚ পাসওয়ারà§à¦¡ দà§à¦Ÿà§‹à¦‡ কি সঠিক " #~ "দেয়া হয়েছে?" -#~ msgid "Error creating the signature object." -#~ msgstr "সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦¿à¦¤ বসà§à¦¤à§ (signature object) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।" - #~ msgid "Error creating the package signature." #~ msgstr "পà§à¦¯à¦¾à¦•েজের সà§à¦¬à¦¾à¦•à§à¦·à¦° (package signature) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।" @@ -14516,9 +14908,6 @@ msgstr "" #~ msgid "Create Android keystore" #~ msgstr "অà§à¦¯à¦¾à¦¨à§à¦¡à§à¦°à¦¯à¦¼à§‡à¦¡ কীসà§à¦Ÿà§‹à¦° (keystore) তৈরি করà§à¦¨" -#~ msgid "Full name" -#~ msgstr "পূরà§à¦£ নাম" - #~ msgid "Organizational unit" #~ msgstr "সাংগঠনিক à¦à¦•ক (Organizational unit)" @@ -14623,9 +15012,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 3c105cd75c..2a76448e94 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -1,6 +1,6 @@ # Catalan translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # BennyBeat <bennybeat@gmail.com>, 2017. # Javier Ocampos <xavier.ocampos@gmail.com>, 2018. @@ -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 @@ -29,6 +29,11 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "L'argument per a convert() no és và lid, utilitzeu constants TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +#, fuzzy +msgid "Expected a string of length 1 (a character)." +msgstr "S'esperava una cadena de longitud 1 (un carà cter)." + +#: 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." @@ -63,7 +68,6 @@ msgid "On call to '%s':" msgstr "En la crida a '%s':" #: core/ustring.cpp -#, fuzzy msgid "B" msgstr "B" @@ -72,9 +76,8 @@ msgid "KiB" msgstr "KiB" #: core/ustring.cpp -#, fuzzy msgid "MiB" -msgstr "Mesclar" +msgstr "MiB" #: core/ustring.cpp msgid "GiB" @@ -426,6 +429,10 @@ msgid "Not possible to add a new track without a root" msgstr "No es pot afegir una nova pista sense cap arrel" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Afegir Pista Bezier" @@ -531,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 "Edita" @@ -633,9 +641,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 +656,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 +697,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 +729,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 +811,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 +994,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 +1168,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 +1198,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 +1268,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 +1477,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 +1731,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)" @@ -1991,6 +2013,15 @@ msgid "Search Help" msgstr "Cerca Ajuda" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Majúscules i minúscules" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Mostrar els Ajudants" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Mostra-ho tot" @@ -2026,6 +2057,29 @@ msgstr "Tipus de Membre" msgid "Class" msgstr "Classe" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Mètodes" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Senyal" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constant" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Propietat:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Propietats del tema" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Propietat:" @@ -2690,7 +2744,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 +2985,9 @@ msgid "Play" msgstr "Reprodueix" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pausa l'escena" +#, fuzzy +msgid "Pause the scene execution for debugging." +msgstr "Pausa l’execució d’escena per a la depuració." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3041,6 +3097,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 +3158,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." @@ -3414,6 +3480,15 @@ msgid "Importing:" msgstr "Importació:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "No s'ha pogut l'objecte signatura." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3543,6 +3618,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ó" @@ -3619,6 +3699,11 @@ msgid "New Inherited Scene" msgstr "Nova Escena Heretada" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Set As Main Scene" +msgstr "Escena Principal" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Obrir Escenes" @@ -4355,6 +4440,21 @@ msgstr "" "que no es poden recuperar els noms de les pistes." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Talls d'Animació:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Talls d'Àudio:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funcions:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Node Reanomenat" @@ -4587,6 +4687,11 @@ msgid "Move Node" msgstr "Moure Node" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Transició: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Afegir una Transició" @@ -4673,6 +4778,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" @@ -4932,6 +5042,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" @@ -4953,7 +5089,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 @@ -5047,6 +5183,16 @@ msgid "Grid Step:" msgstr "Pas de la Graella:" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Primary Line Every:" +msgstr "LÃnia principal cada:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 passos" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "òfset de la Rotació:" @@ -5055,6 +5201,11 @@ msgid "Rotation Step:" msgstr "Pas de la Rotació:" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "Escala:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Moure guia vertical" @@ -5131,6 +5282,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" @@ -5144,6 +5376,20 @@ msgstr "Modifica Ancoratges" #: 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 #, fuzzy msgid "Lock Selected" msgstr "Bloca el Seleccionat" @@ -5294,6 +5540,11 @@ msgid "Use Rotation Snap" msgstr "Utilitzar Ajustament de Rotació" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "Utilitzar Ajustament" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Ajustament Relatiu" @@ -5442,7 +5693,7 @@ msgstr "Inserir claus (basades en mascara)." #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5800,11 +6051,27 @@ msgstr "Crea la Malla de Contorn" msgid "Outline Size:" msgstr "Mida del Contorn:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Elimina l'element %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Actualitza des de l'Escena" + +#: 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" @@ -6447,6 +6714,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" @@ -6576,10 +6860,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)" @@ -6674,10 +6954,6 @@ msgid "Source" msgstr "Font" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Senyal" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Objectiu" @@ -6705,6 +6981,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "Només s'hi poden deixar caure Recursos del sistema de fitxers." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Lookup Symbol" msgstr "Cercar SÃmbol" @@ -7371,21 +7652,40 @@ msgid "Create Mesh2D" msgstr "Crear Malla2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Creant Previsualitzacions de Malles" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Crear PolÃgon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Crea un PolÃgon de Navegació" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Crea un PolÃgon de Navegació" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Crea un PolÃgon Oclusor" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Crea un PolÃgon Oclusor" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "El Sprite està buit!" @@ -7468,6 +7768,11 @@ msgid "Add Frame" msgstr "Afegeix Fotograma" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "No s'ha pogut carregar el recurs." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "Error: No s'ha trobat el recurs de fotogrames!" @@ -7754,6 +8059,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" @@ -7770,8 +8076,9 @@ msgid "Color" msgstr "Color" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Constant" +#, fuzzy +msgid "Theme File" +msgstr "Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7889,6 +8196,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" @@ -7907,6 +8228,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ó" @@ -8147,6 +8503,16 @@ msgid "Edit Tile Z Index" msgstr "Editar Ãndex Z de la rajola" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Mou el PolÃgon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Fer el polÃgon còncau" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Crear PolÃgon de Col·lisió" @@ -8443,8 +8809,9 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "Operador Aclarir." #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy @@ -9100,9 +9467,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9166,6 +9534,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?" @@ -9216,6 +9593,12 @@ msgid "Add..." msgstr "Afegeix..." #: 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 "Camà d'exportació" @@ -9270,6 +9653,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" @@ -9322,6 +9710,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:" @@ -9632,6 +10029,11 @@ msgid "Projects" msgstr "Projecte" #: editor/project_manager.cpp +#, fuzzy +msgid "Last Modified" +msgstr "Última modificació" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Explora" @@ -9717,18 +10119,6 @@ msgid "Device" msgstr "Dispositiu" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Maj +" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt +" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Premeu una Tecla..." @@ -10296,8 +10686,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 @@ -11015,10 +11406,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "L'argument pas és zero!" @@ -11163,6 +11550,11 @@ msgid "Cursor Clear Rotation" msgstr "Reestableix la Rotació del Cursor" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Elimina la Selecció" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Esborra la Selecció" @@ -11315,6 +11707,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 " @@ -11382,16 +11784,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" @@ -11445,10 +11837,6 @@ msgid "Add Preload Node" msgstr "Afegeix un Node de Precà rrega" #: 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 "Afegeix Nodes des d'Arbre" @@ -11531,12 +11919,14 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +#, fuzzy +msgid "Select at least one node with sequence port." +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 @@ -11574,6 +11964,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ó:" @@ -11809,28 +12214,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 "" @@ -11839,12 +12226,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" @@ -11879,10 +12268,20 @@ msgid "Using default boot splash image." msgstr "Utilitzant la imatge de presentació per defecte." #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package short name." +msgstr "El nom del paquet no és và lid:" + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "El nom únic del paquet no és và lid." #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package publisher display name." +msgstr "El nom únic del paquet no és và lid." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "GUID del producte no và lid." @@ -12541,6 +12940,30 @@ 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" + +#~ msgid "Shift+" +#~ msgstr "Maj +" + +#~ msgid "Alt+" +#~ msgstr "Alt +" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "Ajustar a la QuadrÃcula" @@ -13050,9 +13473,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" @@ -13381,9 +13801,6 @@ msgstr "Les constants no es poden modificar." #~ msgid "Replace By" #~ msgstr "Reemplaça per" -#~ msgid "Case Sensitive" -#~ msgstr "Majúscules i minúscules" - #~ msgid "Backwards" #~ msgstr "Enrere" @@ -13516,9 +13933,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" @@ -13781,9 +14195,6 @@ msgstr "Les constants no es poden modificar." #~ "No s'ha pogut llegir el certificat. Comproveu que tant el camà com la " #~ "contrasenya són correctes" -#~ msgid "Error creating the signature object." -#~ msgstr "No s'ha pogut l'objecte signatura." - #~ msgid "Error creating the package signature." #~ msgstr "No s'ha pogut crear el paquet signatura." diff --git a/editor/translations/cs.po b/editor/translations/cs.po index dc6e69bc0c..3d6a2fe03f 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -1,6 +1,6 @@ # Czech translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Fadex <vitekpaulik@gmail.com>, 2017. # Jan 'spl!te' KondelÃk <j.kondelik@centrum.cz>, 2016, 2018. @@ -13,12 +13,15 @@ # 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. +# David KubeÅ¡ <kubesdavid@email.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-27 15:52+0000\n" +"Last-Translator: David KubeÅ¡ <kubesdavid@email.cz>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" "Language: cs\n" @@ -26,7 +29,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\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -35,6 +38,10 @@ msgstr "" "Neplatný typ argumentu funkce convert(), použijte nÄ›kterou z konstant TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -70,31 +77,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 +283,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" @@ -424,6 +430,10 @@ msgid "Not possible to add a new track without a root" msgstr "Nenà možné pÅ™idat novou stopu bez koÅ™enového uzlu" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "PÅ™idat Bézierovu stopu" @@ -449,7 +459,7 @@ msgstr "Cesta stopy nenà validnÃ, nelze vložit klÃÄ metody." #: editor/animation_track_editor.cpp msgid "Add Method Track Key" -msgstr "PÅ™idat klÃÄ volánà metody" +msgstr "PÅ™idat stopu volánà metody" #: editor/animation_track_editor.cpp msgid "Method not found in object: " @@ -537,8 +547,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" @@ -639,9 +650,8 @@ msgid "Scale Ratio:" msgstr "PomÄ›r zvÄ›tÅ¡enÃ:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Zvolte stopy ke zkopÃrovánÃ:" +msgstr "Vybrat stopy ke kopÃrovánÃ" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -653,9 +663,8 @@ msgid "Copy" msgstr "KopÃrovat" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Nevybrat nic" +msgstr "Vybrat vÅ¡e/nic" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -694,14 +703,12 @@ msgid "Replaced %d occurrence(s)." msgstr "Nahrazeno %d výskytů." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d match." -msgstr "Nalezeno %d shod(a)." +msgstr "%d shoda." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d matches." -msgstr "Nalezeno %d shod(a)." +msgstr "%d shody." #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" @@ -728,6 +735,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 "PÅ™epnout panel skriptů" + #: 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 +817,10 @@ msgid "Extra Call Arguments:" msgstr "Dalšà argumenty volánÃ:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Metoda pÅ™ijÃmaÄe:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "PokroÄilé" @@ -850,9 +865,8 @@ msgid "Connect" msgstr "PÅ™ipojit" #: editor/connections_dialog.cpp -#, fuzzy msgid "Signal:" -msgstr "Signály:" +msgstr "Signál:" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" @@ -876,14 +890,12 @@ msgid "Disconnect" msgstr "Odpojit" #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect a Signal to a Method" -msgstr "PÅ™ipojit Signál: " +msgstr "PÅ™ipojit signál k metodÄ›" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit Connection:" -msgstr "Upravit pÅ™ipojenÃ:" +msgstr "Upravit spojenÃ:" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" @@ -960,7 +972,6 @@ msgid "Dependencies For:" msgstr "Závislosti na:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Scene '%s' is currently being edited.\n" "Changes will only take effect when reloaded." @@ -969,7 +980,6 @@ msgstr "" "ZmÄ›ny se projevà po opÄ›tovném naÄtenÃ." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Resource '%s' is in use.\n" "Changes will only take effect when reloaded." @@ -987,7 +997,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" @@ -1022,9 +1032,8 @@ msgid "Owners Of:" msgstr "VlastnÃci:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Remove selected files from the project? (Can't be restored)" -msgstr "Odebrat vybrané soubory z projektu? (nelze vrátit zpÄ›t)" +msgstr "Odebrat vybrané soubory z projektu? (Nelze vrátit zpÄ›t)" #: editor/dependency_editor.cpp msgid "" @@ -1069,9 +1078,8 @@ msgid "Permanently delete %d item(s)? (No undo!)" msgstr "PermanentnÄ› smazat %d položek? (nelze vrátit zpÄ›t!)" #: editor/dependency_editor.cpp -#, fuzzy msgid "Show Dependencies" -msgstr "Závislosti" +msgstr "Zobrazit závislosti" #: editor/dependency_editor.cpp msgid "Orphan Resource Explorer" @@ -1162,7 +1170,6 @@ msgid "License" msgstr "Licence" #: editor/editor_about.cpp -#, fuzzy msgid "Third-party Licenses" msgstr "Licence tÅ™etÃch stran" @@ -1192,16 +1199,14 @@ msgid "Licenses" msgstr "Licence" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Error opening package file, not in ZIP format." -msgstr "NepodaÅ™ilo se otevÅ™Ãt balÃÄek, nenà ve formátu zip." +msgstr "NepodaÅ™ilo se otevÅ™Ãt balÃÄek, nenà ve formátu ZIP." #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" msgstr "Dekomprese uživatelského obsahu" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Package installed successfully!" msgstr "BalÃÄek byl úspěšnÄ› nainstalován!" @@ -1352,9 +1357,8 @@ msgid "Add Bus" msgstr "PÅ™idat bus" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Add a new Audio Bus to this layout." -msgstr "Uložit rozloženà Audio Busu jako..." +msgstr "PÅ™idá do tohoto rozloženà novou zvukovou sbÄ›rnici." #: editor/editor_audio_buses.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp @@ -1364,7 +1368,7 @@ msgstr "NaÄÃst" #: editor/editor_audio_buses.cpp msgid "Load an existing Bus Layout." -msgstr "" +msgstr "NaÄÃst existujÃcà rozloženà sbÄ›rnice." #: editor/editor_audio_buses.cpp msgid "Save As" @@ -1372,7 +1376,7 @@ msgstr "Uložit jako" #: editor/editor_audio_buses.cpp msgid "Save this Bus Layout to a file." -msgstr "" +msgstr "Uložit toto rozloženà sbÄ›rnice do souboru." #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" @@ -1444,7 +1448,6 @@ msgid "Rearrange Autoloads" msgstr "PÅ™eskupit Autoloady" #: editor/editor_autoload_settings.cpp editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid path." msgstr "Neplatná cesta." @@ -1472,7 +1475,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" @@ -1501,9 +1505,8 @@ msgid "[unsaved]" msgstr "[neuloženo]" #: editor/editor_dir_dialog.cpp -#, fuzzy msgid "Please select a base directory first." -msgstr "Nejprve vyberte výchozà složku" +msgstr "Nejprve vyberte výchozà složku." #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1585,7 +1588,7 @@ msgstr "Soubor Å¡ablony nenalezen:" #: editor/editor_export.cpp msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." -msgstr "" +msgstr "PÅ™i 32-bitovým exportu vestavÄ›né PCK nemůže být vÄ›tšà než 4 GiB." #: editor/editor_feature_profile.cpp msgid "3D Editor" @@ -1597,9 +1600,8 @@ msgid "Script Editor" msgstr "OtevÅ™Ãt editor skriptů" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Asset Library" -msgstr "OtevÅ™Ãt knihovnu assetů" +msgstr "Knihovna assetů" #: editor/editor_feature_profile.cpp #, fuzzy @@ -1622,18 +1624,16 @@ msgid "FileSystem and Import Docks" msgstr "Souborový systém" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Erase profile '%s'? (no undo)" -msgstr "Nahradit vÅ¡echny (bez možnosti vrácenÃ)" +msgstr "Smazat profil '%s'? (bez možnosti vrácenÃ)" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" msgstr "Profil musà být validnà název souboru a nesmà obsahovat '.'" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Profile with this name already exists." -msgstr "Soubor nebo složka s tÃmto názvem již existuje." +msgstr "Profil s tÃmto názvem již existuje." #: editor/editor_feature_profile.cpp msgid "(Editor Disabled, Properties Disabled)" @@ -1650,9 +1650,8 @@ msgid "(Editor Disabled)" msgstr "Vypnuto" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Class Options:" -msgstr "Popis tÅ™Ãdy:" +msgstr "Možnosti tÅ™Ãdy:" #: editor/editor_feature_profile.cpp #, fuzzy @@ -1665,14 +1664,12 @@ msgid "Enabled Properties:" msgstr "Vlastnosti:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Features:" -msgstr "Funkce" +msgstr "Povolené funkce:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Classes:" -msgstr "Hledat tÅ™Ãdy" +msgstr "Povolené tÅ™Ãdy:" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." @@ -1685,18 +1682,16 @@ msgid "" msgstr "Profil '%s' již existuje. PÅ™ed importem jej odstraňte, import zruÅ¡en." #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Error saving profile to path: '%s'." -msgstr "Chyba pÅ™i nahrávánà šablony '%s'" +msgstr "Chyba pÅ™i ukládánà profilu do cesty: '%s '." #: editor/editor_feature_profile.cpp msgid "Unset" msgstr "OdznaÄit" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Current Profile:" -msgstr "Aktuálnà verze:" +msgstr "Aktuálnà profil:" #: editor/editor_feature_profile.cpp #, fuzzy @@ -1719,39 +1714,37 @@ msgid "Export" msgstr "Exportovat" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Available Profiles:" -msgstr "Dostupné uzly:" +msgstr "Dostupné profily:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Class Options" -msgstr "Popis tÅ™Ãdy" +msgstr "Možnosti tÅ™Ãdy" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "New profile name:" -msgstr "Nové jméno:" +msgstr "Název nového profilu:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Erase Profile" -msgstr "Vymazat oblast" +msgstr "Smazat profil" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "Spravovat exportnà šablony" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" -msgstr "%d vÃce souborů" +msgstr "Importovat profil(y)" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Export Profile" -msgstr "Exportovat projekt" +msgstr "Exportovat profil" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Manage Editor Feature Profiles" -msgstr "Spravovat exportnà šablony" +msgstr "Spravovat profily funkcà editoru" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select Current Folder" @@ -1859,14 +1852,12 @@ msgid "Move Favorite Down" msgstr "PÅ™esunout oblÃbenou položku dolů" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to previous folder." -msgstr "JÃt na nadÅ™azenou složku" +msgstr "PÅ™ejÃt do pÅ™edchozà složky." #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to next folder." -msgstr "JÃt na nadÅ™azenou složku" +msgstr "PÅ™ejÃt do dalšà složky." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp #, fuzzy @@ -1874,9 +1865,8 @@ msgid "Go to parent folder." msgstr "JÃt na nadÅ™azenou složku" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Refresh files." -msgstr "Hledat soubory" +msgstr "Obnovit soubory." #: editor/editor_file_dialog.cpp #, fuzzy @@ -1948,9 +1938,8 @@ msgid "Inherited by:" msgstr "DÄ›dÄ›ná z:" #: editor/editor_help.cpp -#, fuzzy msgid "Brief Description" -msgstr "StruÄný popis:" +msgstr "StruÄný popis" #: editor/editor_help.cpp msgid "Properties" @@ -1981,9 +1970,8 @@ msgid "Class Description" msgstr "Popis tÅ™Ãdy" #: editor/editor_help.cpp -#, fuzzy msgid "Online Tutorials" -msgstr "Online návody:" +msgstr "Online návody" #: editor/editor_help.cpp msgid "" @@ -2025,6 +2013,15 @@ msgid "Search Help" msgstr "Prohledat nápovÄ›du" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "RozliÅ¡ovat velká a malá pÃsmena" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Zobrazit pomocnÃky" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Zobrazit vÅ¡echny" @@ -2061,6 +2058,30 @@ msgstr "ÄŒlenové" msgid "Class" msgstr "TÅ™Ãda" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metody" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Signály" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "KonstantnÃ" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Vlastnost:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Vlastnosti motivu" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Vlastnost:" @@ -2116,7 +2137,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" @@ -2136,11 +2157,11 @@ msgstr "" #: editor/editor_network_profiler.cpp msgid "Outgoing RSET" -msgstr "" +msgstr "Odchozà RSET" #: 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." @@ -2341,9 +2362,8 @@ msgid "Open Base Scene" msgstr "OtevÅ™Ãt základnà scénu" #: editor/editor_node.cpp -#, fuzzy msgid "Quick Open..." -msgstr "Rychle otevÅ™Ãt scénu..." +msgstr "Rychle otevÅ™Ãt..." #: editor/editor_node.cpp msgid "Quick Open Scene..." @@ -2712,7 +2732,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" @@ -2929,7 +2950,7 @@ msgstr "Q&A" #: editor/editor_node.cpp msgid "Issue Tracker" -msgstr "Issue Tracker" +msgstr "Sledovánà chyb" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" @@ -2948,8 +2969,8 @@ msgid "Play" msgstr "Spustit" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pozastavit scénu" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3055,6 +3076,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 +3137,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." @@ -3430,6 +3461,15 @@ msgid "Importing:" msgstr "ImportovánÃ:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Chyba pÅ™i vytvářenà podpisového objektu." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3560,6 +3600,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" @@ -3641,6 +3686,11 @@ msgstr "Nová odvozená scéna..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Hlavnà scéna" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "OtevÅ™Ãt scénu" @@ -4379,6 +4429,19 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "AnimaÄnà klipy:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Zvukové klipy" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funkce" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Uzel pÅ™ejmenován" @@ -4394,7 +4457,6 @@ msgid "Edit Filtered Tracks:" msgstr "Upravit filtrované stopy:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Enable Filtering" msgstr "Povolit filtrovánÃ" @@ -4613,8 +4675,12 @@ msgstr "PÅ™esunout uzel" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "PÅ™echod: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" -msgstr "PÅ™idat pÅ™eklad" +msgstr "PÅ™idat pÅ™echod" #: editor/plugins/animation_state_machine_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -4639,7 +4705,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." @@ -4693,6 +4759,10 @@ msgstr "" msgid "Transition: " msgstr "PÅ™echod: " +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "Režim pÅ™ehrávánÃ:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4863,14 +4933,12 @@ msgid "Request failed, return code:" msgstr "Požadavek se nezdaÅ™il, návratový kód:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed." -msgstr "Požadavek se nezdaÅ™il." +msgstr "Požadavek selhal." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Cannot save response to:" -msgstr "Nelze uložit motiv do souboru:" +msgstr "OdpovÄ›Ä nelze uložit na:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." @@ -4886,9 +4954,8 @@ msgid "Redirect loop." msgstr "Zacyklené pÅ™esmÄ›rovánÃ." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed, timeout" -msgstr "Požadavek se nezdaÅ™il, návratový kód:" +msgstr "Požadavek selhal, vyprÅ¡el Äasový limit" #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy @@ -4936,9 +5003,8 @@ msgid "Idle" msgstr "NeÄinný" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Install..." -msgstr "Instalovat" +msgstr "Nainstalovat..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Retry" @@ -4953,6 +5019,30 @@ 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 +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 "PrvnÃ" @@ -4974,17 +5064,15 @@ msgstr "VÅ¡echny" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Žádné výsledky pro \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "Importovat" +msgstr "Importovat..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Plugins..." -msgstr "Pluginy" +msgstr "Pluginy..." #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" @@ -5000,9 +5088,8 @@ msgid "Site:" msgstr "Web:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support" -msgstr "Podpora..." +msgstr "Podpora" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" @@ -5013,9 +5100,8 @@ msgid "Testing" msgstr "Testované" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Loading..." -msgstr "NaÄÃst..." +msgstr "NaÄÃtánÃ..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -5061,6 +5147,14 @@ msgid "Grid Step:" msgstr "Krok mřÞky:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "kroky" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Offset rotace:" @@ -5070,38 +5164,37 @@ msgstr "Krok rotace:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "ZvÄ›tÅ¡enÃ:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "PÅ™esunout svislé vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Vertical Guide" -msgstr "VytvoÅ™it nové svislé vodÃtko" +msgstr "VytvoÅ™it svislé vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Vertical Guide" msgstr "Odstranit svislé vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Horizontal Guide" -msgstr "PÅ™esunout vodorovné vodÃtko" +msgstr "Posunout vodorovné vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Horizontal Guide" -msgstr "VytvoÅ™it nové vodorovné vodÃtko" +msgstr "VytvoÅ™it vodorovné vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Horizontal Guide" msgstr "Odstranit vodorovné vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Horizontal and Vertical Guides" -msgstr "VytvoÅ™it nové vodorovné a svislé vodÃtka" +msgstr "VytvoÅ™it vodorovná a svislá vodÃtka" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move pivot" @@ -5144,6 +5237,80 @@ msgid "" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Vlevo nahoÅ™e" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Vpravo nahoÅ™e" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Vpravo dole" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Vlevo dole" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Center Left" +msgstr "Odsadit zleva" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "UprostÅ™ed nahoÅ™e" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Vpravo uprostÅ™ed" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "UprostÅ™ed dole" + +#: 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" @@ -5157,6 +5324,20 @@ msgstr "Upravit kotvy" #: 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 #, fuzzy msgid "Lock Selected" msgstr "Nástroj VýbÄ›r" @@ -5304,6 +5485,11 @@ msgid "Use Rotation Snap" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "PoužÃt pÅ™ichycovánÃ" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "" @@ -5453,7 +5639,7 @@ msgstr "Vložit klÃÄ (existujÃcà stopy)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5809,11 +5995,27 @@ msgstr "VytvoÅ™it mesh obrysu" msgid "Outline Size:" msgstr "Velikost obrysu:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Odstranit %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Aktualizovat ze scény" + +#: 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" @@ -6452,6 +6654,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" @@ -6583,10 +6802,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" @@ -6684,11 +6899,6 @@ msgid "Source" msgstr "Zdroj:" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Signály" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6715,6 +6925,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7375,20 +7590,39 @@ msgstr "VytvoÅ™it 2D mesh" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Náhled" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "VytvoÅ™it Polygon3D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "VytvoÅ™it navigaÄnà polygon" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "VytvoÅ™it navigaÄnà polygon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "VytvoÅ™it Occluder Polygon" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "VytvoÅ™it Occluder Polygon" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite je prázdný!" @@ -7471,6 +7705,11 @@ msgid "Add Frame" msgstr "PÅ™idat snÃmek" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Selhalo nahránà zdroje." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "CHYBA: Nelze naÄÃst zdroj snÃmku!" @@ -7762,6 +8001,7 @@ msgid "Data Type:" msgstr "Datový typ:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikona" @@ -7778,8 +8018,9 @@ msgid "Color" msgstr "Barva" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "KonstantnÃ" +#, fuzzy +msgid "Theme File" +msgstr "Téma" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7899,6 +8140,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" @@ -7918,6 +8173,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Ã" @@ -8150,6 +8440,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "PÅ™esunout polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "PÅ™esunout polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "VytvoÅ™it navigaÄnà polygon" @@ -8286,9 +8586,8 @@ msgid "Scalar" msgstr "ZvÄ›tÅ¡enÃ:" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector" -msgstr "Inspektor" +msgstr "Vektor" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean" @@ -8446,8 +8745,9 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "ZmÄ›nit skalárnà operátor" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -9057,9 +9357,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9126,6 +9427,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" @@ -9172,6 +9482,12 @@ msgid "Add..." msgstr "PÅ™idat..." #: 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 "Exportovat cestu" @@ -9221,6 +9537,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Soubory" + +#: editor/project_export.cpp msgid "Features" msgstr "Funkce" @@ -9272,6 +9593,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Ã:" @@ -9536,6 +9866,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Skenovat" @@ -9624,18 +9958,6 @@ msgid "Device" msgstr "ZaÅ™ÃzenÃ" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Ctrl+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "StisknÄ›te klávesu..." @@ -10679,9 +11001,8 @@ msgid "Profiler" msgstr "Profiler" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Network Profiler" -msgstr "Exportovat projekt" +msgstr "SÃÅ¥ový profiler" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -10914,10 +11235,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "Argument kroku je nula!" @@ -11061,6 +11378,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Vymazat oznaÄené" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Vymazat výbÄ›r" @@ -11213,6 +11535,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." @@ -11279,16 +11611,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" @@ -11344,10 +11666,6 @@ msgid "Add Preload Node" msgstr "PÅ™idat pÅ™edem naÄtený uzel" #: 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 "PÅ™idat uzel(y) ze stromu" @@ -11430,7 +11748,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11473,6 +11791,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:" @@ -11677,28 +12010,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 "" @@ -11752,10 +12068,20 @@ msgstr "Nelze vytvoÅ™it složku." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Neplatné jméno tÅ™Ãdy" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Neplatný unikátnà název." #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package publisher display name." +msgstr "Neplatný unikátnà název." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "Neplatné GUID produktu." @@ -12249,11 +12575,11 @@ msgstr "" #: scene/gui/color_picker.cpp msgid "Pick a color from the screen." -msgstr "" +msgstr "Vyberte barvu z obrazovky." #: scene/gui/color_picker.cpp msgid "HSV" -msgstr "" +msgstr "HSV" #: scene/gui/color_picker.cpp msgid "Raw" @@ -12367,6 +12693,18 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstanty nenà možné upravovat." +#~ msgid "Pause the scene" +#~ msgstr "Pozastavit scénu" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Ctrl+" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "PÅ™ichytit k mřÞce" @@ -12559,9 +12897,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:" @@ -12696,9 +13031,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" @@ -12770,9 +13102,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á" @@ -12991,9 +13320,6 @@ msgstr "Konstanty nenà možné upravovat." #~ msgid "Replace By" #~ msgstr "Nahradit" -#~ msgid "Case Sensitive" -#~ msgstr "RozliÅ¡ovat velká a malá pÃsmena" - #~ msgid "Backwards" #~ msgstr "Pozpátku" @@ -13064,9 +13390,6 @@ msgstr "Konstanty nenà možné upravovat." #~ msgstr "" #~ "NepodaÅ™ilo se pÅ™eÄÃst soubor certifikátu. Jsou cesta a heslo obÄ› korektnÃ?" -#~ msgid "Error creating the signature object." -#~ msgstr "Chyba pÅ™i vytvářenà podpisového objektu." - #~ msgid "Error creating the package signature." #~ msgstr "Chyba pÅ™i vytvářenà podpisu balÃÄku." diff --git a/editor/translations/da.po b/editor/translations/da.po index b91eec6954..513b38e5f7 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -1,6 +1,6 @@ # Danish translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Dankse Memes <purplelops@gmail.com>, 2018. # David Lamhauge <davidlamhauge@gmail.com>, 2016, 2018. @@ -35,6 +35,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Ugyldigt type argument til convert(), brug TYPE_* konstanter." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -437,6 +441,10 @@ msgid "Not possible to add a new track without a root" msgstr "Det er ikke muligt at tilføje et nyt spor uden en rod" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Tilføj Spor" @@ -557,8 +565,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 +757,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 +845,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 +1032,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 +1519,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 +1785,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" @@ -2052,6 +2076,15 @@ msgid "Search Help" msgstr "Søg i Hjælp" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Forskel pÃ¥ smÃ¥ og store bogstaver" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Søg" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Vis alle" @@ -2087,6 +2120,30 @@ msgstr "Medlemstype" msgid "Class" msgstr "Klasse" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metoder" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Signaler" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Konstant" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Egenskaber" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Tema Egenskaber" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2744,7 +2801,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" @@ -2981,8 +3039,8 @@ msgid "Play" msgstr "Spil" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Sæt scenen pÃ¥ pause" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3089,6 +3147,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 +3208,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." @@ -3461,6 +3529,14 @@ msgid "Importing:" msgstr "Importerer:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3589,6 +3665,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" @@ -3678,6 +3759,11 @@ msgstr "Ny Nedarvet Scene..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Vælg en Main Scene" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Ã…bn Scene" @@ -4459,6 +4545,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Anim klip:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Lydklip:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funktioner:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4705,6 +4806,11 @@ msgstr "Flyt Node(s)" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Overgang" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Overgang" @@ -4791,6 +4897,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 @@ -5054,6 +5165,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 "" @@ -5161,6 +5298,14 @@ 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 "" @@ -5170,6 +5315,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "Skalaforhold:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "Fjern vertikal guide" @@ -5245,6 +5395,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 "" @@ -5258,6 +5479,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "Vælg værktøj" @@ -5404,6 +5639,10 @@ 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 "" @@ -5549,7 +5788,7 @@ msgstr "Anim Indsæt Nøgle" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5902,11 +6141,26 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MaskeBibliotek..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6561,6 +6815,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 "" @@ -6694,10 +6965,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 "" @@ -6794,11 +7061,6 @@ msgid "Source" msgstr "Ressource" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Signaler" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6827,6 +7089,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7485,20 +7752,39 @@ msgstr "Opret Ny %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Opretter Maske ForhÃ¥ndsvisninger" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Opret Poly" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Opret Poly" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Opret Poly" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Opret Mappe" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Opret Mappe" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7581,6 +7867,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Fejler med at indlæse ressource." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7867,6 +8158,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7883,8 +8175,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Konstant" +#, fuzzy +msgid "Theme File" +msgstr "Ã…ben en Fil" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8002,6 +8295,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 "" @@ -8020,6 +8326,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" @@ -8257,6 +8596,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Opret Poly" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Opret Poly" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Opret Poly" @@ -8552,7 +8901,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9147,9 +9496,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9215,6 +9565,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 "" @@ -9261,6 +9620,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "Eksporter Projekt" @@ -9310,6 +9675,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Filer" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9365,6 +9735,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 "" @@ -9634,6 +10013,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9718,18 +10101,6 @@ msgid "Device" msgstr "Enhed" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt +" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -11008,10 +11379,6 @@ msgid "GDNative" msgstr "" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "trin argument er nul!" @@ -11154,6 +11521,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Slet valgte" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Ryd Markerede" @@ -11305,6 +11677,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 " @@ -11372,16 +11754,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" @@ -11432,10 +11804,6 @@ msgid "Add Preload Node" msgstr "Tilføj Preload Node" #: 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 "Tilføj Node(r) fra Tree" @@ -11517,7 +11885,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11559,6 +11927,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:" @@ -11765,28 +12148,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 "" @@ -11843,11 +12209,21 @@ msgstr "Kan ikke læse boot splash billed fil:\n" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Ugyldigt navn." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Ugyldigt index egenskabsnavn." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Ugyldigt index egenskabsnavn." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Ugyldig skriftstørrelse." @@ -12448,6 +12824,15 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstanter kan ikke ændres." +#~ msgid "Pause the scene" +#~ msgstr "Sæt scenen pÃ¥ pause" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt +" + #, fuzzy #~ msgid "Add input +" #~ msgstr "Tilføj punkt" @@ -12658,10 +13043,6 @@ msgstr "Konstanter kan ikke ændres." #~ msgstr "Zoom Ind" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Vis filer" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "Zoom Ind" @@ -12681,10 +13062,6 @@ msgstr "Konstanter kan ikke ændres." #~ msgstr "GUI Temaelementer:" #, fuzzy -#~ msgid "Property: " -#~ msgstr "Egenskaber" - -#, fuzzy #~ msgid "Toggle folder status as Favorite." #~ msgstr "Skift mappe status til Favorit" @@ -12841,9 +13218,6 @@ msgstr "Konstanter kan ikke ændres." #~ msgid "Replace By" #~ msgstr "Erstattes Af" -#~ msgid "Case Sensitive" -#~ msgstr "Forskel pÃ¥ smÃ¥ og store bogstaver" - #~ msgid "Backwards" #~ msgstr "Tilbage" diff --git a/editor/translations/de.po b/editor/translations/de.po index 8c4a29f571..706bab3fc3 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -1,6 +1,6 @@ # German translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Alexander Mahr <alex.mahr@gmail.com>, 2016, 2019. # Andreas Esau <andreasesau@gmail.com>, 2016. @@ -46,11 +46,13 @@ # Nicolas Mohr <81moni1bif@hft-stuttgart.de>, 2019. # 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-10-04 03:14+0000\n" +"PO-Revision-Date: 2019-12-23 17:07+0000\n" "Last-Translator: So Wieso <sowieso@dukun.de>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" @@ -59,7 +61,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 @@ -68,6 +70,10 @@ msgstr "" "Ungültiger Argument-Typ in convert()-Aufruf, TYPE_*-Konstanten benötigt." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Zeichenkette der Länge 1 erwartet (ein Zeichen)." + +#: 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." @@ -456,6 +462,10 @@ msgid "Not possible to add a new track without a root" msgstr "Ohne eine Wurzel kann keine neue Spur hinzugefügt werden" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Bezierspur hinzufügen" @@ -572,8 +582,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" @@ -674,9 +685,8 @@ msgid "Scale Ratio:" msgstr "Skalierungsverhältnis:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Zu kopierende Spuren auswählen:" +msgstr "Zu kopierende Spuren auswählen" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -688,9 +698,8 @@ msgid "Copy" msgstr "Kopieren" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Nichts auswählen" +msgstr "Alles/Nichts auswählen" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -761,6 +770,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 @@ -839,6 +852,10 @@ msgid "Extra Call Arguments:" msgstr "Zusätzliche Aufrufparameter:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Empfängermethode:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Erweitert" @@ -1016,7 +1033,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" @@ -1492,7 +1509,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" @@ -1743,6 +1761,10 @@ msgid "Erase Profile" msgstr "Profil löschen" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Godot-Funktionsprofil" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Profil(e) importieren" @@ -2018,6 +2040,15 @@ msgid "Search Help" msgstr "Hilfe durchsuchen" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Groß-/Kleinschreibung beachten" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Helfer anzeigen" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Alles anzeigen" @@ -2053,6 +2084,29 @@ msgstr "Mitgliedstyp" msgid "Class" msgstr "Klasse" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Methoden" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Signal" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Konstant" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Eigenschaft:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Motiv-Eigenschaften" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Eigenschaft:" @@ -2717,7 +2771,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" @@ -2755,7 +2810,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" @@ -2931,7 +2986,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" @@ -2946,8 +3001,8 @@ msgid "Play" msgstr "Starten" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Szene pausieren" +msgid "Pause the scene execution for debugging." +msgstr "Ausgeführte Szenen zum Debuggen anhalten." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3061,6 +3116,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Vorlagen aus ZIP-Datei importieren" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Vorlagenpaket" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Projekt exportieren" @@ -3117,6 +3176,10 @@ msgstr "Nächsten Editor öffnen" msgid "Open the previous Editor" msgstr "Vorigen Editor öffnen" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Warnung!" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Keine Unter-Ressourcen gefunden." @@ -3331,8 +3394,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." @@ -3438,6 +3501,15 @@ msgid "Importing:" msgstr "Importiere:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Fehler beim erstellen des Signaturobjekts." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3564,6 +3636,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" @@ -3641,6 +3717,10 @@ msgid "New Inherited Scene" msgstr "Neue geerbte Szene" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Als Hauptszene setzen" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Szenen öffnen" @@ -4374,6 +4454,18 @@ msgstr "" "nicht abgerufen werden." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Animationsausschnitt" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Audioausschnitt" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funktionen" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Node umbenannt" @@ -4604,6 +4696,11 @@ msgid "Move Node" msgstr "Node verschieben" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Übergänge" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Übergang hinzufügen" @@ -4688,6 +4785,10 @@ msgstr "End-Animation festlegen. Hilfreich bei Sub-Transitionen." msgid "Transition: " msgstr "Übergang: " +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "Abspielmodus:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4942,6 +5043,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" @@ -4963,7 +5088,7 @@ msgstr "Alle" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Keine Ergebnisse für \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5053,6 +5178,14 @@ msgid "Grid Step:" msgstr "Gitterabstand:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "Alle Hauptzeilen:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "Schritte" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Rotationsversatz:" @@ -5061,6 +5194,10 @@ msgid "Rotation Step:" msgstr "Rotationsabstand:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Skalierungsschritte:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Vertikale Hilfslinie verschieben" @@ -5133,6 +5270,74 @@ msgstr "" "ihre Ausmaße." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Oben links" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Oben rechts" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Unten rechts" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Unten links" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Mitte links" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Mitte oben" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Mitte rechts" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Mitte unten" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Mitte" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Links groß" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Oben groß" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Rechts groß" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Unten groß" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "VCenter groß" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "HCenter groß" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "Vollständiges Rechteck" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Skalierungsverhältnis beibehalten" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "nur Anker" @@ -5146,8 +5351,26 @@ msgstr "Ankerpunkte ändern" #: 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 "" +"Spielekamera überschreiben\n" +"Überschreibt die Spielekamera mit der Kamera des Anzeigefensters des Editors." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Spielekamera überschreiben\n" +"Es läuft keine Spielinstanz." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" -msgstr "Auswahl sperren" +msgstr "Sperren ausgewählt" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5263,24 +5486,20 @@ msgid "Ruler Mode" msgstr "Linealmodus" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Einrasten umschalten." +msgstr "Intelligentes Einrasten umschalten." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Einrasten aktivieren" +msgstr "Kluges Einrasten verwenden" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Einrasten umschalten." +msgstr "Gitter-Einrasten umschalten." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "Gitter-Einrasten" +msgstr "Gitter-Einrasten benutzen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5291,6 +5510,10 @@ msgid "Use Rotation Snap" msgstr "Rotationsraster benutzen" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "Einrasten verwenden" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Relatives Einrasten benutzen" @@ -5374,9 +5597,8 @@ msgid "View" msgstr "Ansicht" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Raster anzeigen" +msgstr "Raster immer anzeigen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5432,7 +5654,7 @@ msgstr "Schlüsselbilder einfügen (basierend auf Maske)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5643,9 +5865,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Umsch halten um Tangenten einzeln zu bearbeiten" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Rechtsklick: Punkt löschen" +msgstr "Rechtsklicken um Punkt hinzuzufügen" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5781,11 +6002,26 @@ msgstr "Erzeuge Umriss-Mesh" msgid "Outline Size:" msgstr "Umrissgröße:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Element %d entfernen?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Aus Szene aktualisieren" + +#: editor/plugins/mesh_library_editor_plugin.cpp +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" @@ -6422,6 +6658,25 @@ msgid "Save File As..." msgstr "Datei speichern als..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "Auszuführendes Skript kann nicht abgerufen werden." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "Skript-Neuladen fehlgeschlagen, Fehlermeldungen in Konsole beachten." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "Skript ist nicht im Werkzeugmodus, kann so nicht ausgeführt werden." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"Um dieses Skript auszuführen muss es von EditorScript erben und in den " +"Werkzeugmodus versetzt werden." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Motiv importieren" @@ -6548,10 +6803,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" @@ -6645,10 +6896,6 @@ msgid "Source" msgstr "Quelle" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Signal" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Ziel" @@ -6675,6 +6922,13 @@ msgid "Only resources from filesystem can be dropped." msgstr "Nur Ressourcen aus dem Dateisystem können hier fallen gelassen werden." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"Nodes können hier nicht fallen gelassen werden da Skript ‚%s‘ in dieser " +"Szene nicht genutzt wird." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Symbol nachschlagen" @@ -7107,9 +7361,8 @@ msgid "Freelook Speed Modifier" msgstr "Freisicht Geschwindigkeitsregler" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "Freisicht Geschwindigkeitsregler" +msgstr "Freisicht Trägheitsregler" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7322,18 +7575,37 @@ msgid "Create Mesh2D" msgstr "Mesh2D erzeugen" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Mesh-Vorschauen erzeugen" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Polygon2D erzeugen" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "CollisionPolygon2D erzeugen" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "CollisionPolygon2D erzeugen" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "LightOccluder2D erzeugen" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "LightOccluder2D erzeugen" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite ist leer!" @@ -7384,9 +7656,8 @@ msgid "Simplification: " msgstr "Vereinfachung: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Wachsen (Pixel): " +msgstr "Schrumpfen (Pixel): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7413,6 +7684,11 @@ msgid "Add Frame" msgstr "Frame hinzufügen" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Bild konnte nicht geladen werden:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "Fehler: Konnte Frame-Ressource nicht laden!" @@ -7686,6 +7962,7 @@ msgid "Data Type:" msgstr "Datentyp:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Symbol" @@ -7702,8 +7979,8 @@ msgid "Color" msgstr "Farbe" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Konstant" +msgid "Theme File" +msgstr "Motiv-Datei" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7816,6 +8093,18 @@ msgid "Merge from Scene" msgstr "Aus Szene zusammenführen" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "Neue Einzel-Kachel" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Neue Auto-Kachel" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Neuer Atlas" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Nächste Koordinate" @@ -7832,6 +8121,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Die vorherige Form oder Kachel auswählen." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "Bereich" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Kollision" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Verdeckung" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Navigation" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Bitmaske" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Priorität" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Z-Index" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Bereichsmodus" @@ -8061,6 +8378,16 @@ msgid "Edit Tile Z Index" msgstr "bearbeite Kachel Z Index" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Polygon konvex machen" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Polygon konkav machen" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Kollisionspolygon erzeugen" @@ -8176,9 +8503,8 @@ msgid "(GLES3 only)" msgstr "(Nur GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Ausgang hinzufügen +" +msgstr "Ausgang hinzufügen" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8193,9 +8519,8 @@ msgid "Boolean" msgstr "Boolean" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "Samples" +msgstr "Sampler" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8327,8 +8652,8 @@ msgid "Dodge operator." msgstr "Umgehungsoperator." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Hartlicht-Operator" +msgid "HardLight operator." +msgstr "Hartlichtoperator." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8970,11 +9295,12 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" -"Ein selbst-erstellter Ausdruck in der Godot-Shader-Sprache, welcher vor dem " +"Selbst-erstellter Ausdruck in der Godot-Shader-Sprache, welcher vor dem " "resultierten Shader platziert wird. Hier können beliebige " "Funktionsdefinitionen eingefügt werden die dann in späteren Ausdrücken " "verwendet werden können. Das gleiche gilt für Varyings, Uniforms und " @@ -9050,7 +9376,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?" @@ -9103,6 +9437,14 @@ msgid "Add..." msgstr "Hinzufügen..." #: 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 "" +"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" msgstr "Exportpfad" @@ -9116,7 +9458,7 @@ msgstr "Exportiere alle Ressourcen des Projekts" #: editor/project_export.cpp msgid "Export selected scenes (and dependencies)" -msgstr "Exportiere ausgewählte Ressourcen (inklusive Abhängigkeiten)" +msgstr "Exportiere ausgewählte Szenen (inklusive Abhängigkeiten)" #: editor/project_export.cpp msgid "Export selected resources (and dependencies)" @@ -9131,22 +9473,20 @@ msgid "Resources to export:" msgstr "Zu exportierende Ressourcen:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filter um Nicht-Ressourcendateien zu exportieren (durch Kommata getrennt, z." -"B.: *.json, *.txt)" +"Filter um Nicht-Ressourcendateien/-ordner zu exportieren\n" +"(durch Kommata getrennt, z.B.: *.json, *.txt, docs/*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filter um vom Export auszuschließen (durch Kommata getrennt, z.B.: *.json, *." -"txt)" +"Filter um Dateien/Ordner vom Projekt auszuschließen\n" +"(durch Kommata getrennt, z.B.: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9157,6 +9497,10 @@ msgid "Make Patch" msgstr "Erstelle Patch" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Pack-Datei" + +#: editor/project_export.cpp msgid "Features" msgstr "Funktionen" @@ -9208,6 +9552,14 @@ msgstr "Export-Modus?" msgid "Export All" msgstr "Alles exportieren" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "ZIP-Datei" + +#: 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 "Export-Templates für diese Systeme fehlen:" @@ -9515,6 +9867,10 @@ msgid "Projects" msgstr "Projekte" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Zuletzt bearbeitet" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Scannen" @@ -9600,18 +9956,6 @@ msgid "Device" msgstr "Gerät" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Umschalt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Steuerung+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Drücke eine Taste..." @@ -9681,7 +10025,7 @@ msgstr "Ereignis hinzufügen" #: editor/project_settings_editor.cpp msgid "Button" -msgstr "Taste, Knopf (Button)" +msgstr "Knopf" #: editor/project_settings_editor.cpp msgid "Left Button." @@ -10197,13 +10541,13 @@ msgstr "" "dieses Nodes wieder in ihren Ausgangszustand zurückgesetzt." #: 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 "" -"Wenn „Editierbare Instanz“ deaktiviert wird, werden alle Eigenschaften " -"dieses Nodes wieder in ihren Ausgangszustand zurückgesetzt." +"Das Aktivieren von „Als Platzhalter laden“ wird die Option „Bearbeitbare " +"Unterobjekte“ deaktivieren und alle so bereits bearbeiteten Werte des Nodes " +"auf ihre Standardwerte zurücksetzen." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10543,19 +10887,16 @@ msgid "Will load an existing script file." msgstr "Dies wird eine bestehende Skriptdatei laden." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Klassenname" +msgstr "Klassenname:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Vorlage" +msgstr "Vorlage:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Eingebettetes Skript" +msgstr "Eingebettetes Skript:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10858,10 +11199,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "Zeichenkette der Länge 1 erwartet (ein Zeichen)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "Schrittargument ist null!" @@ -11000,6 +11337,11 @@ msgid "Cursor Clear Rotation" msgstr "Rotation am Mauszeiger zurücksetzen" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Auswahl löschen" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Auswahl leeren" @@ -11150,6 +11492,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." @@ -11198,7 +11548,6 @@ msgid "Add Function" msgstr "Funktion hinzufügen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "Eingangsschnittstelle entfernen" @@ -11211,22 +11560,10 @@ msgid "Add Signal" msgstr "Signal hinzufügen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Input Port" -msgstr "Eingangsschnittstelle hinzufügen" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Ausgangsschnittstelle hinzufügen" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Eingangsschnittstelle entfernen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" msgstr "Ausgangsschnittstelle entfernen" @@ -11275,10 +11612,6 @@ msgid "Add Preload Node" msgstr "Preload-Node hinzufügen" #: 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 "Node(s) aus Szenenbaum hinzufügen" @@ -11287,6 +11620,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 "" +"Kann Eigenschaften nicht fallen lassen da Skript ‚%s‘ in dieser Szene nicht " +"genutzt wird.\n" +"Mittels gedrückter Umschalttaste kann zumindest die Signatur kopiert werden." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11313,9 +11649,8 @@ msgid "Connect Nodes" msgstr "Nodes verbinden" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Trenne Graph-Nodes" +msgstr "Getrennte Nodes" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11350,26 +11685,26 @@ msgid "Paste VisualScript Nodes" msgstr "VisualScript-Nodes einfügen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "Das Function-Node kann nicht kopiert werden." +msgstr "Funktion kann nicht mit einem Funktion-Node erstellt werden." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" +"Eine Nodes-Funktion kann nicht aus Nodes mehrerer Funktionen erstellt werden." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" +"Mindestens ein Node mit einer Sequenz-Schnittstelle muss ausgewählt werden." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Nur einen Sequenz-Eingang sollte ausgewählt sein." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Funktion umbenennen" +msgstr "Funktion erstellen" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11400,9 +11735,20 @@ 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 +msgid "Add Nodes..." +msgstr "Nodes hinzufügen…" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Funktion hinzufügen…" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" -msgstr "Funktion:" +msgstr "Funktionsname" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11426,14 +11772,12 @@ msgid "Cut Nodes" msgstr "Nodes trennen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Funktion umbenennen" +msgstr "Funktion bauen" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Aktualisieren" +msgstr "Graph aktualisieren" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11622,30 +11966,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." @@ -11660,7 +11984,7 @@ msgstr "Benötigtes Icon wurde nicht in der Vorlage festgelegt." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "HTTP Server Anhalten" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11695,10 +12019,18 @@ msgid "Using default boot splash image." msgstr "Verwende Standard-Startbildschirm-Bilddatei." #: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "Ungültiger Paketekurzname." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "Ungültiger paket-einzigartiger Name." #: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "Ungültiger Paket-Autor-Name." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "Ungültige Produkt-GUID." @@ -12377,6 +12709,34 @@ 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" + +#~ msgid "Shift+" +#~ msgstr "Umschalt+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Steuerung+" + #~ msgid "Snap to Grid" #~ msgstr "Am Gitter einrasten" @@ -13027,9 +13387,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" @@ -13156,9 +13513,6 @@ msgstr "Konstanten können nicht verändert werden." #~ msgid "Out-In" #~ msgstr "Raus-Rein" -#~ msgid "Transitions" -#~ msgstr "Übergänge" - #~ msgid "Change Anim Len" #~ msgstr "Animationslänge ändern" @@ -13368,9 +13722,6 @@ msgstr "Konstanten können nicht verändert werden." #~ msgid "Replace By" #~ msgstr "Ersetzen durch" -#~ msgid "Case Sensitive" -#~ msgstr "Groß-/Kleinschreibung beachten" - #~ msgid "Backwards" #~ msgstr "Rückwärts" @@ -13522,9 +13873,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" @@ -13833,9 +14181,6 @@ msgstr "Konstanten können nicht verändert werden." #~ msgid "Loading Image:" #~ msgstr "Lade Bild:" -#~ msgid "Couldn't load image:" -#~ msgstr "Bild konnte nicht geladen werden:" - #~ msgid "Converting Images" #~ msgstr "Bilder werden konvertiert" @@ -14012,9 +14357,6 @@ msgstr "Konstanten können nicht verändert werden." #~ "Die Zertifikat-Datei konnte nicht gelesen werden. Sind Pfad und Passwort " #~ "beide korrekt?" -#~ msgid "Error creating the signature object." -#~ msgstr "Fehler beim erstellen des Signaturobjekts." - #~ msgid "Error creating the package signature." #~ msgstr "Fehler beim erstellen der Paketsignatur." @@ -14115,9 +14457,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" @@ -14222,9 +14561,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 8498847001..8767ee664d 100644 --- a/editor/translations/de_CH.po +++ b/editor/translations/de_CH.po @@ -1,6 +1,6 @@ # Swiss High German translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # # Christian Fisch <christian.fiesel@gmail.com>, 2016. @@ -26,6 +26,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -428,6 +432,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -535,8 +543,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 +734,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 +819,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 +1002,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 +1477,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 +1731,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" @@ -1992,6 +2015,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -2027,6 +2058,28 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Script hinzufügen" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Node erstellen" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2653,7 +2706,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:" @@ -2870,7 +2924,7 @@ msgid "Play" msgstr "Abspielen" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2977,6 +3031,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 +3095,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." @@ -3353,6 +3416,15 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Fehler beim Schreiben des Projekts PCK!" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3483,6 +3555,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 "" @@ -3568,6 +3645,11 @@ msgstr "Script hinzufügen" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Neue Szene speichern als..." + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Datei(en) öffnen" @@ -4324,6 +4406,19 @@ msgid "" 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 +#, fuzzy +msgid "Functions" +msgstr "Node erstellen" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4571,6 +4666,11 @@ msgstr "Bild bewegen/einfügen" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Transition-Node" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Transition-Node" @@ -4657,6 +4757,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 @@ -4915,6 +5020,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 "" @@ -5020,6 +5149,14 @@ 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 "" @@ -5029,6 +5166,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "TimeScale-Node" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "Ungültige Bilder löschen" @@ -5105,6 +5247,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 "" @@ -5118,6 +5335,20 @@ 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 "" @@ -5261,6 +5492,10 @@ 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 "" @@ -5406,7 +5641,7 @@ msgstr "Bilder (innerhalb) einfügen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5761,11 +5996,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6423,6 +6672,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 "" @@ -6553,10 +6819,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 "" @@ -6650,11 +6912,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Script hinzufügen" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6680,6 +6937,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7332,21 +7594,39 @@ msgid "Create Mesh2D" msgstr "Node erstellen" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "Node erstellen" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Node erstellen" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Node erstellen" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Node erstellen" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Node erstellen" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7428,6 +7708,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Selektiere Node(s) zum Importieren aus" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7715,6 +8000,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7731,8 +8017,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "" +#, fuzzy +msgid "Theme File" +msgstr "Datei öffnen" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7850,6 +8137,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 "" @@ -7867,6 +8166,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" @@ -8104,6 +8437,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Node erstellen" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Node erstellen" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Node erstellen" @@ -8392,7 +8735,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8982,9 +9325,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9050,6 +9394,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 "" @@ -9095,6 +9448,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "Projekt exportieren" @@ -9146,6 +9505,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Datei(en) öffnen" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9201,6 +9565,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 "" @@ -9471,6 +9844,10 @@ msgid "Projects" msgstr "Projektname:" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9555,18 +9932,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Taste drücken..." @@ -10823,10 +11188,6 @@ 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 "" @@ -10967,6 +11328,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "Projekteinstellungen" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "Script hinzufügen" @@ -11114,6 +11480,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 "" @@ -11180,16 +11556,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" @@ -11243,10 +11609,6 @@ msgid "Add Preload Node" msgstr "Node" #: 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 #, fuzzy msgid "Add Node(s) From Tree" msgstr "Node von Szene" @@ -11335,7 +11697,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11378,6 +11740,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 "" @@ -11578,27 +11955,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 "" @@ -11649,11 +12009,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Projektname:" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Projektname:" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Projektname:" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Projektname:" @@ -12276,10 +12646,6 @@ msgstr "" #~ msgid "View log" #~ msgstr "Datei(en) öffnen" -#, fuzzy -#~ msgid "Raw Mode" -#~ msgstr "Node erstellen" - #~ msgid "Path to Node:" #~ msgstr "Pfad zum Node:" @@ -12414,10 +12780,6 @@ msgstr "" #~ msgid "Project Path (Must Exist):" #~ msgstr "Projektpfad (muss existieren):" -#, fuzzy -#~ msgid "Error creating the signature object." -#~ msgstr "Fehler beim Schreiben des Projekts PCK!" - #~ msgid "Node From Scene" #~ msgstr "Node von Szene" diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index 47ac024f4d..87e60cba52 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -1,6 +1,6 @@ # LANGUAGE translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. @@ -18,6 +18,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -400,6 +404,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -501,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 "" @@ -688,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 @@ -764,6 +777,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -935,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 "" @@ -1400,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 "" @@ -1640,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 "" @@ -1906,6 +1928,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1941,6 +1971,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2548,7 +2598,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 "" @@ -2756,7 +2807,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2859,6 +2910,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 +2970,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 "" @@ -3223,6 +3282,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3345,6 +3412,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 "" @@ -3421,6 +3492,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4130,6 +4205,18 @@ msgid "" 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 "" @@ -4360,6 +4447,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4439,6 +4530,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" @@ -4693,6 +4788,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 "" @@ -4796,6 +4915,14 @@ 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 "" @@ -4804,6 +4931,10 @@ 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 "" @@ -4872,6 +5003,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 "" @@ -4885,6 +5084,20 @@ 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 "" @@ -5019,6 +5232,10 @@ 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 "" @@ -5158,7 +5375,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5498,11 +5715,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6128,6 +6359,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 "" @@ -6254,10 +6502,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 "" @@ -6348,10 +6592,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6377,6 +6617,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7011,18 +7256,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7099,6 +7360,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7372,6 +7637,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7388,7 +7654,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7499,6 +7765,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 "" @@ -7515,6 +7793,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 "" @@ -7723,6 +8029,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -7985,7 +8299,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8572,9 +8886,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8638,6 +8953,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 "" @@ -8683,6 +9006,12 @@ 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 "" @@ -8731,6 +9060,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8782,6 +9115,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 "" @@ -9039,6 +9380,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9119,18 +9464,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10339,10 +10672,6 @@ 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 "" @@ -10479,6 +10808,10 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10621,6 +10954,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 "" @@ -10681,14 +11022,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 "" @@ -10737,10 +11070,6 @@ 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 "" @@ -10819,7 +11148,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10859,6 +11188,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 "" @@ -11055,27 +11396,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 "" @@ -11124,10 +11448,18 @@ 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 "" diff --git a/editor/translations/el.po b/editor/translations/el.po index 451a24bb00..ad5d375d49 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -1,15 +1,16 @@ # Greek translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # George Tsiamasiotis <gtsiam@windowslive.com>, 2017-2018, 2019. # Georgios Katsanakis <geo.elgeo@gmail.com>, 2019. # Overloaded <manoschool@yahoo.gr>, 2019. +# Eternal Death <eternaldeath0001@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-09-07 13:51+0000\n" +"PO-Revision-Date: 2019-12-25 12:45+0000\n" "Last-Translator: Overloaded <manoschool@yahoo.gr>\n" "Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/" "el/>\n" @@ -18,7 +19,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 @@ -27,6 +28,10 @@ msgstr "" "Μη ÎγκυÏη παÏάμετÏος στην convert(). ΧÏησιμοποιήστε τις σταθεÏÎÏ‚ TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -64,32 +69,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 +283,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" @@ -419,6 +423,10 @@ msgid "Not possible to add a new track without a root" msgstr "ΑδÏνατη η Ï€Ïοσθήκη ÎºÎ¿Î¼Î¼Î±Ï„Î¹Î¿Ï Ï‡Ï‰Ïίς Ïίζα" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Î Ïοσθήκη ÎºÎ¿Î¼Î¼Î±Ï„Î¹Î¿Ï Bezier" @@ -500,11 +508,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 +540,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 +643,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 +656,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 +696,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 +728,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 +810,10 @@ msgid "Extra Call Arguments:" msgstr "ΕπιπλÎον παÏάμετÏοι κλήσης:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "ΜÎθοδος ΔÎκτη:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Για Î ÏοχωÏημÎνους" @@ -982,7 +993,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 +1194,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 +1263,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 +1466,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 +1717,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 "Εισαγωγή Î Ïοφίλ" @@ -1907,9 +1921,8 @@ msgid "Inherited by:" msgstr "ΚληÏονομείται από:" #: editor/editor_help.cpp -#, fuzzy msgid "Brief Description" -msgstr "ΣÏντομη πεÏιγÏαφή:" +msgstr "ΣÏντομη ΠεÏιγÏαφή" #: editor/editor_help.cpp msgid "Properties" @@ -1940,9 +1953,8 @@ msgid "Class Description" msgstr "ΠεÏιγÏαφή κλάσης" #: editor/editor_help.cpp -#, fuzzy msgid "Online Tutorials" -msgstr "Online Tutorial:" +msgstr "Διαδικτυακή Εκμάθηση" #: editor/editor_help.cpp msgid "" @@ -1984,6 +1996,15 @@ msgid "Search Help" msgstr "Αναζήτηση βοήθειας" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "ΔιάκÏιση πεζών-κεφαλαίων" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Εμφάνιση Βοηθών" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Εμφάνιση όλων" @@ -2019,13 +2040,36 @@ msgstr "Είδος μÎλους" msgid "Class" msgstr "Κλάση" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "ΣυναÏτήσεις" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Σήμα" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "ΣταθεÏή" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Ιδιότητα:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Ιδιότητες θÎματος" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Ιδιότητα:" #: editor/editor_inspector.cpp msgid "Set" -msgstr "ÎŒÏισε" +msgstr "ΟÏισμός" #: editor/editor_inspector.cpp msgid "Set Multiple:" @@ -2065,7 +2109,7 @@ msgstr "Εκκινιση" #: editor/editor_network_profiler.cpp msgid "%s/s" -msgstr "" +msgstr "%s/δευτ." #: editor/editor_network_profiler.cpp msgid "Down" @@ -2081,19 +2125,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 +2729,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 +2767,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 +2872,8 @@ msgid "Editor" msgstr "ΕπεξεÏγαστής" #: editor/editor_node.cpp -#, fuzzy msgid "Editor Settings..." -msgstr "Ρυθμίσεις επεξεÏγαστή" +msgstr "Ρυθμίσεις ΕπεξεÏγαστή..." #: editor/editor_node.cpp msgid "Editor Layout" @@ -2871,14 +2910,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" @@ -2923,8 +2960,8 @@ msgid "Play" msgstr "ΑναπαÏαγωγή" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "ΠαÏση της σκηνής" +msgid "Pause the scene execution for debugging." +msgstr "ΠαÏση εκτÎλεσης σκηνής για αποσφαλμάτωση." #: editor/editor_node.cpp msgid "Pause Scene" @@ -2998,7 +3035,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 +3052,35 @@ 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 +msgid "Template Package" +msgstr "ΠακÎτο Î ÏοτÏπων" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Εξαγωγή ÎÏγου" @@ -3088,10 +3137,13 @@ msgstr "Άνοιγμα του επόμενου επεξεÏγαστή" msgid "Open the previous Editor" msgstr "Άνοιγμα του Ï€ÏοηγοÏμενου επεξεÏγαστή" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Î Ïοειδοποίηση!" + #: editor/editor_path.cpp -#, fuzzy msgid "No sub-resources found." -msgstr "Δεν οÏίστηκε πηγαία επιφάνεια." +msgstr "Δεν βÏÎθηκαν υπό-πόÏοι." #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" @@ -3102,9 +3154,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 +3415,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)" @@ -3411,6 +3460,15 @@ msgid "Importing:" msgstr "Εισαγωγή:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Σφάλμα κατά τη δημιουÏγία της υπογÏαφής του αντικειμÎνου." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3451,23 +3509,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 +3572,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 +3595,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,6 +3679,10 @@ msgid "New Inherited Scene" msgstr "ÎÎα ΚληÏονομημÎνη Σκηνή" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "ΟÏισμός Ως ΚÏÏια Σκηνή" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Άνοιγμα Σκηνών" @@ -3656,9 +3719,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..." @@ -3726,9 +3788,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" @@ -3808,23 +3869,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 @@ -3840,9 +3898,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" @@ -3944,9 +4001,8 @@ msgid "Import As:" msgstr "Εισαγωγή ÏŽÏ‚:" #: editor/import_dock.cpp -#, fuzzy msgid "Preset" -msgstr "ΔιαμοÏφώσεις" +msgstr "Î ÏοÏÏθμιση" #: editor/import_dock.cpp msgid "Reimport" @@ -4052,9 +4108,10 @@ msgid "MultiNode Set" msgstr "Σετ πολλαπλών κόμβων" #: editor/node_dock.cpp -#, fuzzy msgid "Select a single node to edit its signals and groups." -msgstr "ΕπιλÎξτε Îνα κόμβο για να επεξεÏγαστείτε τα σήματα και τις ομάδες." +msgstr "" +"ΕπιλÎξτε Îναν μοναδικό κόμβο για να επεξεÏγαστείτε τα σήματα και τις ομάδες " +"του." #: editor/plugin_config_dialog.cpp msgid "Edit a Plugin" @@ -4358,6 +4415,18 @@ 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 "Μετονομασία Κόμβου" @@ -4588,6 +4657,11 @@ msgid "Move Node" msgstr "Μετακίνηση Κόμβου" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Μετάβαση: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Î Ïοσθήκη Μετάβασης" @@ -4672,6 +4746,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" @@ -4842,14 +4920,12 @@ msgid "Request failed, return code:" msgstr "Το αίτημα απÎτυχε, κώδικας επιστÏοφής:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed." msgstr "Το αίτημα απÎτυχε." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Cannot save response to:" -msgstr "Δεν ήταν δυνατή η αποθήκευση θÎματος σε αÏχείο:" +msgstr "Δεν είναι εφικτή η αποθήκευση απάντησης σε:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." @@ -4857,27 +4933,24 @@ msgstr "Σφάλμα κατά την εγγÏαφή." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" -msgstr "Το αίτημα απÎτυχε, πάÏα πολλÎÏ‚ ανακατευθήνσεις" +msgstr "Το αίτημα απÎτυχε, πάÏα πολλÎÏ‚ ανακατευθÏνσεις" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Redirect loop." -msgstr "Î’Ïόχος ανακατευθήνσεων." +msgstr "Î’Ïόχος ανακατευθÏνσεων." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed, timeout" -msgstr "Το αίτημα απÎτυχε, κώδικας επιστÏοφής:" +msgstr "Το αίτημα απÎτυχε, λήξη χÏÎ¿Î½Î¹ÎºÎ¿Ï Î¿Ïίου" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "ΧÏόνος" +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:" @@ -4929,7 +5002,31 @@ 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" @@ -4953,17 +5050,15 @@ msgstr "Όλα" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "ΚανÎνα αποτÎλεσμα για \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "Εκ νÎου εισαγωγή..." +msgstr "Εισαγωγή..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Plugins..." -msgstr "Î Ïόσθετα" +msgstr "Î Ïόσθετα..." #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" @@ -4979,9 +5074,8 @@ msgid "Site:" msgstr "ΔιεÏθυνση:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support" -msgstr "ΥποστήÏιξη..." +msgstr "ΥποστήÏιξη" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" @@ -4989,16 +5083,15 @@ msgstr "Επίσημα" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "Δοκιμιμαστικά" +msgstr "Δοκιμαστικά" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Loading..." -msgstr "ΦόÏτωσε..." +msgstr "ΦόÏτωση..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "ΑÏχείο ZIP των Asset" +msgstr "ΑÏχείο ZIP των Στοιχείων" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -5006,28 +5099,29 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" -"Δεν ήταν δυνατός ο Ï€ÏοσδιοÏισμός διαδÏομής για την αποθήκευση των χαÏτών " -"φωτός.\n" -"ΑποθηκεÏστε την σκηνή σας (για να αποθηκευτοÏν οι εικόνες στον ίδιο " -"κατάλογο), ή επιλÎξτε μία διαδÏομή από τις ιδιότητες του BakedLightMap." +"Δεν ήταν δυνατός ο Ï€ÏοσδιοÏισμός διαδÏομής αποθήκευσης για εικόνες " +"lightmap.\n" +"ΑποθηκεÏστε τη σκηνή σας (ώστε οι εικόνες να αποθηκευτοÏν στον ίδιο " +"κατάλογο), ή επιλÎξτε μία διαδÏομή αποθήκευσης από τις ιδιότητες του " +"BakedLightMap." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake " "Light' flag is on." msgstr "" -"Δεν υπάÏχουν πλÎγματα για Ï€Ïοετοιμασία. ΣιγουÏευτείτε πως πεÏιÎχουν κανάλι " +"Δεν υπάÏχουν πλÎγματα για Ï€Ïοετοιμασία. ΣιγουÏευτείτε ότι εμπεÏιÎχουν κανάλι " "UV2 και πως η σημαία 'Bake Light' είναι ενεÏγοποιημÎνη." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" -"ΑπÎτυχε η δημιουÏγία του χάÏτη φψτός, σιγουÏευτείτε ότι η διαδÏομή είναι " -"εγγÏάψιμη." +"ΑπÎτυχε η δημιουÏγία της εικόνας lightmap, σιγουÏευτείτε ότι η διαδÏομή " +"είναι εγγÏάψιμη." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" -msgstr "Î ÏοεπεξεÏγασία χαÏτών φωτός" +msgstr "Î Ïοετοιμασία Lightmaps" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/rename_dialog.cpp @@ -5036,23 +5130,35 @@ msgstr "Î Ïοεπισκόπηση" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "Î ÏοσαÏμογή Ï€Ïοσκόλλησης" +msgstr "Î ÏοσαÏμογή Î Ïοσκόλλησης" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Offset:" -msgstr "Μετατόπιση πλÎγατος:" +msgstr "Μετατόπιση ΠλÎγματος:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Step:" -msgstr "Βήμα πλÎγματος:" +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 "Μετατόπιση πεÏιστÏοφής:" +msgstr "Μετατόπιση ΠεÏιστÏοφής:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Step:" -msgstr "Βήμα πεÏιστÏοφής:" +msgstr "Βήμα ΠεÏιστÏοφής:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Βήμα Κλιμάκωσης:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" @@ -5111,65 +5217,151 @@ msgid "" "Children of containers have their anchors and margins values overridden by " "their parent." msgstr "" -"Στα παιδιά Container, οι άγκυÏες και τα πεÏιθώÏια αντικαθίστανται από τον " -"γονÎα τους." +"Τα παιδιά των δοχείων, Îχουν τις άγκυÏες και τα πεÏιθώÏια τους " +"αντικατεστημÎνα από τον γονÎα τους." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Presets for the anchors and margins values of a Control node." -msgstr "ΔιαμοÏφώσεις για τις άγκυÏες και τα πεÏιθώÏια ενός κόμβου Control." +msgstr "Î ÏοÏυθμίσεις για τις άγκυÏες και τιμÎÏ‚ πεÏιθωÏίων ενός κόμβου Control." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." msgstr "" -"Όταν είναι ενεÏγό, η μετακίνηση των Control αλλάζει τις άγκυÏες, αντί για τα " -"πεÏιθώÏια τους." +"Όταν ενεÏγό, η μετακίνηση των κόμβων 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" -msgstr "Αλλαγή αγκÏÏων και πεÏιθωÏίων" +msgstr "Αλλαγή ΑγκυÏών και ΠεÏιθωÏίων" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change Anchors" -msgstr "Αλλαγή αγκυÏών" +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 "" +"Αντικατάσταση ΚάμεÏας ΠαιχνιδιοÏ\n" +"Αντικαθιστά την κάμεÏα Ï€Î±Î¹Ï‡Î½Î¹Î´Î¹Î¿Ï Î¼Îµ την κάμεÏα του επεξεÏγαστή οπτικής " +"γωνίας." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Αντικατάσταση ΚάμεÏας ΠαιχνιδιοÏ\n" +"Δεν Ï„ÏÎχει κανÎνα πεÏιστατικό παιχνιδιοÏ." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" -msgstr "Κλείδωμα Επιλογής" +msgstr "Κλείδωσε το ΕπιλεγμÎνο" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Unlock Selected" -msgstr "Ξεκλείδωμα Επιλογής" +msgstr "Ξεκλείδωσε το ΕπιλεγμÎνο" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Group Selected" -msgstr "Ομαδοποίηση Επιλογής" +msgstr "Ομαδοποίησε το ΕπιλεγμÎνο" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Ungroup Selected" -msgstr "Απομαδοποίηση Επιλογής" +msgstr "Απομαδοποίησε το ΕπιλεγμÎνο" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" -msgstr "Επικόληση στάσης" +msgstr "Επικόλληση Στάσης" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Guides" -msgstr "ΕκκαθάÏιση Οστών" +msgstr "ΕκκαθάÏιση Οδηγών" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Custom Bone(s) from Node(s)" -msgstr "ΔημιουÏγία Î ÏοσαÏμοσμÎνων Οστών από Κόμβους" +msgstr "ΔημιουÏγία Î ÏοσαÏμοσμÎνου(ων) ΟστοÏ(ών) από Κόμβο(ους)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" @@ -5177,19 +5369,19 @@ msgstr "ΕκκαθάÏιση Οστών" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" -msgstr "ΔημιουÏγία αλυσίδας IK" +msgstr "ΔημιουÏγία Αλυσίδας IK" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" -msgstr "ΕκκαθάÏιση αλυσίδας IK" +msgstr "ΕκκαθάÏιση Αλυσίδας IK" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." msgstr "" -"Î Ïοσοχή: Στα παιδιά Container, η θÎση και το μÎγεθος οÏίζονται μόνο απο τον " -"γονÎα τους." +"Î Ïοειδοποίηση: Τα παιδιά ενός δοχείου, παίÏνουν τη θÎση και το μÎγεθος " +"καθοÏισμÎνα μόνο από τον γονÎα τους." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -5200,7 +5392,7 @@ msgstr "ΕπαναφοÏά ΜεγÎθυνσης" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Select Mode" -msgstr "Επιλογή λειτουÏγίας" +msgstr "Επιλογή ΛειτουÏγίας" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -5213,21 +5405,22 @@ msgstr "Alt + ΣÏÏσιμο: Μετακίνηση" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." msgstr "" -"Πατήστε 'v' για να αλλάξετε το πηγαίο σημείο, ή 'Shift+v' για το να σÏÏετε." +"Πατήστε '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 msgid "Move Mode" -msgstr "ΛειτουÏγία μετακίνησης" +msgstr "ΛειτουÏγία Μετακίνησης" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Mode" -msgstr "ΛειτουÏγία πεÏιστÏοφής" +msgstr "ΛειτουÏγία ΠεÏιστÏοφής" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5240,8 +5433,8 @@ msgid "" "Show a list of all objects at the position clicked\n" "(same as Alt+RMB in select mode)." msgstr "" -"Εμφάνιση λίστας όλων των αντικειμÎνων στην θÎση που κάνετε κλικ\n" -"(Το ίδιο με Alt+Δεξί κλικ στην λειτουÏγία επιλογής)." +"Εμφάνιση λίστας όλων των αντικειμÎνων στην θÎση που κάνατε κλικ\n" +"(Το ίδιο με Alt+Δεξί Κλικ Î Î¿Î½Ï„Î¹ÎºÎ¹Î¿Ï ÏƒÏ„Î·Î½ λειτουÏγία επιλογής)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." @@ -5250,101 +5443,101 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" -msgstr "ΛειτουÏγία Μετακίνησης κάμεÏας" +msgstr "ΛειτουÏγία Μετακίνησης ΚάμεÏας" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Ruler Mode" -msgstr "ΛειτουÏγία εκτÎλεσης:" +msgstr "ΛειτουÏγία ΧάÏακα" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Εναλλαγή κουμπώματος." +msgstr "ΕνεÏγοποίηση Îξυπνης Ï€Ïοσκόλλησης." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "ΧÏήση κουμπώματος" +msgstr "ΧÏήση Έξυπνης Î Ïοσκόλλησης" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Εναλλαγή κουμπώματος." +msgstr "ΕνεÏγοποίηση Ï€Ïοσκόλλησης πλÎγματος." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "ΚοÏμπωμα στο πλÎγμα" +msgstr "ΧÏήση Î Ïοσκόλλησης ΠλÎγματος" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" -msgstr "ΕπιλογÎÏ‚ κουμπώματος" +msgstr "ΕπιλογÎÏ‚ Î Ïοσκόλλησης" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" -msgstr "ΧÏήση κουμπώματος πεÏιστÏοφής" +msgstr "ΧÏήση Î Ïοσκόλλησης ΠεÏιστÏοφής" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "ΧÏήση Κλιμακωτής Î Ïοσκόλλησης" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "Σχετικό κοÏμπωμα" +msgstr "Σχετική Î Ïοσκόλληση" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "ΧÏήση κουμπώματος εικονοστοιχείου" +msgstr "ΧÏήση Î Ïοσκόλλησης Εικονοστοιχείου" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Smart Snapping" -msgstr "Έξυπνο ΚοÏμπωμα" +msgstr "Έξυπνη Î Ïοσκόλληση" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap..." -msgstr "ΔιαμόÏφωση κουμπώματος..." +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" -msgstr "ΚοÏμπωμα σε ΆγκυÏα Κόμβου" +msgstr "Î Ïοσκόλληση σε ΆγκυÏα Κόμβου" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Node Sides" -msgstr "ΚοÏμπωμα σε ΆκÏα Κόμβου" +msgstr "Î Ïοσκόλληση σε ΠλευÏÎÏ‚ Κόμβου" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Node Center" -msgstr "ΚοÏμπωμα σε ΚÎντÏο Κόμβου" +msgstr "Î Ïοσκόλληση σε ΚÎντÏο Κόμβου" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Other Nodes" -msgstr "ΚοÏμπωμα σε Άλλους Κόμβους" +msgstr "Î Ïοσκόλληση σε Άλλους Κόμβους" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Guides" -msgstr "ΚοÏμπωμα σε ΟδηγοÏÏ‚" +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 "Κλείδωμα του επιλεγμÎνου αντικείμÎνου (Δεν μποÏεί να μετακινηθεί)." +msgstr "" +"Κλείδωμα του επιλεγμÎνου αντικειμÎνου σε θÎση (δεν μποÏεί να μετακινηθεί)." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Unlock the selected object (can be moved)." -msgstr "Ξεκλείδωμα του επιλεγμÎνου αντικείμÎνου (ΜποÏεί να μετακινηθεί)." +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 "ΣιγουÏεÏεται ότι τα παιδιά του αντικειμÎνου δεν μποÏοÏν να επιλεχθοÏν." +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 "ΕπαναφÎÏει την δυνατότητα των παιδιών του αντικειμÎνου να επιλεγοÏν." +msgstr "ΕπαναφÎÏει τη δυνατότητα των παιδιών του αντικειμÎνου να επιλεχθοÏν." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton Options" @@ -5352,57 +5545,56 @@ msgstr "ΕπιλογÎÏ‚ ΣκελετοÏ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" -msgstr "Εμφάνιση οστών" +msgstr "Εμφάνιση Οστών" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Custom Bone(s) from Node(s)" -msgstr "ΔημιουÏγία Ï€ÏοσαÏμοσμÎνων οστών απο κόμβους" +msgstr "ΔημιουÏγία Î ÏοσαÏμοσμÎνου(ων) ΟστοÏ(ών) από Κόμβο(ους)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Custom Bones" -msgstr "ΕκκαθάÏιση Ï€ÏοσαÏμοσμÎνων οστών" +msgstr "ΕκκαθάÏιση Î ÏοσαÏμοσμÎνων Οστών" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "View" -msgstr "ΚάμεÏα" +msgstr "ΘÎα" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Εμφάνιση πλÎγματος" +msgstr "Πάντα Εμφάνιση ΠλÎγματος" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "Εμφάνιση βοηθών" +msgstr "Εμφάνιση Βοηθών" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" -msgstr "Εμφάνιση χαÏάκων" +msgstr "Εμφάνιση ΧαÏάκων" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "Εμφάνιση οδηγών" +msgstr "Εμφάνιση Οδηγών" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" -msgstr "Î Ïοβολή πηγής" +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" -msgstr "ΚεντÏάÏισμα επιλογής" +msgstr "ΚεντÏάÏισμα Επιλογής" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Frame Selection" -msgstr "Πλαισίωμα επιλογής" +msgstr "ΚαÏΠΕπιλογής" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Preview Canvas Scale" @@ -5410,15 +5602,15 @@ msgstr "Î Ïοεπισκόπηση Κλιμάκωσης Καμβά" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Translation mask for inserting keys." -msgstr "Μάσκα μετατόπισης για εισαγωγή κλειδιών." +msgstr "Μάσκα μεταγλώττισης για εισαγόμενα κλειδιά." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation mask for inserting keys." -msgstr "Μάσκα πεÏιστÏοφής για εισαγωγή κλειδιών." +msgstr "Μάσκα πεÏιστÏοφής για εισαγόμενα κλειδιά." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale mask for inserting keys." -msgstr "Μάσκα κλιμάκωσης για εισαγωγή κλειδιών." +msgstr "Μάσκα κλιμάκωσης για εισαγόμενα κλειδιά." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert keys (based on mask)." @@ -5426,14 +5618,14 @@ msgstr "Εισαγωγή κλειδιών (βάση μάσκας)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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 "" -"Αυτόματη εισαγωγή κλειδιών κατά την μετατόπιση, πεÏιστÏοφή ή κλιμάκωση " -"αντικειμÎνων (βάση μάσκας).\n" -"Τα κλειδιά Ï€Ïοστίθενται μόνο σε υπαÏκτά κομμάτια, οπότε δεν θα δημιουÏγηθοÏν " +"Αυτόματη εισαγωγή κλειδιών όταν τα αντικείμενα μεταγλωττίζονται, " +"πεÏιστÏÎφονται ή κλιμακώνονται (βάση μάσκας).\n" +"Τα κλειδιά Ï€Ïοστίθενται μόνο σε υπαÏκτά κομμάτια, δεν θα δημιουÏγηθοÏν " "καινοÏÏγια.\n" "Τα κλειδιά Ï€ÏÎπει να Ï€ÏοστεθοÏν χειÏοκίνητα την Ï€Ïώτη φοÏά." @@ -5443,19 +5635,19 @@ msgstr "Αυτόματη Εισαγωγή ΚλειδιοÏ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "Εισαγωγή ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï (ΥπαÏκτά κομμάτια)" +msgstr "Εισαγωγή ÎšÎ»ÎµÎ¹Î´Î¹Î¿Ï (ΥπαÏκτά κομμάτια)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" -msgstr "ΑντιγÏαφή στάσης" +msgstr "ΑντιγÏαφή Στάσης" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" -msgstr "ΕκκαθάÏιση στάσης" +msgstr "ΕκκαθάÏιση Στάσης" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" -msgstr "Πολλαπλασιαμός βήματος πλÎγματος με 2" +msgstr "Πολλαπλασιασμός βήματος πλÎγματος με 2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Divide grid step by 2" @@ -5637,9 +5829,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Πατήστε το Shift για να επεξεÏγαστείτε εφαπτομÎνες μεμονωμÎνα" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Δεξί κλικ: ΔιαγÏαφή σημείου" +msgstr "Δεξί κλικ για Ï€Ïόσθεση σημείου" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5774,11 +5965,26 @@ msgstr "ΔημιουÏγία πλÎγματος πεÏιγÏάμματος" msgid "Outline Size:" msgstr "ΜÎγεθος πεÏιγÏάμματος:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "ΑφαίÏεση του στοιχείου %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "ΑναπÏοσαÏμογή από την σκηνή" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "Βιβλιοθήκη Πλεγμάτων" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Î Ïοσθήκη στοιχείου" @@ -5919,29 +6125,24 @@ msgid "Generation Time (sec):" msgstr "ΧÏόνος παÏαγωγής (sec):" #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "The geometry's faces don't contain any area." msgstr "Οι όψεις της γεωμετÏίας δεν πεÏιÎχουν καμία πεÏιοχή." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "The geometry doesn't contain any faces." -msgstr "Ο κόμβος δεν πεÏιÎχει γεωμετÏία (Επιφάνειες)." +msgstr "Η γεωμετÏία δεν πεÏιÎχει καθόλου όψεις." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "\"%s\" doesn't inherit from Spatial." -msgstr "Το \"%s\" δεν κληÏονομείται από το Spatial." +msgstr "Το \"%s\" δεν κληÏονομεί από το Spatial." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "\"%s\" doesn't contain geometry." -msgstr "Ο κόμβος δεν πεÏιÎχει γεωμετÏία." +msgstr "\"%s\" δεν πεÏιÎχει γεωμετÏία." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "\"%s\" doesn't contain face geometry." -msgstr "Ο κόμβος δεν πεÏιÎχει γεωμετÏία." +msgstr "\"%s\" δεν πεÏιÎχει γεωμετÏική όψη." #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" @@ -6385,9 +6586,8 @@ msgid "Error writing TextFile:" msgstr "Σφάλμα εγγÏαφής TextFile:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Could not load file at:" -msgstr "Δεν ήταν δυνατή η εÏÏεση πλακιδίου:" +msgstr "Δεν μπόÏεσε να φοÏτωθεί το αÏχείο σε:" #: editor/plugins/script_editor_plugin.cpp msgid "Error saving file!" @@ -6410,9 +6610,8 @@ msgid "Error Importing" msgstr "Σφάλμα εισαγωγής" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New Text File..." -msgstr "ÎÎο TextFile..." +msgstr "ÎÎο ΑÏχείο ΚειμÎνου..." #: editor/plugins/script_editor_plugin.cpp msgid "Open File" @@ -6423,6 +6622,29 @@ 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 "" +"Για να Ï„ÏÎξετε αυτή τη δÎσμη ενεÏγειών, θα Ï€ÏÎπει να κληÏονομήσει τον " +"ΕπεξεÏγαστή ΔÎσμης ΕνεÏγειών (EditorScript) και να Ïυθμιστεί σε λειτουÏγία " +"εÏγαλείων." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Εισαγωγή θÎματος" @@ -6497,9 +6719,8 @@ msgid "Open..." msgstr "Άνοιγμα..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Reopen Closed Script" -msgstr "Άνοιγμα ΔÎσμης ΕνεÏγειών" +msgstr "Ξανανοίξτε Κλειστή ΔÎσμη ΕνεÏγειών" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" @@ -6550,10 +6771,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 "Βήμα μÎσα" @@ -6634,9 +6851,8 @@ msgid "Search Results" msgstr "ΑποτελÎσματα Αναζήτησης" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Clear Recent Scripts" -msgstr "ΕκκαθάÏιση Ï€Ïόσφατων σκηνών" +msgstr "ΕκκαθάÏιση Î Ïόσφατων Δεσμών ΕνεÏγειών" #: editor/plugins/script_text_editor.cpp msgid "Connections to method:" @@ -6647,10 +6863,6 @@ msgid "Source" msgstr "Πηγή" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Σήμα" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Στόχος" @@ -6678,6 +6890,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "Μόνο οι πόÏοι από το σÏστημα αÏχείων μποÏοÏν να διαγÏαφοÏν." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Αναζήτηση Συμβόλου" @@ -6766,9 +6983,8 @@ msgid "Complete Symbol" msgstr "ΣυμπλήÏωση συμβόλου" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Evaluate Selection" -msgstr "ΜεγÎθυνση επιλογής" +msgstr "Εκτίμηση Επιλογής" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" @@ -7075,9 +7291,8 @@ msgid "Audio Listener" msgstr "ΑκÏοατής ήχου" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Enable Doppler" -msgstr "ΕνεÏγοποίηση ΦίλτÏου" +msgstr "ΕνεÏγοποίηση Doppler" #: editor/plugins/spatial_editor_plugin.cpp msgid "Cinematic Preview" @@ -7112,9 +7327,8 @@ msgid "Freelook Speed Modifier" msgstr "ΤαχÏτητα ελεÏθεÏου κοιτάγματος" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "ΤαχÏτητα ελεÏθεÏου κοιτάγματος" +msgstr "ΑÏγός ΤÏοποποιητής ΕλεÏθεÏου Κοιτάγματος" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7140,6 +7354,7 @@ 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 "" @@ -7152,9 +7367,8 @@ msgstr "" "Alt + Δεξί κλικ: Επιλογή λίστας βάθους" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Use Local Space" -msgstr "ΛειτουÏγία Ï„Î¿Ï€Î¹ÎºÎ¿Ï Ï‡ÏŽÏου (%s)" +msgstr "ΧÏησιμοποιείστε Τοπικό ΧώÏο" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" @@ -7255,9 +7469,8 @@ msgstr "Î Ïοβολή πλÎγματος" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Settings..." -msgstr "Ρυθμίσεις" +msgstr "Ρυθμίσεις..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -7328,18 +7541,37 @@ msgid "Create Mesh2D" msgstr "ΔημιουÏγία Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "ΔημιουÏγία Ï€Ïοεπισκοπήσεων πλεγμάτων" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "ΔημιουÏγία Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "ΔημιουÏγία CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "ΔημιουÏγία CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "ΔημιουÏγία LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "ΔημιουÏγία LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Το Sprite είναι άδειο!" @@ -7388,9 +7620,8 @@ msgid "Simplification: " msgstr "Απλοποίηση: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "ΑÏξηση (Εικονοστοιχεία): " +msgstr "ΣμίκÏυνση (Εικονοστοιχεία): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7417,6 +7648,11 @@ msgid "Add Frame" msgstr "Î Ïοσθήκη καÏÎ" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Δεν ήταν δυνατή η φόÏτωση της εικόνας:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "ΣΦΑΛΜΑ: Δεν ήταν δυνατή η φόÏτωση πόÏου Ï„Ïπου καÏÎ!" @@ -7441,9 +7677,8 @@ msgid "(empty)" msgstr "(άδειο)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Move Frame" -msgstr "Επικόλληση καÏÎ" +msgstr "Μετακίνηση ΚαÏÎ" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animations:" @@ -7643,14 +7878,12 @@ msgid "Submenu" msgstr "Υπό-ΜενοÏ" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 1" -msgstr "Στοιχείο 1" +msgstr "Υποαντικείμενο 1" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 2" -msgstr "Στοιχείο 2" +msgstr "Υποαντικείμενο 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" @@ -7693,6 +7926,7 @@ msgid "Data Type:" msgstr "ΤÏπος δεδομÎνων:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Εικονίδιο" @@ -7709,8 +7943,8 @@ msgid "Color" msgstr "ΧÏώμα" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "ΣταθεÏή" +msgid "Theme File" +msgstr "ΘÎμα ΑÏχείου" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7762,26 +7996,26 @@ msgid "Enable Priority" msgstr "ΕπεξεÏγασία Î ÏοτεÏαιότητας" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Filter tiles" -msgstr "ΦιλτÏάÏισμα αÏχείων..." +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 -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Ctrl+LMB: Rectangle Paint" msgstr "" -"Shift+Δεξί Κλικ: ΖωγÏάφισμα ΓÏαμμής\n" -"Shift+Ctrl+Δεξί Κλικ: ΖωγÏάφισμα ΟÏθογωνίου" +"Shift+ΑÏιστεÏÏŒ Κλικ ΠοντικιοÏ: Σχεδίαση ΓÏαμμής\n" +"Shift+Ctrl+ΑÏιστεÏÏŒ Κλικ ΠοντικιοÏ: ΖωγÏαφιά ΟÏθογωνίου ΠαÏαλληλογÏάμμου" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" @@ -7824,6 +8058,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 "Επόμενη ΣυντεταγμÎνη" @@ -7840,6 +8086,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 "Μάσκα Bit" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Î ÏοτεÏαιότητα" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Δείκτης Z" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "ΛειτουÏγία ΠεÏιοχής" @@ -7909,6 +8183,8 @@ msgstr "ΑπενεÏγοποίηση Ονομάτων Πλακιδίων (ΚÏα 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." @@ -8065,6 +8341,16 @@ msgid "Edit Tile Z Index" msgstr "Αλλαγή Δείκτη Z Πλακιδίου" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "ΜετατÏοπή Πολυγώνου σε ΚυÏτό" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "ΜετατÏοπή Πολυγώνου σε Κοίλο" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "ΔημιουÏγία Πολυγώνου ΣÏγκÏουσης" @@ -8081,92 +8367,80 @@ msgid "TileSet" msgstr "TileSet" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No VCS addons are available." -msgstr "Όνομα Î³Î¿Î½Î¹ÎºÎ¿Ï ÎºÏŒÎ¼Î²Î¿Ï…, εάν είναι διαθÎσιμο" +msgstr "ΚανÎνα Ï€Ïόσθετο VCS δεν είναι διαθÎσιμο." #: editor/plugins/version_control_editor_plugin.cpp editor/rename_dialog.cpp msgid "Error" msgstr "Σφάλμα" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No commit message was provided" -msgstr "Δεν δόθηκε όνομα" +msgstr "ΚανÎνα δεσμευμÎνο μήνυμα δεν παÏασχÎθηκε" #: editor/plugins/version_control_editor_plugin.cpp msgid "No files added to stage" -msgstr "" +msgstr "ΚανÎνα αÏχείο δεν Ï€ÏοστÎθηκε στο στάδιο" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit" -msgstr "Κοινότητα" +msgstr "ΔÎσμευση" #: editor/plugins/version_control_editor_plugin.cpp msgid "VCS Addon is not initialized" -msgstr "" +msgstr "Το Î Ïόσθετο VCS δεν αÏχικοποιήθηκε" #: editor/plugins/version_control_editor_plugin.cpp msgid "Version Control System" -msgstr "" +msgstr "ΣÏστημα ΕλÎγχου Έκδοσης" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Initialize" -msgstr "Κεφαλαιοποίηση" +msgstr "ΑÏχικοποιήστε" #: editor/plugins/version_control_editor_plugin.cpp msgid "Staging area" -msgstr "" +msgstr "Σταθμός ανάπαυσης" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Detect new changes" -msgstr "ΔημιουÏγία νÎου οÏθογωνίου." +msgstr "Εντόπισε νÎες αλλαγÎÏ‚" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Changes" -msgstr "Αλλαγή" +msgstr "ΑλλαγÎÏ‚" #: editor/plugins/version_control_editor_plugin.cpp msgid "Modified" -msgstr "" +msgstr "ΤÏοποποιήθηκε" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Renamed" -msgstr "Μετονομασία" +msgstr "Μετονομάστηκε" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Deleted" -msgstr "ΔιαγÏαφή" +msgstr "ΔιαγÏάφηκε" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Typechange" -msgstr "Αλλαγή" +msgstr "ΑλλαγήτÏπου" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage Selected" -msgstr "ΔιαγÏαφή επιλεγμÎνου" +msgstr "Στάδιο ΕπιλÎχθηκε" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage All" -msgstr "Αποθήκευση όλων" +msgstr "Διεξαγωγή Όλων" #: editor/plugins/version_control_editor_plugin.cpp msgid "Add a commit message" -msgstr "" +msgstr "Î ÏοσθÎστε Îνα μήνυμα δÎσμευσης" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit Changes" -msgstr "ΣυγχÏονισμός αλλαγών στις δεσμÎÏ‚ ενεÏγειών" +msgstr "ΑλλαγÎÏ‚ ΔÎσμευσης" #: editor/plugins/version_control_editor_plugin.cpp #: modules/gdnative/gdnative_library_singleton_editor.cpp @@ -8175,25 +8449,23 @@ msgstr "Κατάσταση" #: editor/plugins/version_control_editor_plugin.cpp msgid "View file diffs before committing them to the latest version" -msgstr "" +msgstr "Δείτε τις διαφοÏÎÏ‚ αÏχείων Ï€Ïιν τις δεσμεÏσετε στην τελική Îκδοση" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No file diff is active" -msgstr "Δεν επιλÎχθηκαν αÏχεία!" +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)" msgstr "(Μόνο GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Î Ïοσθήκη εξόδου +" +msgstr "Î Ïοσθήκη Εξόδου" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8208,9 +8480,8 @@ msgid "Boolean" msgstr "Λογική Τιμή" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "Î Ïοσθήκη δείγματος" +msgstr "Δειγματολήπτης" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8294,9 +8565,8 @@ msgid "Light" msgstr "Φως" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Show resulted shader code." -msgstr "ΔημιουÏγία Κόμβου Σκίασης" +msgstr "Εμφάνιση Ï€ÏοκÏπτων κώδικα σκίασης." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Create Shader Node" @@ -8343,8 +8613,8 @@ msgid "Dodge operator." msgstr "Τελεστής άμβλυνσης." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Τελεστής HardLight" +msgid "HardLight operator." +msgstr "Τελεστής HardLight." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8427,11 +8697,11 @@ msgstr "" "ΕπιστÏÎφει Îνα συσχετισμÎνο διάνυσμα εάν η λογική τιμή είναι αληθής ή ψευδής." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy 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." @@ -8669,7 +8939,6 @@ msgid "Returns the square root of the parameter." msgstr "ΕπιστÏÎφει την τετÏαγωνική Ïίζα της παÏαμÎÏ„Ïου." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n" "\n" @@ -8679,12 +8948,11 @@ msgid "" msgstr "" "ΣυνάÏτηση SmoothStep( βαθμωτό(ÏŒÏιο0), βαθμωτό(ÏŒÏιο1), βαθμωτό(x) ).\n" "\n" -"ΕπιστÏÎφει 0.0 αν x < ÏŒÏιο0 και 1.0 αν x > ÏŒÏιο1. Αλλιώς επιστÏÎφει μια " -"παÏεμβλημÎνη τιμή ανάμεσα στο 0.0 και το 1.0 χÏησιμοποιώντας πολυώνυμα " -"Hermite." +"ΕπιστÏÎφει 0.0 αν 'x' είναι μικÏότεÏο από το 'ÏŒÏιο0' και 1.0 αν x μεγαλÏτεÏο " +"από το 'ÏŒÏιο1'. Αλλιώς η επιστÏÎφουσα τιμή είναι μια παÏεμβλημÎνη ανάμεσα " +"στο 0.0 και το 1.0 χÏησιμοποιώντας πολυώνυμα Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Step function( scalar(edge), scalar(x) ).\n" "\n" @@ -8692,7 +8960,7 @@ msgid "" msgstr "" "ΣυνάÏτηση Step( βαθμωτό(ÏŒÏιο), βαθμωτό(x) ).\n" "\n" -"ΕπιστÏÎφει 0.0 αν x < ÏŒÏιο, αλλιώς 1.0." +"ΕπιστÏÎφει 0.0 αν 'x' είναι μικÏότεÏο από το 'ÏŒÏιο' και αλλιώς 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the tangent of the parameter." @@ -8861,9 +9129,8 @@ msgid "Linear interpolation between two vectors." msgstr "ΓÏαμμική παÏεμβολή Î¼ÎµÏ„Î±Î¾Ï 2 διανυσμάτων." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Linear interpolation between two vectors using scalar." -msgstr "ΓÏαμμική παÏεμβολή Î¼ÎµÏ„Î±Î¾Ï 2 διανυσμάτων." +msgstr "ΓÏαμμική παÏεμβολή Î¼ÎµÏ„Î±Î¾Ï Î´Ïο διανυσμάτων χÏησιμοποιώντας βαθμωτό." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the normalize product of vector." @@ -8890,7 +9157,6 @@ msgid "Returns the vector that points in the direction of refraction." msgstr "ΕπιστÏÎφει το διάνυσμα που δείχνει Ï€Ïος την κατεÏθυνση διάθλασης." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n" "\n" @@ -8900,12 +9166,11 @@ msgid "" msgstr "" "ΣυνάÏτηση SmoothStep( διάνυσμα(ÏŒÏιο0), διάνυσμα(ÏŒÏιο1), διάνυσμα(x) ).\n" "\n" -"ΕπιστÏÎφει 0.0 αν x < ÏŒÏιο0 και 1.0 αν x > ÏŒÏιο1. Αλλιώς επιστÏÎφει μια " -"παÏεμβλημÎνη τιμή ανάμεσα στο 0.0 και το 1.0 χÏησιμοποιώντας πολυώνυμα " -"Hermite." +"ΕπιστÏÎφει 0.0 αν x είναι μικÏότεÏο από τό 'ÏŒÏιο0' και 1.0 αν 'x' είναι " +"μεγαλÏτεÏο από το 'ÏŒÏιο1'. Αλλιώς η επιστÏÎφουσα τιμή είναι παÏεμβλημÎνη " +"ανάμεσα στο 0.0 και 1.0 χÏησιμοποιώντας πολυώνυμα Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n" "\n" @@ -8915,12 +9180,11 @@ msgid "" msgstr "" "ΣυνάÏτηση SmoothStep( βαθμωτό(ÏŒÏιο0), βαθμωτό(ÏŒÏιο1), διάνυσμα(x) ).\n" "\n" -"ΕπιστÏÎφει 0.0 αν x < ÏŒÏιο0 και 1.0 αν x > ÏŒÏιο1. Αλλιώς επιστÏÎφει μια " -"παÏεμβλημÎνη τιμή ανάμεσα στο 0.0 και το 1.0 χÏησιμοποιώντας πολυώνυμα " -"Hermite." +"ΕπιστÏÎφει 0.0 αν 'x' μικÏότεÏο του 'ÏŒÏιο0' και 1.0 αν 'x' είναι μεγαλÏτεÏο " +"από το 'ÏŒÏιο1'. Αλλιώς η επιστÏÎφουσα τιμή είναι παÏεμβλημÎνη ανάμεσα στο " +"0.0 και το 1.0 χÏησιμοποιώντας πολυώνυμα Hermite." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Step function( vector(edge), vector(x) ).\n" "\n" @@ -8928,10 +9192,9 @@ msgid "" msgstr "" "ΣυνάÏτηση Step( διάνυσμα(ÏŒÏιο), διάνυσμα(x) ).\n" "\n" -"ΕπιστÏÎφει 0.0 αν x < ÏŒÏιο αλλιώς 1.0." +"ΕπιστÏÎφει 0.0 αν 'x' είναι μικÏότεÏο από 'ÏŒÏιο' και αλλιώς 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Step function( scalar(edge), vector(x) ).\n" "\n" @@ -8939,7 +9202,7 @@ msgid "" msgstr "" "ΣυνάÏτηση Step( βαθμωτό(ÏŒÏιο), διάνυσμα(x) ).\n" "\n" -"ΕπιστÏÎφει 0.0 αν x < ÏŒÏιο αλλιώς 1.0." +"ΕπιστÏÎφει 0.0 αν 'x' είναι μικÏότεÏο από το 'ÏŒÏιο' και αλλιώς 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds vector to vector." @@ -8989,10 +9252,16 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" +"Î ÏοσαÏμοσμÎνη ÎκφÏαση της Γλώσσας Σκίασης Godot, η οποία τοποθετείται στην " +"κοÏυφή του Ï€ÏοκÏπτων shader. ΜποÏείτε να τοποθετήσετε διάφοÏους οÏισμοÏÏ‚ " +"συναÏτήσεων μÎσα και να το καλÎσετε αÏγότεÏα μÎσα στις ΕκφÏάσεις. ΜποÏείτε " +"επίσης να δηλώσετε τις μεταβλητÎÏ‚ 'varyings', τις μεταβλητÎÏ‚ 'uniforms' και " +"τις σταθεÏÎÏ‚." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -9067,6 +9336,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' από την λίστα;" @@ -9118,6 +9395,15 @@ 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 "" +"Αν ελεγμÎνο, η Ï€ÏοÏÏθμιση θα είναι διαθÎσιμη για χÏησιμοποίηση σε ανάπτυξη " +"Îνα-κλικ.\n" +"Μία μόνο Ï€ÏοÏÏθμιση ανά πλατφόÏμα μποÏεί να σημειωθεί ως δυνατή να Ï„ÏÎξει." + +#: editor/project_export.cpp msgid "Export Path" msgstr "ΔιαδÏομή Εξαγωγής" @@ -9146,22 +9432,20 @@ msgid "Resources to export:" msgstr "Î ÏŒÏοι για εξαγωγή:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"ΦίλτÏα για εξαγωγή για αÏχεία που δεν είναι πόÏοι (χωÏισμÎνα με κόμμα Ï€.χ. *." -"json, *.txt)" +"ΦίλτÏα για εξαγωγή αÏχείων/καταλόγων που δεν είναι πόÏοι\n" +"(χωÏισμÎνα με κόμμα Ï€.χ. *.json, *.txt, docs/*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"ΦίλτÏα για την εξαίÏεση αÏχείων από το ÎÏγο (χωÏισμÎνα με κόμμα Ï€.χ. *.json, " -"*.txt)" +"ΦίλτÏα για την εξαίÏεση αÏχείων/καταλόγων από το ÎÏγο\n" +"(χωÏισμÎνα με κόμμα Ï€.χ. *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9172,6 +9456,10 @@ msgid "Make Patch" msgstr "ΔημιουÏγία ενημÎÏωσης" #: editor/project_export.cpp +msgid "Pack File" +msgstr "ΑÏχείο Pack" + +#: editor/project_export.cpp msgid "Features" msgstr "Δυνατότητες" @@ -9223,6 +9511,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 "Τα Ï€Ïότυπα εξαγωγής για αυτή την πλατφόÏτμα λείπουν:" @@ -9391,9 +9687,8 @@ msgid "Unnamed Project" msgstr "Ανώνυμο ÎÏγο" #: editor/project_manager.cpp -#, fuzzy msgid "Missing Project" -msgstr "Εισαγωγή υπαÏÎºÏ„Î¿Ï ÎÏγου" +msgstr "ΕλλιπÎÏ‚ ΈÏγο" #: editor/project_manager.cpp msgid "Error: Project is missing on the filesystem." @@ -9496,13 +9791,12 @@ msgstr "" "Τα πεÏιεχόμενα του καταλόγου του ÎÏγου δεν θα Ï„ÏοποποιηθοÏν." #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove all missing projects from the list?\n" "The project folders' contents won't be modified." msgstr "" -"ΑφαίÏεση %d ÎÏγων από την λίστα;\n" -"Τα πεÏιεχόμενα των καταλόγων των ÎÏγων δεν θα Ï„ÏοποποιηθοÏν." +"ΑφαίÏεση όλων των ελλιπών ÎÏγων από την λίστα;\n" +"Τα πεÏιεχόμενα των καταλόγων' των ÎÏγων δεν θα Ï„ÏοποποιηθοÏν." #: editor/project_manager.cpp msgid "" @@ -9526,9 +9820,12 @@ msgid "Project Manager" msgstr "ΔιαχειÏιστής" #: editor/project_manager.cpp -#, fuzzy msgid "Projects" -msgstr "ΈÏγο" +msgstr "ΈÏγα" + +#: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Τελευταία ΤÏοποποιημÎνα" #: editor/project_manager.cpp msgid "Scan" @@ -9615,18 +9912,6 @@ msgid "Device" msgstr "Συσκευή" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Πατήστε Îνα κουμπί..." @@ -10187,7 +10472,7 @@ msgstr "ΔιαγÏαφή κόμβων γÏαφήματος" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\" and its children?" -msgstr "" +msgstr "ΔιαγÏαφή κόμβου \"%s\" και των παιδιών του;" #: editor/scene_tree_dock.cpp #, fuzzy @@ -10665,12 +10950,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" @@ -10906,10 +11190,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "Η παÏάμετÏος step είναι μηδÎν!" @@ -11051,6 +11331,11 @@ msgid "Cursor Clear Rotation" msgstr "ΕκκαθάÏιση πεÏιστÏοφής δÏομÎα" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "ΔιαγÏαφή επιλογής" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "ΕκκαθάÏιση επιλογής" @@ -11204,6 +11489,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 "Δεν μποÏεί να συγχÎεται με υπαÏκτό ενσωματωμÎνο όνομα Ï„Ïπου." @@ -11269,16 +11564,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 "ΑφαίÏεση θÏÏας εισόδου" @@ -11334,10 +11619,6 @@ msgid "Add Preload Node" msgstr "Î ÏοσθÎστε Îναν κόμβο preload" #: 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 "Î ÏοσθÎστε κόμβο/-ους από δÎντÏο" @@ -11421,7 +11702,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11464,6 +11745,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 "ΣυνάÏτηση:" @@ -11623,27 +11919,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." @@ -11659,6 +11952,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 "" @@ -11667,58 +11962,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 "" @@ -11773,10 +12049,20 @@ msgstr "ΧÏήση Ï€ÏοεπιλεγμÎνης εικόνας ÎµÎºÎºÎ¯Î½Î·ÏƒÎ·Ï #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Μη ÎγκυÏο όνομα κλάσης" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "ΆκυÏο μοναδικό όνομα." #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package publisher display name." +msgstr "ΆκυÏο μοναδικό όνομα." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "ΆκυÏο GUID Ï€Ïοϊόντος." @@ -12448,6 +12734,35 @@ 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 "ΠαÏση της σκηνής" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "ΚοÏμπωμα στο ΠλÎγμα" @@ -13103,9 +13418,6 @@ msgstr "Οι σταθεÏÎÏ‚ δεν μποÏοÏν να Ï„ÏÎ¿Ï€Î¿Ï€Î¿Î¹Î·Î¸Î¿Ï #~ msgid "Rotate 270 degrees" #~ msgstr "ΠεÏιστÏοφή 270 μοίÏες" -#~ msgid "Warning" -#~ msgstr "Î Ïοειδοποίηση" - #~ msgid "Variable" #~ msgstr "Μεταβλητή" @@ -13439,9 +13751,6 @@ msgstr "Οι σταθεÏÎÏ‚ δεν μποÏοÏν να Ï„ÏÎ¿Ï€Î¿Ï€Î¿Î¹Î·Î¸Î¿Ï #~ msgid "Replace By" #~ msgstr "Αντικατάσταση με" -#~ msgid "Case Sensitive" -#~ msgstr "ΔιάκÏιση πεζών-κεφαλαίων" - #~ msgid "Backwards" #~ msgstr "ΑντίστÏοφα" @@ -13587,9 +13896,6 @@ msgstr "Οι σταθεÏÎÏ‚ δεν μποÏοÏν να Ï„ÏÎ¿Ï€Î¿Ï€Î¿Î¹Î·Î¸Î¿Ï #~ msgid "Re-Import Changed Resources" #~ msgstr "Επανεισαγωγή Ï„ÏοποπιημÎνων πόÏων" -#~ msgid "Loading Export Templates" -#~ msgstr "ΦόÏτωση Ï€ÏοτÏπων εξαγωγής" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13895,9 +14201,6 @@ msgstr "Οι σταθεÏÎÏ‚ δεν μποÏοÏν να Ï„ÏÎ¿Ï€Î¿Ï€Î¿Î¹Î·Î¸Î¿Ï #~ msgid "Loading Image:" #~ msgstr "ΦόÏτωση εικόνας:" -#~ msgid "Couldn't load image:" -#~ msgstr "Δεν ήταν δυνατή η φόÏτωση της εικόνας:" - #~ msgid "Converting Images" #~ msgstr "ΜετατÏοπή Εικόνων" @@ -14076,9 +14379,6 @@ msgstr "Οι σταθεÏÎÏ‚ δεν μποÏοÏν να Ï„ÏÎ¿Ï€Î¿Ï€Î¿Î¹Î·Î¸Î¿Ï #~ "Δεν ήταν δυνατή η ανάγνωση του αÏχείου πιστοποιητικών. Είναι η διαδÏομή " #~ "και ο κωδικός σωστοί;" -#~ msgid "Error creating the signature object." -#~ msgstr "Σφάλμα κατά τη δημιουÏγία της υπογÏαφής του αντικειμÎνου." - #~ msgid "Error creating the package signature." #~ msgstr "Σφάλμα κατά τη δημιουÏγία της υπογÏαφής του πακÎτου." diff --git a/editor/translations/eo.po b/editor/translations/eo.po index 99654bd571..6639860c31 100644 --- a/editor/translations/eo.po +++ b/editor/translations/eo.po @@ -1,23 +1,24 @@ # Esperanto translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Scott Starkey <yekrats@gmail.com>, 2019. # AlexHoratio <yukithetupper@gmail.com>, 2019. # Teashrock <kajitsu22@gmail.com>, 2019. # Brandon Dyer <brandondyer64@gmail.com>, 2019. +# Alejandro Sánchez Medina <alejandrosanchzmedina@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2019-10-11 15:07+0000\n" -"Last-Translator: Teashrock <kajitsu22@gmail.com>\n" +"PO-Revision-Date: 2019-11-11 14:19+0000\n" +"Last-Translator: Alejandro Sánchez Medina <alejandrosanchzmedina@gmail.com>\n" "Language-Team: Esperanto <https://hosted.weblate.org/projects/godot-engine/" "godot/eo/>\n" "Language: eo\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.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 @@ -25,6 +26,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Nevalida tip-argumento por funkcio convert(). Uzu konstantojn TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -416,6 +421,10 @@ msgid "Not possible to add a new track without a root" msgstr "Äœi ne estas ebla adici novan vojeton sen radiko" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Adici Bezier-vojeton" @@ -527,8 +536,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" @@ -718,6 +728,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 @@ -797,6 +811,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" @@ -970,9 +988,9 @@ 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 "Vojo" +msgstr "dosierindiko" #: editor/dependency_editor.cpp msgid "Dependencies:" @@ -1435,7 +1453,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" @@ -1559,9 +1578,8 @@ msgid "Script Editor" msgstr "Skriptredaktilo" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Asset Library" -msgstr "Biblioteko de aktivoj" +msgstr "Biblioteko de havaĵoj" #: editor/editor_feature_profile.cpp msgid "Scene Tree Editing" @@ -1683,6 +1701,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 "" @@ -1958,6 +1980,16 @@ msgid "Search Help" msgstr "Serĉi helpon" #: editor/editor_help_search.cpp +#, fuzzy +msgid "Case Sensitive" +msgstr "Fermi scenon" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Montri helpantoj" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1993,6 +2025,29 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Iru al metodo" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Atributo Vojeto" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Renomi projekton" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2610,7 +2665,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" @@ -2664,7 +2720,7 @@ msgstr "Sencimigi" #: editor/editor_node.cpp msgid "Deploy with Remote Debug" -msgstr "Malfaldi kun defora sencimigo" +msgstr "Disponigii kun defora sencimigo" #: editor/editor_node.cpp msgid "" @@ -2675,9 +2731,8 @@ msgstr "" "de ĉi tiu komputilo por estos sencimigita." #: editor/editor_node.cpp -#, fuzzy msgid "Small Deploy with Network FS" -msgstr "Malgranda malfaldo kun reta dosiersistemo" +msgstr "Eta disponigo kun reta dosiersistemo" #: editor/editor_node.cpp msgid "" @@ -2840,7 +2895,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2944,6 +2999,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 "" @@ -3000,6 +3060,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 "" @@ -3310,6 +3375,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3432,6 +3505,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 "" @@ -3508,6 +3586,11 @@ msgid "New Inherited Scene" msgstr "Nova heredita sceno" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Set As Main Scene" +msgstr "Konservi ĉiujn scenojn" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4222,6 +4305,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Animado Filmitaĵero:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "AÅdio Filmitaĵero:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funkcioj:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4453,6 +4551,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4532,6 +4634,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" @@ -4787,6 +4893,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 "" @@ -4890,6 +5020,14 @@ 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 "" @@ -4898,6 +5036,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "Skali RejÅo:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -4968,6 +5111,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 "" @@ -4981,6 +5193,20 @@ 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 "" @@ -5115,6 +5341,10 @@ 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 "" @@ -5254,7 +5484,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5594,11 +5824,26 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#, 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 "" @@ -6226,6 +6471,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,10 +6614,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 "" @@ -6448,10 +6706,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6477,6 +6731,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "Nur risurcoj el dosiersistemo povas esti forigita." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7112,18 +7371,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7200,6 +7475,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7473,6 +7752,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7489,7 +7769,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7600,6 +7880,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 "" @@ -7616,6 +7908,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 "" @@ -7824,6 +8145,15 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Nuntempigi" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -8092,7 +8422,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8679,9 +9009,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8745,6 +9076,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 "" @@ -8790,6 +9129,12 @@ 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 "" @@ -8838,6 +9183,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Malfermi dosieron" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8889,6 +9239,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 "" @@ -9160,6 +9518,11 @@ msgid "Projects" msgstr "Projektoj" #: editor/project_manager.cpp +#, fuzzy +msgid "Last Modified" +msgstr "Modifita" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Esplori" @@ -9240,18 +9603,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10468,10 +10819,6 @@ 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 "" @@ -10608,6 +10955,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Skali Elektaron" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10750,6 +11102,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 "" @@ -10813,14 +11173,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 "" @@ -10869,10 +11221,6 @@ 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 "" @@ -10952,7 +11300,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10994,6 +11342,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:" @@ -11192,27 +11554,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 "" @@ -11261,10 +11606,19 @@ msgid "Using default boot splash image." msgstr "" #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package short name." +msgstr "Nevalida grupa nomo." + +#: 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 "" diff --git a/editor/translations/es.po b/editor/translations/es.po index 7966399033..d3142558f2 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -1,6 +1,6 @@ # Spanish translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Addiel Lucena Perez <addiell2017@gmail.com>, 2017. # Aleix Sanchis <aleixsanchis@hotmail.com>, 2017, 2018. @@ -41,11 +41,12 @@ # Patrick Zoch Alves <patrickzochalves@gmail.com>, 2019. # roger <616steam@gmail.com>, 2019. # Dario <darlex259@gmail.com>, 2019. +# Adolfo Jayme Barrientos <fitojb@ubuntu.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-11 15:07+0000\n" +"PO-Revision-Date: 2019-12-25 12:45+0000\n" "Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" @@ -54,12 +55,16 @@ 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 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 +msgid "Expected a string of length 1 (a character)." +msgstr "Se esperaba un string de longitud 1 (un carácter)." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp @@ -74,7 +79,8 @@ msgstr "Entrada inválida %i (no pasó) en la expresión" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "No se puede usar self porque la instancia es nula (no pasó)" +msgstr "" +"No se puede utilizar «self» porque la instancia es nula (no transmitida)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -86,7 +92,7 @@ msgstr "Indice inválido de tipo %s para tipo base %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "Indice de nombre invalido '%s' para el tipo base %s" +msgstr "El Ãndice de nombre «%s» no es válido para el tipo de base %s" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" @@ -452,6 +458,10 @@ msgid "Not possible to add a new track without a root" msgstr "No es posible agregar una nueva pista sin una raÃz" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Añadir Pista Bezier" @@ -567,8 +577,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" @@ -666,12 +677,11 @@ msgstr "Limpiar" #: editor/animation_track_editor.cpp msgid "Scale Ratio:" -msgstr "Ratio de Escala:" +msgstr "Relación de Escala:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Elegir pistas a copiar:" +msgstr "Selecciona las Pistas a Copiar" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -683,9 +693,8 @@ msgid "Copy" msgstr "Copiar" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Deseleccionar todo" +msgstr "Seleccionar Todo/Ninguno" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -756,6 +765,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 +847,10 @@ msgid "Extra Call Arguments:" msgstr "Argumentos extras de llamada:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Método Receptor:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Avanzado" @@ -1013,7 +1030,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 +1503,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 +1758,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)" @@ -2018,6 +2040,15 @@ msgid "Search Help" msgstr "Buscar en la Ayuda" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Respetar mayús/minúsculas" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Mostrar Ayudantes" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Mostrar Todos" @@ -2053,6 +2084,29 @@ msgstr "Tipo de Miembro" msgid "Class" msgstr "Clase" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Métodos" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Señal" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constante" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Propiedad:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Propiedades del Tema" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Propiedad:" @@ -2715,7 +2769,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" @@ -2944,8 +2999,8 @@ msgid "Play" msgstr "Reproducir" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pausar la escena" +msgid "Pause the scene execution for debugging." +msgstr "Pausar la ejecución de la escena para depurarla." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3059,6 +3114,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 +3174,10 @@ msgstr "Abrir Editor siguiente" msgid "Open the previous Editor" msgstr "Abrir Editor anterior" +#: editor/editor_node.h +msgid "Warning!" +msgstr "¡Advertencia!" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "No se encontró ningún sub-recurso." @@ -3437,6 +3500,15 @@ msgid "Importing:" msgstr "Importando:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "¡Error al escribir el PCK de proyecto!" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3563,6 +3635,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" @@ -3642,6 +3718,10 @@ msgid "New Inherited Scene" msgstr "Nueva Escena Heredada" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Establecer Como Escena Principal" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Abrir Escenas" @@ -4373,6 +4453,18 @@ msgstr "" "no se pudieron obtener los nombres de las pistas." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Clips de Animación" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Clips de Audio" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funciones" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Nodo Renombrado" @@ -4605,6 +4697,11 @@ msgid "Move Node" msgstr "Mover Nodo" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Transiciones" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Añadir Transición" @@ -4689,6 +4786,10 @@ 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 +msgid "Play Mode:" +msgstr "Modo de Reproducción:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4943,6 +5044,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" @@ -4964,7 +5089,7 @@ msgstr "Todos" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "No hay resultados para \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5053,6 +5178,14 @@ msgid "Grid Step:" msgstr "Grid Step:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "LÃnea Principal Cada:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "pasos" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Offset de Rotación:" @@ -5061,6 +5194,10 @@ msgid "Rotation Step:" msgstr "Step de Rotación:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Pasos de Escalado:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Mover GuÃa Vertical" @@ -5133,6 +5270,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" @@ -5146,6 +5351,24 @@ msgstr "Cambiar Anclas" #: 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 "" +"Reemplazar Cámara del Juego\n" +"Reemplaza la cámara del juego con la cámara del viewport del editor." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Reemplazar Cámara del Juego\n" +"No hay ninguna instancia de juego ejecutándose." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "Bloqueo Seleccionado" @@ -5263,34 +5486,34 @@ msgid "Ruler Mode" msgstr "Modo Regla" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Act./Desact. alineado." +msgstr "Alternar acople inteligente." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Usar Snap" +msgstr "Usar Snap Inteligente" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Act./Desact. alineado." +msgstr "Act./Desact. grid snapping." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "Grid Snap" +msgstr "Usar Grid Snap" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" -msgstr "Opciones de Alineado" +msgstr "Opciones de Snapping" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" msgstr "Usar Snap de Rotación" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "Usar Snap de Escalado" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Snap Relativo" @@ -5300,7 +5523,7 @@ msgstr "Usar Pixel Snap" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Smart Snapping" -msgstr "Ajuste Inteligente" +msgstr "Snapping Inteligente" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5365,7 +5588,7 @@ msgstr "Crear Hueso(s) Personalizados a partir de Nodo(s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Custom Bones" -msgstr "Restablecer Huesos Personalizados" +msgstr "Borrar Huesos Personalizados" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5373,33 +5596,32 @@ msgid "View" msgstr "Ver" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Ver Grid" +msgstr "Mostrar Siempre el Grid" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "Ver Ayudas" +msgstr "Mostrar Ayudantes" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" -msgstr "Ver Reglas" +msgstr "Mostrar Reglas" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "Ver GuÃas" +msgstr "Mostrar GuÃas" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" -msgstr "Ver Origen" +msgstr "Mostrar Origen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Viewport" -msgstr "Ver Viewport" +msgstr "Mostrar Viewport" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "Ver Grupo y Bloquear Iconos" +msgstr "Mostrar Grupo y Bloquear Iconos" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -5411,7 +5633,7 @@ msgstr "Encuadrar Selección" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Preview Canvas Scale" -msgstr "Previsualización de la Escala del Lienzo" +msgstr "Previsualizar Escala de Canvas" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Translation mask for inserting keys." @@ -5431,16 +5653,16 @@ msgstr "Insertar claves (basadas en máscara)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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 "" -"Inserción automática de claves cuando los objetos son desplazados, rotados " -"en escala (basado en máscara).\n" +"Inserción automática de claves cuando los objetos son desplazados, rotados o " +"escalados (basado en máscara).\n" "Las claves sólo se añaden a las pistas existentes, no se crearán nuevas " "pistas.\n" -"Las claves deben insertarse manualmente por primera vez." +"Las llaves deben insertarse manualmente por primera vez." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Auto Insert Key" @@ -5642,9 +5864,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Mantén Shift para editar las tangentes individualmente" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Clic derecho: Eliminar Punto" +msgstr "Clic derecho para añadir punto" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5779,11 +6000,26 @@ msgstr "Crear Outline Mesh" msgid "Outline Size:" msgstr "Tamaño del Outline:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "¿Quieres borrar el elemento %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Actualizar desde escena" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "LibrerÃa de Meshes" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Añadir Item" @@ -6140,7 +6376,7 @@ msgid "" "viewport." msgstr "" "El polÃgono 2D tiene vértices internos, por lo que ya no se puede editar en " -"el viewport." +"la ventanilla." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Polygon & UV" @@ -6419,6 +6655,25 @@ msgid "Save File As..." msgstr "Guardar Archivo Como..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "No se puede obtener el script para ejecutarlo." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "El script falló al recargar, comprueba si hay errores en la consola." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "El Script no está en modo tool, no podrá ejecutarse." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"Para ejecutar este script, debe heredar de EditorScript y estar configurado " +"en modo tool." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importar Tema" @@ -6545,10 +6800,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" @@ -6641,10 +6892,6 @@ msgid "Source" msgstr "Fuente" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Señal" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Objetivo" @@ -6672,6 +6919,12 @@ msgid "Only resources from filesystem can be dropped." msgstr "Sólo se pueden arrastrar/soltar recursos del sistema de archivos." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"No se pueden soltar nodos porque el script '%s' no es usado en esta escena." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Buscar SÃmbolo" @@ -7101,7 +7354,6 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de Velocidad de Vista Libre" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" msgstr "Modificador de Velocidad de Vista Libre" @@ -7263,7 +7515,7 @@ msgstr "Snap de Escala (%):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" -msgstr "Ajustes de Viewport" +msgstr "Configuración de ventanilla" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective FOV (deg.):" @@ -7314,18 +7566,37 @@ msgid "Create Mesh2D" msgstr "Crear Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Creando Vistas Previas de Mesh/es" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Crear Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Crear CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Crear CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Crear LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Crear LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "¡El sprite esta vacÃo!" @@ -7355,7 +7626,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." @@ -7374,9 +7645,8 @@ msgid "Simplification: " msgstr "Simplificación: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Crecer (Pixeles): " +msgstr "Encoger (PÃxeles): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7403,6 +7673,11 @@ msgid "Add Frame" msgstr "Añadir Frame" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "No se pudo cargar la imagen:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "ERROR: ¡No se pudo cargar el recurso de frames!" @@ -7676,6 +7951,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" @@ -7692,8 +7968,8 @@ msgid "Color" msgstr "Color" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Constante" +msgid "Theme File" +msgstr "Archivo de Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7805,6 +8081,18 @@ msgid "Merge from Scene" msgstr "Unir desde escena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "Nuevo Tile Individual" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Nuevo Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Nuevo Atlas" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Siguiente Coordenada" @@ -7821,6 +8109,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Seleccionar la anterior forma, subtile, o Tile." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "Región" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Colisión" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Oclusión" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Navegación" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Prioridad" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Ãndice Z" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modo Región" @@ -8048,6 +8364,16 @@ msgid "Edit Tile Z Index" msgstr "Editar Ãndice Z de Tile" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Crear Póligono Convexo" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Crear PolÃgono Cóncavo" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Crear PolÃgono de Colisión" @@ -8162,9 +8488,8 @@ msgid "(GLES3 only)" msgstr "(Sólo GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Añadir salida +" +msgstr "Añadir Salida" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8179,9 +8504,8 @@ msgid "Boolean" msgstr "Booleano" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "Sonidos" +msgstr "Sampler" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8313,8 +8637,8 @@ msgid "Dodge operator." msgstr "Operador Dodge." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Operador HardLight" +msgid "HardLight operator." +msgstr "Operador HardLight." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8959,11 +9283,12 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" -"Expresión personalizada del lenguaje de shader de Godot, que se coloca " +"Expresión personalizada del lenguaje de shaders de Godot, que se coloca " "encima del shader resultante. Puedes colocar varias definiciones de " "funciones dentro y llamarlas más tarde en las Expresiones. También puedes " "declarar variaciones, uniformes y constantes." @@ -9039,6 +9364,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?" @@ -9090,6 +9423,15 @@ msgid "Add..." msgstr "Añadir..." #: 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 "" +"Si se selecciona, la plantilla estará disponible para su uso en un " +"despliegue con “un clickâ€.\n" +"Sólo se puede marcar como ejecutable una plantilla por plataforma." + +#: editor/project_export.cpp msgid "Export Path" msgstr "Ruta de Exportación" @@ -9118,22 +9460,20 @@ msgid "Resources to export:" msgstr "Recursos a 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 archivos que no son recursos (separados por comas, ej: " -"*.json, *.txt)" +"Filtros para exportar archivos/carpetas que no son recursos\n" +"(separado por comas, por ejemplo: *.json, *.txt, docs/*)" #: 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 de la exportación (separados por comas, ej: *.json, *." -"txt)" +"Filtros para excluir archivos/carpetas del proyecto\n" +"(separados por comas, por ejemplo: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9144,6 +9484,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" @@ -9195,6 +9539,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:" @@ -9501,6 +9853,10 @@ msgid "Projects" msgstr "Proyectos" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Ultima Modificación" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Escanear" @@ -9585,18 +9941,6 @@ msgid "Device" msgstr "Dispositivo" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Presiona una tecla..." @@ -10179,13 +10523,13 @@ msgstr "" "vuelvan a sus valores por defecto." #: 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 "" -"Desactivar \"editable_instance\" causara que todas las propiedades del nodo " -"vuelvan a sus valores por defecto." +"Activar \"Cargar Como Placeholder\" desactivará \"Hijos Editables\" y " +"causará que todas las propiedades del nodo se reviertan a sus valores por " +"defecto." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10265,7 +10609,7 @@ msgstr "Hijos Editables" #: editor/scene_tree_dock.cpp msgid "Load As Placeholder" -msgstr "Cargar como Placeholder" +msgstr "Cargar Como Placeholder" #: editor/scene_tree_dock.cpp msgid "Open Documentation" @@ -10277,7 +10621,7 @@ msgstr "Añadir Nodo Hijo" #: editor/scene_tree_dock.cpp msgid "Expand/Collapse All" -msgstr "Expandir/Colapsar Todo" +msgstr "Expandir/Contraer Todo" #: editor/scene_tree_dock.cpp msgid "Change Type" @@ -10305,7 +10649,7 @@ msgstr "Copiar Ruta del Nodo" #: editor/scene_tree_dock.cpp msgid "Delete (No Confirm)" -msgstr "Eliminar (Sin confirmar)" +msgstr "Eliminar (Sin Confirmar)" #: editor/scene_tree_dock.cpp msgid "Add/Create a New Node." @@ -10525,19 +10869,16 @@ msgid "Will load an existing script file." msgstr "Se cargará un archivo de script existente." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Nombre de clase" +msgstr "Nombre de Clase:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Plantilla" +msgstr "Plantilla:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Script Integrado" +msgstr "Script Integrado:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10840,10 +11181,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "Se esperaba un string de longitud 1 (un carácter)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "¡El argumento step es cero!" @@ -10984,6 +11321,11 @@ msgid "Cursor Clear Rotation" msgstr "Eliminar Rotación del Cursor" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Borrar Selección" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Deseleccionar" @@ -11134,6 +11476,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." @@ -11167,11 +11517,11 @@ msgstr "Otra función/variable/señal ya utiliza este nombre:" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Function" -msgstr "Renombrar Función" +msgstr "Cambiar nombre de función" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Variable" -msgstr "Renombrar Variable" +msgstr "Cambiar nombre de variable" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" @@ -11182,7 +11532,6 @@ msgid "Add Function" msgstr "Añadir Función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "Eliminar puerto de entrada" @@ -11195,24 +11544,12 @@ msgid "Add Signal" msgstr "Añadir Señal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Input Port" -msgstr "Agregar puerto de entrada" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Añadir puerto de salida" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" -msgstr "Eliminar puerto de entrada" +msgstr "Eliminar Puerto de Entrada" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" -msgstr "Eliminar puerto de salida" +msgstr "Eliminar Puerto de Salida" #: modules/visual_script/visual_script_editor.cpp msgid "Change Expression" @@ -11259,18 +11596,17 @@ msgid "Add Preload Node" msgstr "Añadir Nodo Preload" #: 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 "Añadir Nodo(s) Desde Ãrbol" +msgstr "Añadir nodo(s) desde árbol" #: 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 "" +"No se pueden soltar propiedades porque el script '%s' no se usa en esta " +"escena.\n" +"Mantén pulsado 'Shift' para copiar la firma." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11297,9 +11633,8 @@ msgid "Connect Nodes" msgstr "Conectar Nodos" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Desconectar nodos gráficos" +msgstr "Desconectar Nodos" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11334,26 +11669,25 @@ msgid "Paste VisualScript Nodes" msgstr "Pegar nodos de VisualScript" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "No se puede copiar el nodo de función." +msgstr "No se puede crear una función con un nodo función." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" +"No se puede crear una función de nodos desde nodos de múltiples funciones." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +msgstr "Selecciona al menos un nodo con puerto de secuencia." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Intenta tener sólo una secuencia de entrada en la selección." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Renombrar Función" +msgstr "Crear Función" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11373,7 +11707,7 @@ msgstr "Eliminar Señal" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" -msgstr "Editando señal:" +msgstr "Editando Señal:" #: modules/visual_script/visual_script_editor.cpp msgid "Make Tool:" @@ -11384,9 +11718,20 @@ msgid "Members:" msgstr "Miembros:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy +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 "Función:" +msgstr "nombre_funcion" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11409,18 +11754,16 @@ msgid "Cut Nodes" msgstr "Cortar Nodos" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Renombrar Función" +msgstr "Crear Función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Recargar" +msgstr "Actualizar Gráfico" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" -msgstr "Editar Miembros" +msgstr "Editar Miembro" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -11608,30 +11951,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." @@ -11646,7 +11969,7 @@ msgstr "El icono requerido no está especificado en el preset." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Detener Servidor HTTP" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11681,10 +12004,18 @@ msgid "Using default boot splash image." msgstr "Usando la imagen de carga por defecto." #: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "Nombre corto del paquete inválido." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "Nombre único de paquete inválido." #: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "Nombre para mostrar del editor inválido." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "GUID de producto inválido." @@ -11795,8 +12126,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 "" @@ -12028,7 +12359,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 "" @@ -12324,10 +12655,11 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" -"Este viewport no está configurado como render target. Si quieres que muestre " -"su contenido directamente en la pantalla, hazlo hijo de un Control para que " -"pueda obtener un tamaño. De lo contrario, conviértelo en un RenderTarget y " -"asigna su textura interna a algún nodo para mostrarlo." +"Esta ventanilla no está configurada como destino de representación. Si " +"quiere que su contenido se muestre directamente en la pantalla, hágalo un " +"elemento secundario de un control para que pueda recibir dimensiones. O " +"bien, conviértalo en un RenderTarget y asigne su textura interna a algún " +"nodo para que se muestre." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for preview." @@ -12357,6 +12689,34 @@ 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" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "Ajustar en Grid" @@ -13025,9 +13385,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Rotate 270 degrees" #~ msgstr "Rotar 270 grados" -#~ msgid "Warning" -#~ msgstr "Advertencia" - #~ msgid "Variable" #~ msgstr "Variable" @@ -13154,9 +13511,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Out-In" #~ msgstr "Salida-Entrada" -#~ msgid "Transitions" -#~ msgstr "Transiciones" - #~ msgid "Change Anim Len" #~ msgstr "Cambiar duración de animación" @@ -13370,9 +13724,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Replace By" #~ msgstr "Reemplazar por" -#~ msgid "Case Sensitive" -#~ msgstr "Respetar mayús/minúsculas" - #~ msgid "Backwards" #~ msgstr "Hacia atrás" @@ -13529,9 +13880,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" @@ -13843,9 +14191,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Loading Image:" #~ msgstr "Cargando imagen:" -#~ msgid "Couldn't load image:" -#~ msgstr "No se pudo cargar la imagen:" - #~ msgid "Converting Images" #~ msgstr "Convirtiendo imágenes" @@ -14041,10 +14386,6 @@ msgstr "Las constantes no pueden modificarse." #~ "contraseña son correctas?" #, fuzzy -#~ msgid "Error creating the signature object." -#~ msgstr "¡Error al escribir el PCK de proyecto!" - -#, fuzzy #~ msgid "Error creating the package signature." #~ msgstr "Se produjo un error al firmar el paquete." @@ -14148,10 +14489,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" @@ -14260,9 +14597,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 4369ea73ab..d1ec00bf87 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -1,6 +1,6 @@ # Spanish (Argentina) translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Diego López <diegodario21@gmail.com>, 2017. # Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2018, 2019. @@ -12,12 +12,13 @@ # Andrés S <andres.segovia.dev@gmail.com>, 2019. # Florencia Menéndez <mariaflormz2@gmail.com>, 2019. # roger <616steam@gmail.com>, 2019. +# Francisco José Carllinni <panchopepe@protonmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-11 15:07+0000\n" -"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n" +"PO-Revision-Date: 2019-12-25 12:45+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" "Language: es_AR\n" @@ -25,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.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 @@ -33,6 +34,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Argumento de tipo incorrecto en convert(), utilizá constantes TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Se esperaba un string de longitud 1 (un carácter)." + +#: 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." @@ -45,7 +50,9 @@ msgstr "Entrada inválida %i (no se transmitió) en la expresión" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "self no puede ser usado ya que la instancia es nula (no pasó)" +msgstr "" +"self no puede ser usado ya que la instancia es nula (la referencia no fue " +"pasada)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -422,6 +429,10 @@ msgid "Not possible to add a new track without a root" msgstr "No es posible agregar una nueva pista sin una raÃz" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Agregar Pista Bezier" @@ -502,7 +513,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" -msgstr "Advertencia: Se esta editando una animación importada" +msgstr "Advertencia: Se está editando una animación importada" #: editor/animation_track_editor.cpp msgid "Select an AnimationPlayer node to create and edit animations." @@ -518,7 +529,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." @@ -536,8 +547,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" @@ -638,9 +650,8 @@ msgid "Scale Ratio:" msgstr "Ratio de Escala:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Elegir pistas a copiar:" +msgstr "Elegir Pistas a Copiar" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -652,9 +663,8 @@ msgid "Copy" msgstr "Copiar" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "No Seleccionar Ninguno" +msgstr "Seleccionar Todo/Ninguno" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -725,6 +735,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 @@ -803,6 +817,10 @@ msgid "Extra Call Arguments:" msgstr "Argumentos de Llamada Extras:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Método Receptor:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Avanzado" @@ -819,7 +837,7 @@ msgstr "" #: editor/connections_dialog.cpp msgid "Oneshot" -msgstr "Oneshot" +msgstr "OneShot" #: editor/connections_dialog.cpp msgid "Disconnects the signal after its first emission." @@ -981,7 +999,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" @@ -1326,7 +1344,7 @@ msgstr "Abrir Layout de Bus de Audio" #: editor/editor_audio_buses.cpp msgid "There is no '%s' file." -msgstr "No hay ningún archivo `%s'." +msgstr "No hay ningún archivo '%s'." #: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp msgid "Layout" @@ -1454,7 +1472,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" @@ -1707,6 +1726,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)" @@ -1982,6 +2005,15 @@ msgid "Search Help" msgstr "Buscar en la Ayuda" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Respetar Mayúsculas/Minúsculas" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Mostrar Ayudantes" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Mostrar Todo" @@ -2017,6 +2049,29 @@ msgstr "Tipo de Miembro" msgid "Class" msgstr "Clase" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Métodos" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Señal" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constante" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Propiedad:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Propiedades de Tema" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Propiedad:" @@ -2679,7 +2734,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" @@ -2888,7 +2944,7 @@ msgstr "Q&A" #: editor/editor_node.cpp msgid "Issue Tracker" -msgstr "Issue Tracker" +msgstr "Registro de problemas" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" @@ -2907,8 +2963,8 @@ msgid "Play" msgstr "Reproducir" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pausar la escena" +msgid "Pause the scene execution for debugging." +msgstr "Pausar la ejecución de la escena para depurar." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3024,6 +3080,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" @@ -3080,6 +3140,10 @@ msgstr "Abrir el Editor siguiente" msgid "Open the previous Editor" msgstr "Abrir el Editor anterior" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Cuidado!" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "No se encontró ningún sub-recurso." @@ -3401,6 +3465,15 @@ msgid "Importing:" msgstr "Importando:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Error al crear el objeto firma." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3527,6 +3600,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" @@ -3606,6 +3683,10 @@ msgid "New Inherited Scene" msgstr "Nueva Escena Heredada" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Seleccionar Como Escena Principal" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Abrir Escenas" @@ -4183,7 +4264,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 @@ -4338,6 +4419,18 @@ msgstr "" "no se pudieron obtener los nombres de las pistas." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Clips de Anim" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Clips de Audio" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funciones" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Nodo Renombrado" @@ -4570,6 +4663,11 @@ msgid "Move Node" msgstr "Mover Nodo" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Transiciones" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Agregar Transición" @@ -4654,6 +4752,10 @@ 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 +msgid "Play Mode:" +msgstr "Modo de Reproducción:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4908,6 +5010,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" @@ -4929,7 +5055,7 @@ msgstr "Todos" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "No hay resultados para \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5007,7 +5133,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:" @@ -5018,6 +5144,14 @@ msgid "Grid Step:" msgstr "Step de Grilla:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "LÃnea Principal Cada:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "pasos" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Offset de Rotación:" @@ -5026,6 +5160,10 @@ msgid "Rotation Step:" msgstr "Step de Rotación:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Escala temporal:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Mover GuÃa Vertical" @@ -5098,6 +5236,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" @@ -5111,6 +5317,24 @@ msgstr "Cambiar Anclas" #: 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 "" +"Reemplazar Cámara del Juego\n" +"Reemplaza la cámara del juego con la cámara del viewport del editor." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Reemplazar Cámara del Juego\n" +"No hay ninguna instancia de juego ejecutándose." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "Bloqueo Seleccionado" @@ -5227,49 +5451,49 @@ msgid "Ruler Mode" msgstr "Modo Regla" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Act/Desact. alineado." +msgstr "Act/Desact. ajuste inteligente." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Usar Snap" +msgstr "Usar Ajuste Inteligente" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Act/Desact. alineado." +msgstr "Act/Desact. ajuste a grilla." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "Snap de Grilla" +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 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" @@ -5337,13 +5561,12 @@ msgid "View" msgstr "Vista" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Mostrar la Grilla" +msgstr "Siempre Mostrar la Grilla" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "Mostrar ayudantes" +msgstr "Mostrar Ayudantes" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" @@ -5395,7 +5618,7 @@ msgstr "Insertar claves (basadas en máscara)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5606,9 +5829,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Mantené Shift para editar tangentes individualmente" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Click Derecho: Eliminar Punto" +msgstr "Click derecho para agregar punto" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5743,11 +5965,26 @@ msgstr "Crear Outline Mesh" msgid "Outline Size:" msgstr "Tamaño de Outline:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Remover item %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Acutalizar desde Escena" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "Biblioteca de Meshes" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Agregar Item" @@ -6238,11 +6475,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" @@ -6383,6 +6620,25 @@ msgid "Save File As..." msgstr "Guardar Archivo Como..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "No se puede obtener el script para ejecutarlo." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "El script falló al recargar, revisá errores en la consola." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "Es script no esta en modo tool, no sera posible ejecutarlo." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"Para ejecutar este script, debe heredar de EditorScript y estar seteado en " +"modo tool." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importar Tema" @@ -6509,10 +6765,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" @@ -6605,10 +6857,6 @@ msgid "Source" msgstr "Fuente" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Señal" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Objetivo" @@ -6636,6 +6884,12 @@ msgid "Only resources from filesystem can be dropped." msgstr "Solo se pueden depositar recursos del sistema de archivos." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"No se pueden soltar nodos porque el script '%s' no es usado en esta escena." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Buscar SÃmbolo" @@ -7065,7 +7319,6 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de Velocidad de Vista Libre" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" msgstr "Modificador de Velocidad de Vista Libre" @@ -7109,7 +7362,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" @@ -7211,19 +7464,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" @@ -7278,18 +7531,37 @@ msgid "Create Mesh2D" msgstr "Crear Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Creando Vistas Previas de Mesh/es" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Crear Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Crear CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Crear CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Crear LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Crear LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "El sprite esta vacÃo!" @@ -7338,9 +7610,8 @@ msgid "Simplification: " msgstr "Simplificación: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Crecer (Pixeles): " +msgstr "Achicar (Pixeles): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7367,6 +7638,11 @@ msgid "Add Frame" msgstr "Agregar Frame" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "No se pudo cargar la imagen:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "ERROR: No se pudo cargar el recurso de frames!" @@ -7472,7 +7748,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 @@ -7481,11 +7757,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" @@ -7640,6 +7916,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" @@ -7656,8 +7933,8 @@ msgid "Color" msgstr "Color" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Constante" +msgid "Theme File" +msgstr "Archivo de Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7769,6 +8046,18 @@ msgid "Merge from Scene" msgstr "Mergear desde Escena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "Nuevo Tile Individual" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Nuevo Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Nuevo Atlas" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Coordenada Siguiente" @@ -7785,6 +8074,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Seleccionar la forma, subtile o Tile anterior." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "Región" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Colisión" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Oclusión" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Navegación" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Prioridad" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Z Index" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modo Región" @@ -7842,7 +8159,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)" @@ -8011,6 +8328,16 @@ msgid "Edit Tile Z Index" msgstr "Editar Z Index de Tile" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Crear PolÃgono Convexo" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Crear PolÃgono Cóncavo" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Crear PolÃgono de Colisión" @@ -8124,9 +8451,8 @@ msgid "(GLES3 only)" msgstr "(Sólo GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Añadir salida +" +msgstr "Añadir Salida" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8141,9 +8467,8 @@ msgid "Boolean" msgstr "Booleano" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "Muestras" +msgstr "Sampler" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8275,8 +8600,8 @@ msgid "Dodge operator." msgstr "Operador Dodge(sobreexponer)." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Operador HardLight(luz fuerte)" +msgid "HardLight operator." +msgstr "Operador HardLight(luz fuerte)." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8920,14 +9245,15 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" -"Expresión personalizada del lenguaje de shader de Godot, que se coloca " -"encima del shader resultante. Puedes colocar varias definiciones de " -"funciones dentro y llamarlas más tarde en las Expresiones. También puedes " -"declarar varyings, uniforms y constantes." +"Expresión personalizada del lenguaje de shaders de Godot, que se coloca " +"encima del shader resultante. Podés colocar varias definiciones de funciones " +"dentro y llamarlas más tarde en las Expresiones. También podés declarar " +"varyings, uniforms y constantes." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -9001,6 +9327,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?" @@ -9053,6 +9387,15 @@ msgid "Add..." msgstr "Agregar..." #: 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 "" +"Si se selecciona, la plantilla va a estar disponible para su uso en un " +"lanzamiento de “un clickâ€.\n" +"Sólo se puede marcar como ejecutable una plantilla por plataforma." + +#: editor/project_export.cpp msgid "Export Path" msgstr "Ruta de Exportación" @@ -9081,22 +9424,20 @@ msgid "Resources to export:" msgstr "Recursos a 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 archivos que no son recursos (separados por comas, ej: " -"*.json, *.txt)" +"Filtros para exportar archivos/carpetas que no son recursos\n" +"(separado por comas, ej: *.json, *.txt, docs/*)" #: 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 archivos del proyecto (separados por comas, ej: *.json, " -"*.txt)" +"Filtros para excluir archivos/carpetas del proyecto\n" +"(separados por comas, ej: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9107,6 +9448,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" @@ -9158,6 +9503,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:" @@ -9465,6 +9818,10 @@ msgid "Projects" msgstr "Proyectos" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Ultima Modificación" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Examinar" @@ -9549,18 +9906,6 @@ msgid "Device" msgstr "Dispositivo" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Presionar una Tecla..." @@ -9854,7 +10199,7 @@ msgstr "Archivo..." #: editor/property_editor.cpp msgid "Dir..." -msgstr "Dir..." +msgstr "Directorio..." #: editor/property_editor.cpp msgid "Assign" @@ -10070,7 +10415,7 @@ msgstr "Instanciar Escena Hija" #: editor/scene_tree_dock.cpp msgid "Clear Script" -msgstr "Restablecer Script" +msgstr "Quitar Script" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." @@ -10143,13 +10488,13 @@ msgstr "" "vuelvan a sus valores por defecto." #: 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 "" -"Desactivar \"editable_instance\" causara que todas las propiedades del nodo " -"vuelvan a sus valores por defecto." +"Activar \"Cargar como Placeholder\" desactivará \"Hijos Editables\" y " +"causará que todas las propiedades del nodo se reviertan a sus valores por " +"defecto." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10258,7 +10603,7 @@ msgstr "Convertir en RaÃz de Escena" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" -msgstr "Mergear Desde Escena" +msgstr "Incorporar Desde Escena" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp msgid "Save Branch as Scene" @@ -10490,19 +10835,16 @@ msgid "Will load an existing script file." msgstr "Se cargará un archivo de script existente." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Nombre de Clase" +msgstr "Nombre de Clase:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Plantilla" +msgstr "Plantilla:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Script Integrado (Built-In)" +msgstr "Script Integrado (Built-In):" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10805,10 +11147,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "Se esperaba un string de longitud 1 (un carácter)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "El argumento step es cero!" @@ -10893,7 +11231,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" @@ -10948,6 +11286,11 @@ msgid "Cursor Clear Rotation" msgstr "Restablecer Rotación en Cursor" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Eliminar Selección" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Limpiar Selección" @@ -11097,6 +11440,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." @@ -11145,7 +11496,6 @@ msgid "Add Function" msgstr "Agregar Función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "Eliminar puerto de entrada" @@ -11158,24 +11508,12 @@ msgid "Add Signal" msgstr "Agregar Señal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Input Port" -msgstr "Agregar puerto de entrada" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Añadir puerto de salida" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" -msgstr "Eliminar puerto de entrada" +msgstr "Eliminar Puerto de Entrada" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" -msgstr "Eliminar puerto de salida" +msgstr "Eliminar Puerto de Salida" #: modules/visual_script/visual_script_editor.cpp msgid "Change Expression" @@ -11222,10 +11560,6 @@ msgid "Add Preload Node" msgstr "Agregar Nodo Preload" #: 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 "Agregar Nodo(s) Desde Arbol" @@ -11234,6 +11568,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 "" +"No se puede soltar propiedades porque el script '%s' no es usado en esta " +"escena.\n" +"Soltá manteniendo 'Shift' para solo copiar la firma." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11260,9 +11597,8 @@ msgid "Connect Nodes" msgstr "Conectar Nodos" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Desconectar Nodo de Gráfico" +msgstr "Desconectar Nodos" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11297,26 +11633,25 @@ msgid "Paste VisualScript Nodes" msgstr "Pegar Nodos de VisualScript" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "No se puede copiar el nodo de función." +msgstr "No se puede crear una función con un nodo función." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" +"No se puede crear una función de nodos desde nodos de múltiples funciones." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +msgstr "Seleccioná por lo menos un nodo con puerto secuencia." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Tratá de tener solo una secuencia de entrada en la selección." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Renombrar Función" +msgstr "Crear Función" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11347,9 +11682,20 @@ msgid "Members:" msgstr "Miembros:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy +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 "Funcion:" +msgstr "nombre_funcion" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11372,14 +11718,12 @@ msgid "Cut Nodes" msgstr "Cortar Nodos" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Renombrar Función" +msgstr "Crear Función" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Refrescar" +msgstr "Refrescar el Gráfico" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11571,30 +11915,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." @@ -11609,7 +11933,7 @@ msgstr "El icono requerido no esta especificado en el preset." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Detener Servidor HTTP" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11644,10 +11968,18 @@ msgid "Using default boot splash image." msgstr "Usando imagen boot splash por defecto." #: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "Nombre corto de paquete inválido." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "Nombre único de paquete inválido." #: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "Nombre de paquete de publisher inválido." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "GUID de producto inválido." @@ -12315,6 +12647,34 @@ 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" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "Ajustar a la Grilla" @@ -12797,9 +13157,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Rotate 270 degrees" #~ msgstr "Rotar 270 grados" -#~ msgid "Warning" -#~ msgstr "Advertencia" - #~ msgid "Variable" #~ msgstr "Variable" @@ -12926,9 +13283,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Out-In" #~ msgstr "Out-In" -#~ msgid "Transitions" -#~ msgstr "Transiciones" - #~ msgid "Change Anim Len" #~ msgstr "Cambiar Largo de Anim" @@ -13142,9 +13496,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Replace By" #~ msgstr "Reemplazar Por" -#~ msgid "Case Sensitive" -#~ msgstr "Respetar Mayúsculas/Minúsculas" - #~ msgid "Backwards" #~ msgstr "Hacia Atrás" @@ -13293,9 +13644,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" @@ -13604,9 +13952,6 @@ msgstr "Las constantes no pueden modificarse." #~ msgid "Loading Image:" #~ msgstr "Cargando Imagen:" -#~ msgid "Couldn't load image:" -#~ msgstr "No se pudo cargar la imagen:" - #~ msgid "Converting Images" #~ msgstr "Convirtiendo Imágenes" @@ -13792,9 +14137,6 @@ msgstr "Las constantes no pueden modificarse." #~ "No se pudo leer el archivo de certificado. Son tanto la ruta como el " #~ "password correctos?" -#~ msgid "Error creating the signature object." -#~ msgstr "Error al crear el objeto firma." - #~ msgid "Error creating the package signature." #~ msgstr "Error al crear la firma del paquete." @@ -13895,9 +14237,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" @@ -14001,9 +14340,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 a7cb86a27f..1ea5d3377a 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -1,6 +1,6 @@ # Estonian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Jens <arrkiin@gmail.com>, 2019. # Mattias Aabmets <mattias.aabmets@gmail.com>, 2019. @@ -24,6 +24,10 @@ msgstr "" "Kehtetu argument sisestatud convert() funktsiooni, kasuta TYPE_* konstante." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -407,6 +411,10 @@ msgid "Not possible to add a new track without a root" msgstr "Ei saa lisada uut rada ilma tüveta" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Lisa Bezieri Rada" @@ -508,8 +516,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 +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 @@ -772,6 +785,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -943,7 +960,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 +1425,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 +1666,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 "" @@ -1916,6 +1938,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1951,6 +1981,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2559,7 +2609,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 "" @@ -2767,7 +2818,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2870,6 +2921,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 +2981,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 "" @@ -3234,6 +3293,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3356,6 +3423,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 "" @@ -3432,6 +3503,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4142,6 +4217,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Animatsiooni Klipid:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Heliklipid:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funktsioonid:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4372,6 +4462,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4451,6 +4545,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" @@ -4706,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 "" @@ -4809,6 +4931,14 @@ 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 "" @@ -4817,6 +4947,10 @@ 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 "" @@ -4887,6 +5021,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 "" @@ -4900,6 +5102,20 @@ 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 "" @@ -5034,6 +5250,10 @@ 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 "" @@ -5173,7 +5393,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5513,11 +5733,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6143,6 +6377,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 "" @@ -6269,10 +6520,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 "" @@ -6363,10 +6610,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6392,6 +6635,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7027,18 +7275,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7115,6 +7379,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7388,6 +7656,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7404,7 +7673,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7515,6 +7784,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 "" @@ -7531,6 +7812,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 "" @@ -7739,6 +8048,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -8004,7 +8321,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8591,9 +8908,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8657,6 +8975,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 "" @@ -8702,6 +9028,12 @@ 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 "" @@ -8750,6 +9082,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8801,6 +9137,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 "" @@ -9058,6 +9402,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9138,18 +9486,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10361,10 +10697,6 @@ 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 "" @@ -10501,6 +10833,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Kustuta Valitud Võti (Võtmed)" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10643,6 +10980,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 "" @@ -10703,14 +11048,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 "" @@ -10759,10 +11096,6 @@ 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 "" @@ -10841,7 +11174,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10882,6 +11215,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:" @@ -11080,27 +11426,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 "" @@ -11149,10 +11478,18 @@ 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 "" diff --git a/editor/translations/eu.po b/editor/translations/eu.po index 6c8834e504..e4897687be 100644 --- a/editor/translations/eu.po +++ b/editor/translations/eu.po @@ -1,20 +1,21 @@ # Basque translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 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 @@ -22,11 +23,14 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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 "" -"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" @@ -405,6 +409,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -506,8 +514,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 +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 @@ -769,6 +782,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -940,7 +957,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 +1422,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 +1663,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 "" @@ -1911,6 +1933,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1946,6 +1976,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2553,7 +2603,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 "" @@ -2761,7 +2812,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2864,6 +2915,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 +2975,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 "" @@ -3228,6 +3287,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3350,6 +3417,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 "" @@ -3426,6 +3497,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4135,6 +4210,18 @@ msgid "" 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 "" @@ -4365,6 +4452,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4444,6 +4535,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" @@ -4698,6 +4793,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 "" @@ -4801,6 +4920,14 @@ 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 "" @@ -4809,6 +4936,10 @@ 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 "" @@ -4877,6 +5008,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 "" @@ -4890,6 +5089,20 @@ 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 "" @@ -5024,6 +5237,10 @@ 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 "" @@ -5163,7 +5380,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5503,11 +5720,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6133,6 +6364,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 "" @@ -6259,10 +6507,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 "" @@ -6353,10 +6597,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6382,6 +6622,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7016,18 +7261,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7104,6 +7365,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7377,6 +7642,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7393,7 +7659,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7504,6 +7770,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 "" @@ -7520,6 +7798,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 "" @@ -7728,6 +8034,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -7990,7 +8304,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8577,9 +8891,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8643,6 +8958,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 "" @@ -8688,6 +9011,12 @@ 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 "" @@ -8736,6 +9065,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8787,6 +9120,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 "" @@ -9044,6 +9385,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9124,18 +9469,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10344,10 +10677,6 @@ 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 "" @@ -10484,6 +10813,10 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10626,6 +10959,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 "" @@ -10686,14 +11027,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 "" @@ -10742,10 +11075,6 @@ 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 "" @@ -10824,7 +11153,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10864,6 +11193,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 "" @@ -11060,27 +11401,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 "" @@ -11129,10 +11453,18 @@ 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 "" diff --git a/editor/translations/extract.py b/editor/translations/extract.py index 07b34f7562..f75e01bb7b 100755 --- a/editor/translations/extract.py +++ b/editor/translations/extract.py @@ -38,8 +38,8 @@ unique_str = [] unique_loc = {} main_po = """ # LANGUAGE translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. diff --git a/editor/translations/fa.po b/editor/translations/fa.po index fe614abe09..95e12e3d9e 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -1,6 +1,6 @@ # Persian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # alabd14313 <alabd14313@yahoo.com>, 2016. # Dante Marshal <Marshal.Devilhunter@gmail.com>, 2018. @@ -36,6 +36,10 @@ msgstr "" "کنید ." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -433,6 +437,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "ترک را اضاÙÙ‡ Ú©Ù†" @@ -545,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 "ویرایش" @@ -740,6 +749,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 +837,11 @@ msgstr "آرگومان‌های اضاÙÛŒ ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "انتخاب ØØ§Ù„ت" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "متعادل شده" @@ -1009,7 +1027,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 +1508,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 +1773,11 @@ msgstr "Ú©Ùندی در آغاز" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "مدیریت صدور قالب ها" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "پروژه واردشده" @@ -2036,6 +2060,15 @@ msgid "Search Help" msgstr "جستجوی راهنما" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "ØØ³Ø§Ø³ به ØØ§Ù„ت (ØØ±ÙˆÙ لاتین)" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "جستجو" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "جایگزینی همه" @@ -2079,6 +2112,30 @@ msgstr "عضوها" msgid "Class" msgstr "کلاس:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "روش ها" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "سیگنال‌ها" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "ثابت" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "ویژگی:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "صاÙÛŒ کردن گره‌ها" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "ویژگی:" @@ -2701,7 +2758,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 "پروژه" @@ -2922,7 +2980,7 @@ msgid "Play" msgstr "پخش" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -3029,6 +3087,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 +3148,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." @@ -3407,6 +3474,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3536,6 +3611,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 "" @@ -3622,6 +3702,11 @@ msgstr "وارث جدید" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "ذخیره سازی صØÙ†Ù‡" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "باز کردن صØÙ†Ù‡" @@ -4388,6 +4473,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "کلیپ های انیمیشن:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "کلیپ های صوتی:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "وظایÙ:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4634,6 +4734,11 @@ msgstr "ØØ±Ú©Øª دادن گره(ها)" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "انتقال" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Ø§ÙØ²ÙˆØ¯Ù† ترجمه" @@ -4720,6 +4825,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 @@ -4984,6 +5094,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 "" @@ -5091,6 +5227,14 @@ 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 "" @@ -5100,6 +5244,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "نسبت تغییر مقیاس:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "برداشتن متغیر" @@ -5175,6 +5324,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 "" @@ -5188,6 +5408,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "همه‌ی انتخاب ها" @@ -5334,6 +5568,10 @@ 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 "" @@ -5479,7 +5717,7 @@ msgstr "کلید را در انیمیشن درج Ú©Ù†" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5832,11 +6070,27 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +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 "Ø§ÙØ²ÙˆØ¯Ù† مورد" @@ -6490,6 +6744,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 "" @@ -6625,10 +6896,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 "" @@ -6726,11 +6993,6 @@ msgid "Source" msgstr "منبع" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "سیگنال‌ها" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6759,6 +7021,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7425,21 +7692,40 @@ msgstr "ساختن %s جدید" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "به‌روزرسانی از صØÙ†Ù‡" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "انتخاب شده را تغییر مقیاس بده" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "انتخاب شده را تغییر مقیاس بده" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "انتخاب شده را تغییر مقیاس بده" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "ساختن پوشه" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "ساختن پوشه" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "مسیر خالی است" @@ -7522,6 +7808,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "انتخاب ØØ§Ù„ت" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7812,6 +8103,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7828,8 +8120,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "ثابت" +#, fuzzy +msgid "Theme File" +msgstr "یک پرونده را باز Ú©Ù†" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -7949,6 +8242,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 "" @@ -7967,6 +8273,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 "گره انیمیشن" @@ -8204,6 +8544,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "انتخاب شده را تغییر مقیاس بده" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Ù…ØÙ„ÛŒ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "انتخاب شده را تغییر مقیاس بده" @@ -8498,7 +8848,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9093,9 +9443,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9162,6 +9513,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 "ØØ°Ù Ú©Ù†" @@ -9210,6 +9570,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "صدور پروژه" @@ -9260,6 +9626,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " پوشه ها" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9316,6 +9687,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 "" @@ -9586,6 +9966,10 @@ msgid "Projects" msgstr "پروژه" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "پویش" @@ -9670,18 +10054,6 @@ msgid "Device" msgstr "دستگاه" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "+Shift" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "+Alt" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10966,10 +11338,6 @@ msgid "GDNative" msgstr "" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "آرگومان step ØµÙØ± است!" @@ -11119,6 +11487,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "انتخاب شده را تغییر مقیاس بده" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "انتخاب شده را تغییر مقیاس بده" @@ -11277,6 +11650,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 "نام نامعتبر. نباید یا یک نام نوع توکار برخوردی داشته باشد." @@ -11342,16 +11725,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 "برداشتن نقطه" @@ -11404,10 +11777,6 @@ 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 "گره(ها) را از درخت اضاÙÙ‡ Ú©Ù†" @@ -11490,7 +11859,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11533,6 +11902,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 "وظایÙ:" @@ -11740,28 +12124,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 "" @@ -11818,11 +12185,21 @@ msgstr "نمی‌تواند یک پوشه ایجاد شود." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "نام نامعتبر." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "نام نامعتبر." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "نام نامعتبر." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "اندازه‌ی قلم نامعتبر." @@ -12428,6 +12805,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Shift+" +#~ msgstr "+Shift" + +#~ msgid "Alt+" +#~ msgstr "+Alt" + #, fuzzy #~ msgid "Add input +" #~ msgstr "Ø§ÙØ²ÙˆØ¯Ù† نقطه" @@ -12639,10 +13022,6 @@ msgstr "" #~ msgstr "بزرگنمایی بیشتر" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "نمایش پرونده ها" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "بزرگنمایی بیشتر" @@ -12804,9 +13183,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "جایگزین کردن با" -#~ msgid "Case Sensitive" -#~ msgstr "ØØ³Ø§Ø³ به ØØ§Ù„ت (ØØ±ÙˆÙ لاتین)" - #~ msgid "Backwards" #~ msgstr "به سمت عقب" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index cad94fd55c..fe2c19baa3 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -1,6 +1,6 @@ # Finnish translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # basse <basse@roiske.org>, 2017. # Bastian Salmela <bastian.salmela@gmail.com>, 2017, 2018. @@ -9,12 +9,13 @@ # Nuutti Varvikko <nvarvikko@gmail.com>, 2018. # Sami Lehtilä <sami.lehtila@gmail.com>, 2018. # Tapani Niemi <tapani.niemi@kapsi.fi>, 2018, 2019. +# Tuomas Lähteenmäki <lahtis@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: Tapani Niemi <tapani.niemi@kapsi.fi>\n" +"PO-Revision-Date: 2019-12-23 17:08+0000\n" +"Last-Translator: Tuomas Lähteenmäki <lahtis@gmail.com>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" "Language: fi\n" @@ -22,7 +23,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 @@ -31,6 +32,10 @@ msgstr "" "Virheellinen tyyppiargumentti convert() metodille, käytä TYPE_* vakioita." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Odotettiin yhden mittaista merkkijonoa (yhtä merkkiä)." + +#: 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." @@ -417,6 +422,10 @@ msgid "Not possible to add a new track without a root" msgstr "Uutta raitaa ei voida lisätä ilman juurta" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Lisää Bezier-raita" @@ -526,8 +535,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" @@ -628,9 +638,8 @@ msgid "Scale Ratio:" msgstr "Skaalaussuhde:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Valitse kopioitavat raidat:" +msgstr "Valitse kopioitavat raidat" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -642,9 +651,8 @@ msgid "Copy" msgstr "Kopioi" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Tyhjennä valinta" +msgstr "Valitse kaikki/ei mitään" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -715,6 +723,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 @@ -793,6 +805,10 @@ msgid "Extra Call Arguments:" msgstr "Ylimääräiset argumentit:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Valitse metodi:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Edistyneet" @@ -969,7 +985,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" @@ -1444,7 +1460,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" @@ -1696,6 +1713,10 @@ msgid "Erase Profile" msgstr "Tyhjennä profiili" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Hallinnoi editorin ominaisuusprofiilit" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Tuo profiileja" @@ -1970,6 +1991,15 @@ msgid "Search Help" msgstr "Etsi ohjeesta" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Merkkikokoriippuvainen" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Näytä avustimet" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Näytä kaikki" @@ -2005,6 +2035,29 @@ msgstr "Jäsenen tyyppi" msgid "Class" msgstr "Luokka" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metodit" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Signaali" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Muuttumaton" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Ominaisuus:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Teeman ominaisuudet" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Ominaisuus:" @@ -2651,7 +2704,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" @@ -2877,8 +2931,8 @@ msgid "Play" msgstr "Pelaa" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Keskeytä skenen suorittaminen hetkellisesti" +msgid "Pause the scene execution for debugging." +msgstr "Keskeytä skenen suoritus debuggausta varten." #: editor/editor_node.cpp msgid "Pause Scene" @@ -2991,6 +3045,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Tuo mallit ZIP-tiedostosta" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Mallipaketti" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Vie projekti" @@ -3047,6 +3105,10 @@ msgstr "Avaa seuraava editori" msgid "Open the previous Editor" msgstr "Avaa edellinen editori" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Varoitus!" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Aliresursseja ei löydetty." @@ -3366,6 +3428,15 @@ msgid "Importing:" msgstr "Tuodaan:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Virhe luotaessa allekirjoitusoliota." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3492,6 +3563,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" @@ -3569,6 +3644,10 @@ msgid "New Inherited Scene" msgstr "Uusi periytetty skene" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Aseta pääskeneksi" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Avaa skenejä" @@ -4299,6 +4378,18 @@ msgstr "" "nimien haku ei onnistu." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Animaatioleikkeet" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Äänileikkeet" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funktiot" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Solmu uudelleennimetty" @@ -4529,6 +4620,11 @@ msgid "Move Node" msgstr "Siirrä solmua" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Siirtymä: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Lisää siirtymä" @@ -4613,6 +4709,10 @@ msgstr "Aseta loppuanimaatio. Tämä on hyödyllistä alisiirtymiä varten." msgid "Transition: " msgstr "Siirtymä: " +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "Toistotila:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4868,6 +4968,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" @@ -4889,7 +5013,7 @@ msgstr "Kaikki" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Ei tuloksia haulle \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -4978,6 +5102,14 @@ msgid "Grid Step:" msgstr "Ruudukon välistys:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "Pääviivan toistuminen:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "askelta" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Kierron siirtymä:" @@ -4986,6 +5118,10 @@ msgid "Rotation Step:" msgstr "Kierron välistys:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Skaalauksen välistys:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Siirrä pystysuoraa apuviivaa" @@ -5058,6 +5194,77 @@ msgstr "" "ankkureita marginaalien sijaan." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "Vasemmassa yläkulmassa" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "Oikeassa Yläkulmassa" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "Alaoikea" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "Alavasen" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "Keskitä vasemmalle" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "Keskitä ylös" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "Keskitä oikealle" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "Keskitä alas" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Keskitä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Vasen näkymä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Ylänäkymä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Oikea näkymä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Alanäkymä" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "VCenter Wide" +msgstr "VCenter Wide" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "HCenter Wide" +msgstr "HCenter Wide" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Full Rect" +msgstr "Täysi toisto" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Skaalaussuhde" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Vain ankkurit" @@ -5071,6 +5278,24 @@ msgstr "Muuta ankkureita" #: 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 "" +"Pelikameran ohitus\n" +"Ohittaa pelikameran editorin näyttöruutukameralla." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Pelikameran ohitus\n" +"Peli ei ole käynnissä." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "Lukitse valitut" @@ -5187,22 +5412,18 @@ msgid "Ruler Mode" msgstr "Viivaintila" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Aseta tarttuminen." +msgstr "Aseta älykäs tarttuminen." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Käytä tarttumista" +msgstr "Käytä älykästä tarttumista" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Aseta tarttuminen." +msgstr "Aseta ruudukkoon tarttuminen." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" msgstr "Tartu ruudukkoon" @@ -5215,6 +5436,10 @@ msgid "Use Rotation Snap" msgstr "Tartu käännettäessä" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "Käytä skaalauksen tarttumista" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Suhteellinen tarttuminen" @@ -5297,9 +5522,8 @@ msgid "View" msgstr "Näytä" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Näytä ruudukko" +msgstr "Näytä aina ruudukko" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5355,7 +5579,7 @@ msgstr "Lisää avainruutuja (maskiin perustuen)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5566,9 +5790,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Pidä shift pohjassa muokataksesi tangentteja yksitellen" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Oikea painallus: poista piste" +msgstr "Lisää piste napsauttamalla oikeaa" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5703,11 +5926,26 @@ msgstr "Luo ääriviivoista Mesh" msgid "Outline Size:" msgstr "Ääriviivojen koko:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Poistetaanko kohde %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Päivitä skenestä" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "Mesh-kirjasto" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Lisää kohde" @@ -6343,6 +6581,25 @@ msgid "Save File As..." msgstr "Tallenna tiedosto nimellä..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "Skriptiä ei voi saada suorittamista varten." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "Skriptin lataus epäonnistui. Tarkista konsolissa virheiden varalta." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "Skripti ei ole työkalutilassa, sitä ei voi suorittaa." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"Tämän skriptin suorittamiseksi sen on perittävä EditorScript ja asetettava " +"se työkalutilaan." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Tuo teema" @@ -6469,10 +6726,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" @@ -6565,10 +6818,6 @@ msgid "Source" msgstr "Lähde" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Signaali" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Kohde" @@ -6595,6 +6844,12 @@ msgid "Only resources from filesystem can be dropped." msgstr "Vain tiedostojärjestelmän resursseja voi raahata ja pudottaa." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"Ei voida pudottaa solmuja, koska skripti '%s' ei ole käytössä tässä skenessä." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Hae symboli" @@ -7024,9 +7279,8 @@ msgid "Freelook Speed Modifier" msgstr "Liikkumisen nopeussäädin" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "Liikkumisen nopeussäädin" +msgstr "Liikkumisen hitauskerroin" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7237,18 +7491,37 @@ msgid "Create Mesh2D" msgstr "Luo Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Luodaan meshien esikatseluita" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Luo Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Luo CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Luo CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Luo LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Luo LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite on tyhjä!" @@ -7297,9 +7570,8 @@ msgid "Simplification: " msgstr "Yksinkertaistus: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Suurrennus (pikseleissä): " +msgstr "Kutista (pikseleissä): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7326,6 +7598,11 @@ msgid "Add Frame" msgstr "Lisää ruutu" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Kuvaa ei voitu ladata:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "VIRHE: Ei voitu ladata ruudun resurssia!" @@ -7599,6 +7876,7 @@ msgid "Data Type:" msgstr "Tietotyyppi:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Kuvake" @@ -7615,8 +7893,8 @@ msgid "Color" msgstr "Väri" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Muuttumaton" +msgid "Theme File" +msgstr "Teema-tiedosto" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7730,6 +8008,18 @@ msgid "Merge from Scene" msgstr "Yhdistä skenestä" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "Uusi yksittäinen laatta" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Uusi automaattinen laatta" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Uusi Atlas" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Seuraava koordinaatti" @@ -7746,6 +8036,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Valitse edellinen muoto, aliruutu tai ruutu." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "Alue" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Törmäys" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Peittotila" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Siirtymistila" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Bittimaski" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Prioriteetti" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Z Indeksi" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Aluetila" @@ -7972,6 +8290,16 @@ msgid "Edit Tile Z Index" msgstr "Muokkaa ruudun Z-indeksiä" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Tee polygonista konveksi" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Tee polygonista konkaavi" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Luo törmäyspolygoni" @@ -8087,9 +8415,8 @@ msgid "(GLES3 only)" msgstr "(Vain GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Lisää lähtö +" +msgstr "Lisää lähtö" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8104,9 +8431,8 @@ msgid "Boolean" msgstr "Totuusarvo" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "Lisää Sample" +msgstr "Sampleri" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8238,8 +8564,8 @@ msgid "Dodge operator." msgstr "Värinväistöoperaattori." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Kovavalo-operaattori" +msgid "HardLight operator." +msgstr "Kovavalo-operaattori." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8876,9 +9202,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" "Mukautettu Godotin sävytinkielen lauseke, joka sijoitetaan syntyvän " "sävyttimen alkuun. Voit lisätä siihen erilaisia funktiomäärityksiä ja kutsua " @@ -8958,6 +9285,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?" @@ -9008,6 +9343,14 @@ msgid "Add..." msgstr "Lisää..." #: 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 "" +"Jos päällä, esiasetus on käytettävissä yhden napsautuksen käyttöönotossa.\n" +"Kutakin alustaa kohden voidaan merkitä ajettavaksi vain yksi esiasetus." + +#: editor/project_export.cpp msgid "Export Path" msgstr "Vie polku" @@ -9036,22 +9379,21 @@ msgid "Resources to export:" msgstr "Vietävät resurssit:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Suodattimet tiedostojen viemiseen jotka eivät ole resursseja (esim. *.json, " -"*.txt)" +"Suodattimet sellaisten tiedostojen ja kansioiden viemiseen, jotka eivät ole " +"resursseja\n" +"(pilkulla erotettuna, esim. *.json, *.txt, docs/*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Suodattimet tiedostoille jotka jätetään projektista pois (esim. *.json, *." -"txt)" +"Suodattimet tiedostoille ja kansioille, jotka jätetään projektista pois \n" +"(pilkulla erotettuna, esim. *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9062,6 +9404,11 @@ msgid "Make Patch" msgstr "Luo päivitys" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Pakkaa tiedosto" + +#: editor/project_export.cpp msgid "Features" msgstr "Ominaisuudet" @@ -9113,6 +9460,14 @@ msgstr "Vientitila?" msgid "Export All" msgstr "Vie kaikki" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "ZIP-tiedosto" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Godot-peli paketti" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Tälle alustalle ei löytynyt vientipohjia:" @@ -9416,6 +9771,10 @@ msgid "Projects" msgstr "Projektit" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Viimeksi muutettu" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Tutki" @@ -9500,18 +9859,6 @@ msgid "Device" msgstr "Laite" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Paina näppäintä..." @@ -10096,13 +10443,13 @@ msgstr "" "solmun ominaisuudet oletusarvoihin." #: 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 "" -"\"editable_instance\" ominaisuuden poistaminen käytöstä palauttaa kaikki " -"solmun ominaisuudet oletusarvoihin." +"\"Lataa paikanpitäjäksi\" ominaisuuden ottaminen käyttöön poistaa " +"\"Muokattavat alisolmut\" ominaisuuden käytöstä ja palauttaa kaikki solmun " +"ominaisuudet oletusarvoihin." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10441,19 +10788,16 @@ msgid "Will load an existing script file." msgstr "Lataa olemassaolevan skriptitiedoston." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Luokan nimi" +msgstr "Luokan nimi:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Malli" +msgstr "Malli:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Sisäänrakennettu skripti" +msgstr "Sisäänrakennettu skripti:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10756,10 +11100,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "Odotettiin yhden mittaista merkkijonoa (yhtä merkkiä)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "Askeleen argumentti on nolla!" @@ -10900,6 +11240,11 @@ msgid "Cursor Clear Rotation" msgstr "Poista kohdistimen kierto" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Tyhjennä valittu alue" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Tyhjennä valinta" @@ -11049,6 +11394,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." @@ -11097,7 +11450,6 @@ msgid "Add Function" msgstr "Lisää funktio" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "Poista tuloportti" @@ -11110,22 +11462,10 @@ msgid "Add Signal" msgstr "Lisää signaali" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Input Port" -msgstr "Lisää tuloportti" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Lisää lähtöportti" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Poista tuloportti" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" msgstr "Poista lähtöportti" @@ -11175,10 +11515,6 @@ msgid "Add Preload Node" msgstr "Lisää esiladattu solmu" #: 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 "Lisää solmut puusta" @@ -11187,6 +11523,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 "" +"Ei voida pudottaa ominaisuuksia, koska skripti '%s' ei ole käytössä tässä " +"skenessä.\n" +"Kopioidaksesi vain tunnisteen, pudota pitämällä 'Shift' pohjassa." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11213,9 +11552,8 @@ msgid "Connect Nodes" msgstr "Kytke solmut" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Erota graafin solmut" +msgstr "Katkaise solmujen kytkennät" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11250,26 +11588,24 @@ msgid "Paste VisualScript Nodes" msgstr "Liitä VisualScript solmut" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "Ei voida kopioida funktiosolmua." +msgstr "Ei voida luoda funktiota funktiosolmulla." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." -msgstr "" +msgstr "Ei voi luoda solmujen funktiota useamman funktion solmuista." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +msgstr "Valitse ainakin yksi solmu, jolla on sarjaportti." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Yritä käyttää vain yhtä sarjatuloa valinnassa." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Nimeä funktio uudelleen" +msgstr "Luo funktio" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11300,9 +11636,20 @@ msgid "Members:" msgstr "Jäsenet:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy +msgid "Change Base Type:" +msgstr "Muuta perustyyppiä:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Lisää solmuja..." + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Lisää funktio..." + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" -msgstr "Funktio:" +msgstr "function_name" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11325,14 +11672,12 @@ msgid "Cut Nodes" msgstr "Leikkaa solmut" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Nimeä funktio uudelleen" +msgstr "Tee funktio" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Päivitä" +msgstr "Päivitä graafi" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11518,27 +11863,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." @@ -11552,7 +11880,7 @@ msgstr "Vaadittavaa ikonia ei ole määritetty esiasetuksissa." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Pysäytä HTTP-palvelin" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11587,10 +11915,18 @@ msgid "Using default boot splash image." msgstr "Käytetään oletuskäynnistyskuvaa." #: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "Paketin lyhyt nimi on virheellinen." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "Paketin yksilöllinen nimi on virheellinen." #: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "Paketin julkaisijan näyttönimi on virheellinen." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "Tuotteen GUID (yleisesti yksilöllinen tunniste) on virheellinen." @@ -12244,6 +12580,31 @@ 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" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "Tartu ruudukkoon" @@ -12776,9 +13137,6 @@ msgstr "Vakioita ei voi muokata." #~ msgid "Rotate 270 degrees" #~ msgstr "Käännä 270 astetta" -#~ msgid "Warning" -#~ msgstr "Varoitus" - #~ msgid "Variable" #~ msgstr "Muuttuja" @@ -13114,9 +13472,6 @@ msgstr "Vakioita ei voi muokata." #~ msgid "Replace By" #~ msgstr "Korvaa" -#~ msgid "Case Sensitive" -#~ msgstr "Merkkikokoriippuvainen" - #~ msgid "Backwards" #~ msgstr "Taaksepäin" @@ -13419,9 +13774,6 @@ msgstr "Vakioita ei voi muokata." #~ msgid "Loading Image:" #~ msgstr "Ladataan kuvaa:" -#~ msgid "Couldn't load image:" -#~ msgstr "Kuvaa ei voitu ladata:" - #~ msgid "Converting Images" #~ msgstr "Muunnetaan kuvia" @@ -13525,9 +13877,6 @@ msgstr "Vakioita ei voi muokata." #~ msgid "just pressed" #~ msgstr "juuri painettu" -#~ msgid "Error creating the signature object." -#~ msgstr "Virhe luotaessa allekirjoitusoliota." - #~ msgid "Node From Scene" #~ msgstr "Node Scenestä" diff --git a/editor/translations/fil.po b/editor/translations/fil.po index 11a3f7c0a4..abe6c7ad16 100644 --- a/editor/translations/fil.po +++ b/editor/translations/fil.po @@ -1,14 +1,15 @@ # Filipino translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Marco Santos <enum.scima@gmail.com>, 2019. # Amado Wilkins <epicalert68@gmail.com>, 2019. +# Bakainkorp <Ryan.Bautista86@myhunter.cuny.edu>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2019-10-11 15:07+0000\n" -"Last-Translator: Marco Santos <enum.scima@gmail.com>\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" "Language: fil\n" @@ -16,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.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 @@ -26,6 +27,10 @@ msgstr "" "constant." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -312,7 +317,7 @@ msgstr "" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "" +msgstr "Magpasok Ang Key" #: editor/animation_track_editor.cpp msgid "Duplicate Key(s)" @@ -356,7 +361,7 @@ msgstr "" #: editor/script_create_dialog.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Create" -msgstr "" +msgstr "Lumikha" #: editor/animation_track_editor.cpp msgid "Anim Insert" @@ -411,6 +416,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -448,7 +457,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Clipboard is empty" -msgstr "" +msgstr "Walang laman ang Clipboard" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -502,20 +511,21 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Seconds" -msgstr "" +msgstr "Segundo" #: editor/animation_track_editor.cpp msgid "FPS" -msgstr "" +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 "" +msgstr "I-edit" #: editor/animation_track_editor.cpp msgid "Animation properties." @@ -624,7 +634,7 @@ msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Copy" -msgstr "" +msgstr "Kopya" #: editor/animation_track_editor.cpp msgid "Select All/None" @@ -656,7 +666,7 @@ msgstr "" #: editor/code_editor.cpp msgid "Go to Line" -msgstr "" +msgstr "Pumunta sa Linya" #: editor/code_editor.cpp msgid "Line Number:" @@ -684,11 +694,11 @@ msgstr "" #: editor/code_editor.cpp editor/rename_dialog.cpp msgid "Replace" -msgstr "" +msgstr "Palitan" #: editor/code_editor.cpp msgid "Replace All" -msgstr "" +msgstr "Palitan ang Lahat" #: editor/code_editor.cpp msgid "Selection Only" @@ -699,6 +709,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 @@ -717,7 +731,7 @@ msgstr "" #: editor/code_editor.cpp msgid "Warnings" -msgstr "" +msgstr "Mga Babala" #: editor/code_editor.cpp msgid "Line and column numbers." @@ -753,7 +767,7 @@ msgstr "" #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp msgid "Add" -msgstr "" +msgstr "Maglagay" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/editor_feature_profile.cpp editor/groups_editor.cpp @@ -764,7 +778,7 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp #: editor/project_settings_editor.cpp msgid "Remove" -msgstr "" +msgstr "Alisin" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" @@ -775,6 +789,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -812,11 +830,11 @@ msgstr "" #: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Close" -msgstr "" +msgstr "Isara" #: editor/connections_dialog.cpp msgid "Connect" -msgstr "" +msgstr "Ikabit" #: editor/connections_dialog.cpp msgid "Signal:" @@ -836,7 +854,7 @@ msgstr "" #: editor/connections_dialog.cpp msgid "Connect..." -msgstr "" +msgstr "Ikabit..." #: editor/connections_dialog.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -869,7 +887,7 @@ msgstr "" #: editor/connections_dialog.cpp msgid "Edit..." -msgstr "" +msgstr "I-edit..." #: editor/connections_dialog.cpp msgid "Go To Method" @@ -881,7 +899,7 @@ msgstr "" #: editor/create_dialog.cpp editor/project_settings_editor.cpp msgid "Change" -msgstr "" +msgstr "Baguhin" #: editor/create_dialog.cpp msgid "Create New %s" @@ -890,17 +908,17 @@ msgstr "" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp msgid "Favorites:" -msgstr "" +msgstr "Mga Paborito:" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp msgid "Recent:" -msgstr "" +msgstr "Kamakailan:" #: 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 "" +msgstr "Paghahanap:" #: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp #: editor/property_selector.cpp editor/quick_open.cpp @@ -946,7 +964,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 "" @@ -974,7 +992,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:" @@ -1411,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 "" @@ -1651,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 "" @@ -1917,6 +1940,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1952,6 +1983,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2243,11 +2294,11 @@ msgstr "" #: editor/editor_node.cpp msgid "No" -msgstr "" +msgstr "Hindi" #: editor/editor_node.cpp msgid "Yes" -msgstr "" +msgstr "Oo" #: editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" @@ -2559,7 +2610,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 "" @@ -2767,7 +2819,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2871,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 "" @@ -2927,6 +2983,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 "" @@ -3108,7 +3169,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 @@ -3235,6 +3296,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3253,7 +3322,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." @@ -3270,7 +3339,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:" @@ -3357,6 +3426,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 "" @@ -3433,6 +3506,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4142,6 +4219,18 @@ msgid "" 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 "" @@ -4372,6 +4461,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4451,6 +4544,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" @@ -4706,6 +4803,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 "" @@ -4809,6 +4930,14 @@ 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 "" @@ -4817,6 +4946,10 @@ 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 "" @@ -4886,6 +5019,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 "" @@ -4899,6 +5100,20 @@ 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 "" @@ -5033,6 +5248,10 @@ 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 "" @@ -5172,7 +5391,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5514,11 +5733,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6145,6 +6378,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 "" @@ -6271,10 +6521,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 "" @@ -6365,10 +6611,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6394,6 +6636,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7028,18 +7275,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7116,6 +7379,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7389,6 +7656,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7405,7 +7673,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7517,6 +7785,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 "" @@ -7533,6 +7813,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 "" @@ -7741,6 +8049,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -8004,7 +8320,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8037,15 +8353,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 "" @@ -8592,9 +8908,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8658,6 +8975,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 "" @@ -8703,6 +9028,12 @@ 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 "" @@ -8751,6 +9082,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8802,6 +9137,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 "" @@ -9059,6 +9402,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9139,18 +9486,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10360,10 +10695,6 @@ 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 "" @@ -10500,6 +10831,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Burahin ang (mga) Napiling Key" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10642,6 +10978,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 "" @@ -10703,15 +11048,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" @@ -10761,10 +11097,6 @@ 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 "" @@ -10843,7 +11175,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10883,6 +11215,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 "" @@ -11079,27 +11423,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 "" @@ -11148,10 +11475,18 @@ 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 "" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index cecaead406..cbb6aeae7b 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -1,6 +1,6 @@ # French translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Antoine Carrier <ac.g392@gmail.com>, 2017-2018. # ARocherVj <a.rocher.vj@gmail.com>, 2017. @@ -67,12 +67,14 @@ # Romain Paquet <titou.paquet@gmail.com>, 2019. # 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-10-06 08:48+0000\n" -"Last-Translator: Sofiane <Sofiane-77@caramail.fr>\n" +"PO-Revision-Date: 2019-12-23 17:08+0000\n" +"Last-Translator: Camille Mohr-Daurat <pouleyketchoup@gmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -80,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.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 @@ -89,6 +91,10 @@ msgstr "" "Argument de type incorrect dans convert(), utilisez les constantes TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Attendu une chaîne de longueur 1 (un caractère)." + +#: 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." @@ -480,6 +486,10 @@ msgid "Not possible to add a new track without a root" msgstr "Impossible d'ajouter une nouvelle piste sans racine" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Ajouter une piste de Bézier" @@ -597,8 +607,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" @@ -699,9 +710,8 @@ msgid "Scale Ratio:" msgstr "Ratio d'échelle :" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Sélectionner les pistes à copier :" +msgstr "Sélectionner les pistes à copier" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -713,9 +723,8 @@ msgid "Copy" msgstr "Copier" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Tout Désélectionner" +msgstr "Tout Sélectionner/Désélectionner" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -786,6 +795,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 @@ -864,6 +877,10 @@ msgid "Extra Call Arguments:" msgstr "Arguments supplémentaires :" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Méthode du récepteur :" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Options avancées" @@ -1041,7 +1058,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" @@ -1516,7 +1533,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" @@ -1767,6 +1785,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" @@ -2042,6 +2064,16 @@ msgid "Search Help" msgstr "Rechercher dans l'aide" #: editor/editor_help_search.cpp +#, fuzzy +msgid "Case Sensitive" +msgstr "Fermer la scène" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Afficher les aides" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Tout afficher" @@ -2077,6 +2109,29 @@ msgstr "Type de membre" msgid "Class" msgstr "Classe :" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Méthodes" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Signaux" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constante" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Propriété :" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Propriétés du thème" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Propriété :" @@ -2746,7 +2801,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" @@ -2976,8 +3032,8 @@ msgid "Play" msgstr "Jouer" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Mettre en pause la scène" +msgid "Pause the scene execution for debugging." +msgstr "Suspend l'exécution de la scène pour le débogage." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3092,6 +3148,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" @@ -3148,6 +3208,10 @@ msgstr "Ouvrir l'éditeur suivant" msgid "Open the previous Editor" msgstr "Ouvrir l'éditeur précédant" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Avertissement !" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Aucune sous-ressource n'a été trouvée." @@ -3470,6 +3534,14 @@ msgid "Importing:" msgstr "Importation :" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3596,6 +3668,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" @@ -3676,6 +3752,10 @@ msgid "New Inherited Scene" msgstr "Nouvelle scène héritée" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Définir comme scène principale" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Ouvrir des scènes" @@ -4411,6 +4491,18 @@ msgstr "" "impossible de récupérer les noms des pistes." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Clips d'animation" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Clips audio" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Fonctions" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "NÅ“ud renommé" @@ -4642,6 +4734,11 @@ msgid "Move Node" msgstr "Déplacer le nÅ“ud" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Transition : " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Ajouter une transition" @@ -4727,6 +4824,10 @@ 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 +msgid "Play Mode:" +msgstr "Mode d'exécution :" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4981,6 +5082,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" @@ -5002,7 +5127,7 @@ msgstr "Tout" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Aucun résultats pour \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5092,6 +5217,14 @@ msgid "Grid Step:" msgstr "Pas de la grille :" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "Ligne primaire toutes les :" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "étapes" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Décalage de la rotation :" @@ -5100,6 +5233,10 @@ msgid "Rotation Step:" msgstr "Pas de la rotation :" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Pas de l'échelle :" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Déplacer le guide vertical" @@ -5172,6 +5309,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" @@ -5185,6 +5390,25 @@ msgstr "Modifier les ancres" #: 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 "" +"Remplacement de la Caméra du Jeu\n" +"Remplace la caméra du jeu par la caméra de la fenêtre d'affichage de " +"l'editeur." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Remplacement de la Caméra du Jeu\n" +"Aucune instance de jeu en cours d'exécution." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "Verrouillage Sélectionné" @@ -5301,22 +5525,18 @@ msgid "Ruler Mode" msgstr "Mode Règle" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Activer/Désactiver le magnétisme." +msgstr "Activer/Désactiver le magnétisme intelligent." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Aligner sur la grille" +msgstr "Utiliser le magnétisme intelligent" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Activer/Désactiver le magnétisme." +msgstr "Activer/Désactiver l'aimantation à la grille." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" msgstr "Aimanter à la grille" @@ -5329,6 +5549,10 @@ msgid "Use Rotation Snap" msgstr "Rotation alignée" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "Utiliser le magnétisme d'échelle" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Alignement relatif" @@ -5411,9 +5635,8 @@ msgid "View" msgstr "Affichage" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Afficher la grille" +msgstr "Toujours afficher la grille" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5469,7 +5692,7 @@ msgstr "Insérer des clés (en fonction du masque)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5680,9 +5903,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Maintenez Maj. appuyée pour modifier les tangentes individuellement" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Clic droit : Supprimer un point" +msgstr "Clic droit pour ajouter un point" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5820,11 +6042,26 @@ msgstr "Créer un maillage de contour" msgid "Outline Size:" msgstr "Taille du contour :" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Supprimer l'objet %d ?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Mettre à jour depuis la scène" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "Mesh Library" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Ajouter un item" @@ -6254,7 +6491,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" @@ -6464,6 +6701,25 @@ msgid "Save File As..." msgstr "Enregistrer sous…" #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "Impossible d'obtenir le script à exécuter." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "Échec du rechargement du script, vérifiez les erreurs dans la console." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "Le script n'est pas en mode outil (tool), il ne peut pas être exécuté." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"Pour exécuter ce script, il doit hériter de EditorScript et être défini en " +"mode outil (tool)." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importer un thème" @@ -6590,10 +6846,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" @@ -6686,10 +6938,6 @@ msgid "Source" msgstr "Source" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Signaux" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Cible" @@ -6717,6 +6965,13 @@ msgid "Only resources from filesystem can be dropped." msgstr "Seules les ressources du système de fichiers peuvent être abaissées." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"Impossible de supprimer les nÅ“uds car le script '% s' n'est pas utilisé dans " +"cette scène." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Symbole de recherche" @@ -7148,7 +7403,6 @@ msgid "Freelook Speed Modifier" msgstr "Modificateur de vitesse de la vue libre" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" msgstr "Modificateur de vitesse de la vue libre" @@ -7362,18 +7616,37 @@ msgid "Create Mesh2D" msgstr "Créer un Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Création des prévisualisations des maillages" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Créer un Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Créer un CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Créer un CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Créer un LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Créer un LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Le sprite est vide !" @@ -7424,9 +7697,8 @@ msgid "Simplification: " msgstr "Simplification : " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Croissance (Pixels) : " +msgstr "Rétrécir (Pixels) : " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7453,6 +7725,11 @@ msgid "Add Frame" msgstr "Ajouter une image" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Impossible de charger la ressource." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "ERREUR : Impossible de charger la resource de type trame !" @@ -7726,6 +8003,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" @@ -7742,8 +8020,8 @@ msgid "Color" msgstr "Couleur" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Constante" +msgid "Theme File" +msgstr "Fichier de Thème" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7855,6 +8133,18 @@ msgid "Merge from Scene" msgstr "Fusionner depuis la scène" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "Nouvelle Simple Tuile" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Nouvelle Auto-tuile" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Nouvel Atlas" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Coordonnée suivante" @@ -7871,6 +8161,34 @@ 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 +msgid "Region" +msgstr "Région" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Collision" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Occlusion" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Navigation" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Priorité" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Z Index" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Mode Région" @@ -8099,6 +8417,16 @@ msgid "Edit Tile Z Index" msgstr "Modifier l'index Z de la tuile" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Rendre le polygon Convex" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Rendre le polygone concave" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Créer le polygone de collision" @@ -8214,9 +8542,8 @@ msgid "(GLES3 only)" msgstr "(GLES3 seulement)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Ajouter une sortie +" +msgstr "Ajouter une sortie" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8232,7 +8559,7 @@ msgstr "Booléen" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sampler" -msgstr "" +msgstr "Échantillonneur" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8364,8 +8691,8 @@ msgid "Dodge operator." msgstr "Opérateur d'évitement." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Opérateur HardLight" +msgid "HardLight operator." +msgstr "Opérateur de lumière forte." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8381,7 +8708,7 @@ msgstr "Opérateur d'écran." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "SoftLight operator." -msgstr "Opérateur SoftLight." +msgstr "Opérateur de lumière douce." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color constant." @@ -9011,9 +9338,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" "Expression personnalisée du langage de shader Godot, qui est placée au-" "dessus du shader obtenu. Vous pouvez insérer diverses définitions de " @@ -9094,6 +9422,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 ?" @@ -9144,6 +9480,15 @@ msgid "Add..." msgstr "Ajouter…" #: 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 "" +"Si cette option est activée, le pré-réglage sera disponible pour le " +"déploiement en un clic.\n" +"Un seul pré-réglage par plateforme peut être marqué comme exécutable." + +#: editor/project_export.cpp msgid "Export Path" msgstr "Chemin d'exportation" @@ -9172,22 +9517,20 @@ msgid "Resources to export:" msgstr "Ressources à exporter :" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filtres d'export de fichiers non ressources (séparés par des virgules, par " -"exemple : *.json, *.txt) :" +"Filtres pour exporter des fichiers/dossiers non-ressources\n" +"(séparés par des virgules, par exemple : *.json, *.txt, docs/*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filtres pour exclure des fichiers du projet (séparés par des virgules, par " -"exemple: *.json, *.txt) :" +"Filtres pour exclure les fichiers/dossiers du projet\n" +"(séparés par des virgules, par exemple : *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9198,6 +9541,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" @@ -9235,7 +9582,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" @@ -9249,6 +9596,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 :" @@ -9558,6 +9913,10 @@ msgid "Projects" msgstr "Projets" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Dernière modification" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Scanner" @@ -9642,18 +10001,6 @@ msgid "Device" msgstr "Périphérique" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Maj+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Contrôle+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Appuyez sur une touche…" @@ -10236,13 +10583,12 @@ msgstr "" "propriétés du nÅ“ud." #: 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 "" -"Désactiver \"editable_instance\" implique la remise à zéro de toutes les " -"propriétés du nÅ“ud." +"L'activation de \"Load As Placeholder\" désactivera \"Editable Children\" et " +"ramènera toutes les propriétés du nÅ“ud à leur valeur par défaut." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10582,19 +10928,16 @@ msgid "Will load an existing script file." msgstr "Va charger un fichier de script existant." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Nom de classe" +msgstr "Nom de la classe :" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Modèle" +msgstr "Modèle :" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Script intégré" +msgstr "Script intégré :" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10898,10 +11241,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "Attendu une chaîne de longueur 1 (un caractère)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "L'argument du pas est zéro !" @@ -11042,6 +11381,11 @@ msgid "Cursor Clear Rotation" msgstr "Effacer rotation curseur" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Supprimer la sélection" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Supprimer la sélection" @@ -11193,6 +11537,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." @@ -11241,7 +11593,6 @@ msgid "Add Function" msgstr "Ajouter une fonction" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "Supprimer le port d'entrée" @@ -11254,22 +11605,10 @@ msgid "Add Signal" msgstr "Ajouter un signal" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Input Port" -msgstr "Ajouter un port d'entrée" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Ajouter un port de sortie" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "Supprimer le port d'entrée" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" msgstr "Supprimer le port de sortie" @@ -11318,10 +11657,6 @@ msgid "Add Preload Node" msgstr "Ajouter un nÅ“ud préchargé" #: 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 "Ajouter un nÅ“ud à partir de l'arbre" @@ -11330,6 +11665,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 "" +"Impossible de supprimer les propriétés car le script'%s' n'est pas utilisé " +"dans cette scène.\n" +"Lâchez la touche 'Shift' pour simplement copier la signature." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11356,9 +11694,8 @@ msgid "Connect Nodes" msgstr "Connecter nÅ“ud" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Connecter nÅ“ud" +msgstr "Déconnecter les nÅ“uds" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11393,26 +11730,26 @@ msgid "Paste VisualScript Nodes" msgstr "Coller les nÅ“uds VisualScript" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "Impossible de copier le nÅ“ud de fonction." +msgstr "Impossible de créer une fonction avec un nÅ“ud de fonction." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" +"Impossible de créer une fonction de nÅ“uds à partir de nÅ“uds de plusieurs " +"fonctions." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +msgstr "Sélectionnez au moins un nÅ“ud avec un port de séquence." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Essayez de n'avoir qu'une seule entrée de séquence dans la sélection." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Renommer la fonction" +msgstr "Créer une fonction" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11443,9 +11780,20 @@ msgid "Members:" msgstr "Membres :" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy +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 "Fonctions :" +msgstr "function_name" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11468,14 +11816,12 @@ msgid "Cut Nodes" msgstr "Couper les nÅ“uds" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Renommer la fonction" +msgstr "Faire fonction" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Rafraîchir" +msgstr "Rafraîchir le graphique" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11671,31 +12017,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." @@ -11709,7 +12034,7 @@ msgstr "L'icône requise n'est pas spécifiée dans le préréglage." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Arrêter le serveur HTTP" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11744,8 +12069,16 @@ msgid "Using default boot splash image." msgstr "Impossible de lire l'image de démarrage." #: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "Nom abrégé du paquet invalide." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." -msgstr "Nom unique de paquet invalide." +msgstr "Nom unique du paquet invalide." + +#: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "Nom d'affichage d'éditeur du paquet invalide." #: platform/uwp/export/export.cpp msgid "Invalid product GUID." @@ -12426,6 +12759,37 @@ 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" + +#~ msgid "Shift+" +#~ msgstr "Maj+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Contrôle+" + #~ msgid "Snap to Grid" #~ msgstr "Aimanter à la grille" diff --git a/editor/translations/ga.po b/editor/translations/ga.po index ea55d235b7..f60101096c 100644 --- a/editor/translations/ga.po +++ b/editor/translations/ga.po @@ -1,6 +1,6 @@ # Irish translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Rónán Quill <ronan085@gmail.com>, 2019. msgid "" @@ -23,6 +23,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -406,6 +410,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -507,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 "" @@ -694,6 +703,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 +783,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -941,7 +958,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 +1423,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 +1664,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 "" @@ -1913,6 +1935,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1948,6 +1978,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2555,7 +2605,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 "" @@ -2763,7 +2814,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2866,6 +2917,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 +2977,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 "" @@ -3230,6 +3289,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3352,6 +3419,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 "" @@ -3428,6 +3499,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4139,6 +4214,19 @@ msgid "" 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 +#, fuzzy +msgid "Functions" +msgstr "Cruthaigh" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4369,6 +4457,11 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Athrú: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4448,6 +4541,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" @@ -4702,6 +4799,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 "" @@ -4805,6 +4926,14 @@ 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 "" @@ -4813,6 +4942,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "Scála:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -4881,6 +5015,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 "" @@ -4894,6 +5096,20 @@ 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 "" @@ -5028,6 +5244,10 @@ 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 "" @@ -5167,7 +5387,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5507,11 +5727,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6137,6 +6371,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 "" @@ -6263,10 +6514,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 "" @@ -6357,10 +6604,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6386,6 +6629,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7020,18 +7268,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7108,6 +7372,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7381,6 +7649,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7397,8 +7666,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "" +#, fuzzy +msgid "Theme File" +msgstr "Amharc ar Chomhaid" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7509,6 +7779,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 "" @@ -7525,6 +7807,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 "" @@ -7733,6 +8043,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -7998,7 +8316,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8585,9 +8903,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8651,6 +8970,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 "" @@ -8696,6 +9023,12 @@ 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 "" @@ -8744,6 +9077,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8795,6 +9132,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 "" @@ -9052,6 +9397,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9132,18 +9481,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10353,10 +10690,6 @@ 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 "" @@ -10493,6 +10826,10 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10636,6 +10973,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 "" @@ -10697,15 +11043,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 "" @@ -10754,10 +11091,6 @@ 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 "" @@ -10836,7 +11169,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10877,6 +11210,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 "" @@ -11073,27 +11419,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 "" @@ -11142,10 +11471,18 @@ 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 "" diff --git a/editor/translations/he.po b/editor/translations/he.po index 501c0c731e..66c0a8fa89 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -1,6 +1,6 @@ # Hebrew translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Daniel <lorddaniel09@gmail.com>, 2018. # Ben Golan <golanben4@gmail.com>, 2017. @@ -32,6 +32,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "×ž×©×ª× ×” סוג ×œ× ×—×•×§×™ ×œ×¤×•× ×§×¦×™×™×ª convert()‎, יש להשתמש בקבועי TYPE_*‎." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "" + +#: 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." @@ -443,6 +447,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "הוספת רצועת בזייה" @@ -553,8 +561,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 +758,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 +841,11 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "מ××¤×™×™× ×™ פריט." + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -1006,7 +1024,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 +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 "ש×" @@ -1746,6 +1765,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 "" @@ -2031,6 +2055,15 @@ msgid "Search Help" msgstr "חיפוש בעזרה" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "תלוי רישיות" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "חיפוש" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "הצגה × ×•×¨×ž×œ×™×ª" @@ -2075,6 +2108,30 @@ msgstr "חברי×" msgid "Class" msgstr "מחלקה:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "שיטות" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "×ותות" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "קבוע" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "מ××¤×™×™× ×™×" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "מ××¤×™×™× ×™×" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2700,7 +2757,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 "מיז×" @@ -2923,8 +2981,8 @@ msgid "Play" msgstr "× ×’×™× ×”" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "השהיית ×”×¡×¦× ×”" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3033,6 +3091,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 +3152,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 "" @@ -3405,6 +3473,14 @@ msgid "Importing:" msgstr "ייבו×:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3530,6 +3606,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 "×ž× ×”×œ ×™×™×¦×•× ×ª×‘× ×™×•×ª" @@ -3611,6 +3692,11 @@ msgstr "×¡×¦× ×” חדשה בירושה…" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "× × ×œ×‘×—×•×¨ ×¡×¦× ×” ר×שית" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "פתיחת ×¡×¦× ×”" @@ -4385,6 +4471,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "קטעי ×”× ×¤×©×”:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "מ×זין לשמע" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "×¤×•× ×§×¦×™×•×ª:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4628,6 +4729,11 @@ msgstr "מצב ×”×–×–×” (W)" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "מעברון" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "מעברון" @@ -4714,6 +4820,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" @@ -4976,6 +5087,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 "" @@ -5083,6 +5220,14 @@ 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 "" @@ -5091,6 +5236,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "יחס מתיחה:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -5165,6 +5315,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 "" @@ -5178,6 +5408,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "בחירת מיקוד" @@ -5325,6 +5569,11 @@ msgid "Use Rotation Snap" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "מצב מרחב מקומי (%s)" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "" @@ -5469,7 +5718,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5822,11 +6071,26 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "×™×™×¦×•× ×¡×¤×¨×™×”" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6477,6 +6741,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 "×™×™×‘×•× ×¢×¨×›×ª עיצוב" @@ -6609,10 +6890,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 "לצעוד לתוך" @@ -6711,11 +6988,6 @@ msgid "Source" msgstr "מש×ב" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "×ותות" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6743,6 +7015,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "× ×™×ª×Ÿ להשמיט מש××‘×™× ×ž×ž×¢×¨×›×ª ×”×§×‘×¦×™× ×‘×œ×‘×“." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7411,20 +7688,39 @@ msgstr "יצירת %s חדש" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "תצוגה מקדימה:" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "יצירת מצולע" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "יצירת מצולע" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "יצירת מצולע" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "יצירת תיקייה" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "יצירת תיקייה" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7507,6 +7803,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "×˜×¢×™× ×ª המש×ב × ×›×©×œ×”." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7793,6 +8094,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7809,8 +8111,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "קבוע" +#, fuzzy +msgid "Theme File" +msgstr "פתיחת קובץ" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7928,6 +8231,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 "הסקריפט הב×" @@ -7947,6 +8262,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 "מצב גולמי" @@ -8181,6 +8530,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "הזזת מצולע" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "הזזת מצולע" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "יצירת מצולע" @@ -8474,8 +8833,9 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "×©×™× ×•×™ ×§× ×” מידה (יחס):" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -9069,9 +9429,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9136,6 +9497,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 "" @@ -9182,6 +9552,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "×™×™×¦×•× ×ž×™×–×" @@ -9231,6 +9607,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " קבצי×" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9286,6 +9667,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 "" @@ -9550,6 +9940,10 @@ msgid "Projects" msgstr "מיז×" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9634,18 +10028,6 @@ msgid "Device" msgstr "התקן" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "× × ×œ×œ×—×•×¥ על מקש…" @@ -10917,10 +11299,6 @@ 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 "" @@ -11059,6 +11437,11 @@ msgid "Cursor Clear Rotation" msgstr "מחיקת הטיית מצביע" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "כל הבחירה" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "ביטול הבחירה" @@ -11204,6 +11587,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 "×©× ×©×’×•×™. ×œ× ×™×›×•×œ לחפוף ×œ×©× ×¡×•×’ ×ž×•×‘× ×” ×§×™×™×." @@ -11269,16 +11662,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 "הסרת × ×§×•×“×” ×‘× ×ª×™×‘" @@ -11328,10 +11711,6 @@ 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 "" @@ -11414,7 +11793,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11456,6 +11835,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 "×¤×•× ×§×¦×™×•×ª:" @@ -11657,27 +12051,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 "" @@ -11728,11 +12105,21 @@ msgstr "× ×¢×©×” שימוש ×‘×ª×ž×•× ×ª הפתיח כבררת מחדל." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "×©× ×©×’×•×™." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "×©× ×©×’×•×™." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "×©× ×©×’×•×™." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "×©× ×©×’×•×™." @@ -12276,6 +12663,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "השהיית ×”×¡×¦× ×”" + #, fuzzy #~ msgid "Add input +" #~ msgstr "הוספת ×ירוע" @@ -12395,9 +12785,6 @@ msgstr "" #~ msgid "Update Always" #~ msgstr "לעדכן תמיד" -#~ msgid "Raw Mode" -#~ msgstr "מצב גולמי" - #~ msgid "Path to Node:" #~ msgstr "× ×ª×™×‘ המפרק:" @@ -12504,10 +12891,6 @@ msgstr "" #~ msgstr "פריטי ×ž× ×©×§ משתמש של ערכת העיצוב:" #, fuzzy -#~ msgid "Property: " -#~ msgstr "מ××¤×™×™× ×™×" - -#, fuzzy #~ msgid "Toggle folder status as Favorite." #~ msgstr "החלפת מצב התיקייה כמועדפת" @@ -12582,9 +12965,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "להחליף ב־" -#~ msgid "Case Sensitive" -#~ msgstr "תלוי רישיות" - #~ msgid "Backwards" #~ msgstr "×חורה" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index cd3acd484e..20f3837208 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -1,6 +1,6 @@ # Hindi translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Abhas Kumar Sinha <abhaskumarsinha@gmail.com>, 2017. # Suryansh5545 <suryanshpathak5545@gmail.com>, 2018. @@ -8,12 +8,13 @@ # vkubre <v@kubre.in>, 2019. # Abhay Patel <abhay111patel@gmail.com>, 2019. # Lakshmi-Jayakumar <lakshmi.jayakumar.tkm@gmail.com>, 2019. +# Devashishsingh98 <devashishsingh98@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-17 04:52+0000\n" -"Last-Translator: Lakshmi-Jayakumar <lakshmi.jayakumar.tkm@gmail.com>\n" +"PO-Revision-Date: 2019-11-01 19:50+0000\n" +"Last-Translator: Devashishsingh98 <devashishsingh98@gmail.com>\n" "Language-Team: Hindi <https://hosted.weblate.org/projects/godot-engine/godot/" "hi/>\n" "Language: hi\n" @@ -21,7 +22,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\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 @@ -29,6 +30,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "कनà¥à¤µà¤°à¥à¤Ÿ करने के लिठअमानà¥à¤¯ पà¥à¤°à¤•ार तरà¥à¤• (), TYPE_ * सà¥à¤¥à¤¿à¤°à¤¾à¤‚क का उपयोग करें।" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -71,9 +76,8 @@ msgid "KiB" msgstr "KiB" #: core/ustring.cpp -#, fuzzy msgid "MiB" -msgstr "MiB" +msgstr "MIB" #: core/ustring.cpp msgid "GiB" @@ -105,11 +109,11 @@ msgstr "पà¥à¤°à¤¤à¤¿à¤®à¤¾" #: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp msgid "Time:" -msgstr "समय" +msgstr "समय:" #: editor/animation_bezier_editor.cpp msgid "Value:" -msgstr "" +msgstr "मूलà¥à¤¯ :" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" @@ -120,9 +124,8 @@ msgid "Duplicate Selected Key(s)" msgstr "चयनित चाबी (फ़ाइलें) डà¥à¤ªà¥à¤²à¤¿à¤•ेट" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Delete Selected Key(s)" -msgstr "चयनित फ़ाइलें हटाà¤à¤‚?" +msgstr "चयनित फ़ाइलें हटाà¤à¤‚" #: editor/animation_bezier_editor.cpp msgid "Add Bezier Point" @@ -130,31 +133,27 @@ msgstr "बेज़ियर पॉइंट तैयार करे" #: editor/animation_bezier_editor.cpp msgid "Move Bezier Points" -msgstr "" +msgstr "बेज़ियर पॉइंटà¥à¤¸ को सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरित करें" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" msgstr "Anim डà¥à¤ªà¥à¤²à¤¿à¤•ेट चाबी" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Delete Keys" -msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ को हटाने के लिठकà¥à¤‚जी" +msgstr "Anim को हटाने के लिठकà¥à¤‚जी" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ परिवरà¥à¤¤à¤¨ निधि" +msgstr "Anim परिवरà¥à¤¤à¤¨ निधि" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Change Transition" -msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ परिवरà¥à¤¤à¤¨ बà¥à¤²à¤¾à¤µà¤¾" +msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ परिवरà¥à¤¤à¤¨ संकà¥à¤°à¥à¤°à¤¾à¤‚ति" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Change Transform" -msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ परिवरà¥à¤¤à¤¨ परिणत" +msgstr "Anim परिवरà¥à¤¤à¤¨ परिणत" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" @@ -432,6 +431,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "टà¥à¤°à¥ˆà¤• जोड़ें" @@ -537,8 +540,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 "" @@ -729,6 +733,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 +820,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp #, fuzzy msgid "Advanced" msgstr "संतà¥à¤²à¤¿à¤¤" @@ -1005,7 +1017,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 "पथ" @@ -1494,7 +1506,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 "" @@ -1740,6 +1753,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 "" @@ -2012,6 +2029,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -2048,6 +2073,28 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "संकेत" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "गà¥à¤£(Property) टà¥à¤°à¥ˆà¤•" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2662,7 +2709,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 "" @@ -2873,7 +2921,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2976,6 +3024,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 "" @@ -3032,6 +3084,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." @@ -3344,6 +3400,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3471,6 +3535,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 "" @@ -3553,6 +3621,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp #, fuzzy msgid "Open Scenes" msgstr "खोलो इसे" @@ -4289,6 +4361,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "टà¥à¤°à¥ˆà¤• जोड़ें" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "कारà¥à¤¯à¥‹à¤‚:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4522,6 +4608,11 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "अनà¥à¤µà¤¾à¤¦ में बदलाव करें:" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "अनà¥à¤µà¤¾à¤¦ में बदलाव करें:" @@ -4607,6 +4698,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" @@ -4863,6 +4958,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 "" @@ -4967,6 +5088,14 @@ 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 "" @@ -4975,6 +5104,10 @@ 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 "" @@ -5047,6 +5180,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 "" @@ -5060,6 +5261,20 @@ 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 "" @@ -5199,6 +5414,10 @@ 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 "" @@ -5338,7 +5557,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5684,11 +5903,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6326,6 +6559,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 "" @@ -6454,10 +6704,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 "" @@ -6550,11 +6796,6 @@ msgid "Source" msgstr "संसाधन" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "संकेत" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6583,6 +6824,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7221,21 +7467,39 @@ msgid "Create Mesh2D" msgstr "à¤à¤• नया बनाà¤à¤‚" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "à¤à¤• नया बनाà¤à¤‚" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "à¤à¤• नया बनाà¤à¤‚" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7315,6 +7579,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7594,6 +7862,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7610,8 +7879,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "" +#, fuzzy +msgid "Theme File" +msgstr "खोलो इसे" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7724,6 +7994,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 "" @@ -7740,6 +8022,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 "" @@ -7964,6 +8277,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" @@ -8243,7 +8566,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8836,9 +9159,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8902,6 +9226,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 "" @@ -8947,6 +9280,12 @@ 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 "" @@ -8995,6 +9334,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9046,6 +9389,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 "" @@ -9307,6 +9658,10 @@ msgid "Projects" msgstr "परियोजना के संसà¥à¤¥à¤¾à¤ªà¤•" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9389,18 +9744,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10631,10 +10974,6 @@ 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 "" @@ -10773,6 +11112,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "सà¤à¥€ खंड" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10916,6 +11260,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 "" @@ -10981,16 +11335,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 "मिटाना" @@ -11040,10 +11384,6 @@ 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 "" @@ -11123,7 +11463,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11164,6 +11504,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 "कारà¥à¤¯à¥‹à¤‚:" @@ -11363,27 +11717,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 "" @@ -11434,11 +11771,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "गलत फॉणà¥à¤Ÿ का आकार |" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "गलत फॉणà¥à¤Ÿ का आकार |" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "गलत फॉणà¥à¤Ÿ का आकार |" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "गलत फॉणà¥à¤Ÿ का आकार |" diff --git a/editor/translations/hr.po b/editor/translations/hr.po index 6322a85090..09ae51b66d 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -1,6 +1,6 @@ # Croatian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Unlimited Creativity <marinosah1@gmail.com>, 2019. # Patik <patrikfs5@gmail.com>, 2019. @@ -25,6 +25,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Neispravan argument za convert(), upotrijebi konstantu TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -409,6 +413,10 @@ msgid "Not possible to add a new track without a root" msgstr "Nije moguće dodati novu stazu bez korijena" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Dodaj Bezier Stazu" @@ -511,8 +519,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 +707,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 +789,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 +969,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 +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 "" @@ -1660,6 +1678,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 "" @@ -1927,6 +1949,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1962,6 +1992,27 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Idi na metodu" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2569,7 +2620,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 "" @@ -2777,7 +2829,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2881,6 +2933,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 +2993,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 "" @@ -3246,6 +3307,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3368,6 +3437,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 "" @@ -3444,6 +3517,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4154,6 +4231,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Animacijski Klipovi:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Audio Klipovi:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funkcije:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4384,6 +4476,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4463,6 +4559,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" @@ -4717,6 +4818,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 "" @@ -4820,6 +4947,14 @@ 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 "" @@ -4828,6 +4963,10 @@ 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 "" @@ -4897,6 +5036,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 "" @@ -4910,6 +5119,20 @@ 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 "" @@ -5045,6 +5268,10 @@ 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 "" @@ -5184,7 +5411,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5528,11 +5755,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6159,6 +6400,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 "" @@ -6285,10 +6543,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 "" @@ -6379,10 +6633,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6408,6 +6658,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7042,18 +7297,35 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Pregled:" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7130,6 +7402,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7404,6 +7680,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7420,7 +7697,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7531,6 +7808,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 "" @@ -7548,6 +7837,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" @@ -7758,6 +8078,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -8028,7 +8356,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8615,9 +8943,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8681,6 +9010,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 "" @@ -8726,6 +9063,12 @@ 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 "" @@ -8774,6 +9117,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Otvori datoteku" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8825,6 +9173,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 "" @@ -9082,6 +9439,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9162,18 +9523,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10390,10 +10739,6 @@ 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 "" @@ -10530,6 +10875,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Brisati odabrani kljuÄ/odabrane kljuÄeve" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10672,6 +11022,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 "" @@ -10734,15 +11093,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" @@ -10792,10 +11142,6 @@ 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 "" @@ -10875,7 +11221,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10917,6 +11263,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:" @@ -11114,27 +11474,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 "" @@ -11183,10 +11526,18 @@ 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 "" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index bc1ab1bdd1..90330ac2d6 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -1,6 +1,6 @@ # Hungarian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Ãrpád Horváth <horvatha4@googlemail.com>, 2018. # Nagy Lajos <neutron9707@gmail.com>, 2017. @@ -9,12 +9,13 @@ # Gabor Csordas <gaborcsordas@yahoo.com>, 2018, 2019. # Tusa Gamer <tusagamer@mailinator.com>, 2018. # Máté Lugosi <mate.lugosi@gmail.com>, 2019. +# sztrovacsek <magadeve@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-07-29 19:20+0000\n" -"Last-Translator: Gabor Csordas <gaborcsordas@yahoo.com>\n" +"PO-Revision-Date: 2019-12-26 00:02+0000\n" +"Last-Translator: sztrovacsek <magadeve@gmail.com>\n" "Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/" "godot/hu/>\n" "Language: hu\n" @@ -22,7 +23,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.8-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 @@ -31,6 +32,10 @@ msgstr "" "Érvénytelen tÃpus argumentum a convert()-hez használjon TYPE_* konstansokat." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -68,32 +73,31 @@ msgstr "'%s' hÃvásánál:" #: core/ustring.cpp msgid "B" -msgstr "" +msgstr "B" #: core/ustring.cpp msgid "KiB" -msgstr "" +msgstr "KiB" #: core/ustring.cpp -#, fuzzy msgid "MiB" -msgstr "Mixelés" +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" @@ -190,9 +194,8 @@ msgid "Anim Multi Change Call" msgstr "Animáció hÃvás változtatás" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Length" -msgstr "Animáció Nevének Megváltoztatása:" +msgstr "Animáció hosszának megváltoztatása" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -240,9 +243,8 @@ msgid "Add Track" msgstr "Animáció nyomvonal hozzáadás" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation Looping" -msgstr "Animáció nagyÃtás." +msgstr "Animáció ismételtetése" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -307,9 +309,8 @@ msgid "Trigger" msgstr "ÉrzékelÅ‘" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Capture" -msgstr "JövÅ‘" +msgstr "Felvétel" #: editor/animation_track_editor.cpp msgid "Nearest" @@ -322,7 +323,7 @@ msgstr "Lineáris" #: editor/animation_track_editor.cpp msgid "Cubic" -msgstr "" +msgstr "Köbös" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" @@ -407,9 +408,8 @@ msgid "Anim Insert Key" msgstr "Animáció kulcs beillesztés" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Change Animation Step" -msgstr "Animáció Nevének Megváltoztatása:" +msgstr "Animáció léptékének megváltoztatása" #: editor/animation_track_editor.cpp #, fuzzy @@ -441,6 +441,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Animáció nyomvonal hozzáadás" @@ -553,8 +557,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 +754,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 +843,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 +1033,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 +1518,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 +1783,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" @@ -2060,6 +2080,15 @@ msgid "Search Help" msgstr "Keresés Súgóban" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Pontos Egyezés" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "SegÃtÅ‘k MegjelenÃtése" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "Mind Lecserélése" @@ -2104,6 +2133,30 @@ msgstr "Tagok" msgid "Class" msgstr "Osztály:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metódusok" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Jelzések" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Ãllandó" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Tulajdonságok" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Tulajdonságok" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2779,7 +2832,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" @@ -3020,8 +3074,8 @@ msgid "Play" msgstr "Játék" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Szünetelteti a jelenetet" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3130,6 +3184,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 +3245,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." @@ -3507,6 +3570,14 @@ msgid "Importing:" msgstr "Importálás:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3635,6 +3706,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Å‘" @@ -3718,6 +3794,11 @@ msgstr "Új örökölt Jelenet..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Válasszon egy FÅ‘ Jelenetet" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Scene megnyitás" @@ -4504,6 +4585,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Animáció nyomvonal hozzáadás" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funkciók:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4749,6 +4844,11 @@ msgstr "Mozgás Mód" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Ãtmenet" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Ãtmenet" @@ -4835,6 +4935,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" @@ -5099,6 +5204,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Å‘" @@ -5217,6 +5348,15 @@ msgid "Grid Step:" msgstr "Rács Léptetés:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 lépés" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Forgatási Eltolás:" @@ -5226,6 +5366,11 @@ msgstr "Forgatási Léptetés:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "Skála:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "FüggÅ‘leges vezetÅ‘vonal mozgatása" @@ -5306,6 +5451,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" @@ -5319,6 +5543,20 @@ msgstr "Horgonyok MódosÃtása" #: 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 #, fuzzy msgid "Lock Selected" msgstr "Kiválaszt" @@ -5471,6 +5709,11 @@ msgid "Use Rotation Snap" msgstr "Forgatási Illesztés Használata" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "Illesztés Használata" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "RelatÃv Illesztés" @@ -5621,7 +5864,7 @@ msgstr "Kulcs Beszúrása (MeglévÅ‘ Nyomvonalakra)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5981,11 +6224,27 @@ msgstr "Körvonalháló KészÃtése" msgid "Outline Size:" msgstr "Körvonal Mérete:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "%d elem eltávolÃtása?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "FrissÃtés JelenetbÅ‘l" + +#: 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" @@ -6650,6 +6909,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" @@ -6783,10 +7059,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" @@ -6885,11 +7157,6 @@ msgid "Source" msgstr "Forrás" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Jelzések" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6918,6 +7185,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "Csak a fájlrendszerbÅ‘l eredÅ‘ erÅ‘forrásokat lehet bedobni." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Lookup Symbol" msgstr "Szimbólum Befejezése" @@ -7581,21 +7853,40 @@ msgstr "Körvonalháló KészÃtése" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Háló ElÅ‘nézetek Létrehozása" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Sokszög Létrehozása" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Navigációs Sokszög Létrehozása" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Navigációs Sokszög Létrehozása" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Ãrnyékoló Sokszög Létrehozása" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Ãrnyékoló Sokszög Létrehozása" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "A háló üres!" @@ -7679,6 +7970,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Nem sikerült betölteni az erÅ‘forrást." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7968,6 +8264,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7984,8 +8281,9 @@ msgid "Color" msgstr "SzÃn" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Ãllandó" +#, fuzzy +msgid "Theme File" +msgstr "Fálj Megnyitása" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8104,6 +8402,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" @@ -8123,6 +8434,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" @@ -8360,6 +8706,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Sokszög Mozgatása" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Sokszög Mozgatása" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Navigációs Sokszög Létrehozása" @@ -8657,8 +9013,9 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "Skaláris kezelÅ‘ változtatás" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -9259,9 +9616,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9328,6 +9686,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 "" @@ -9374,6 +9741,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "Projekt Exportálása" @@ -9423,6 +9796,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Fájlok" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9478,6 +9856,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 "" @@ -9742,6 +10129,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9825,18 +10216,6 @@ msgid "Device" msgstr "Eszköz" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -11109,10 +11488,6 @@ 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 "" @@ -11251,6 +11626,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Minden kiválasztás" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -11402,6 +11782,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." @@ -11467,16 +11857,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" @@ -11526,10 +11906,6 @@ 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 "" @@ -11612,7 +11988,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11655,6 +12031,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:" @@ -11856,27 +12247,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 "" @@ -11927,11 +12301,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Érvénytelen név." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Érvénytelen név." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Érvénytelen név." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Érvénytelen projektnév." @@ -12477,6 +12861,18 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "Szünetelteti a jelenetet" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "Rácshoz illesztés" @@ -12700,10 +13096,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" @@ -12727,10 +13119,6 @@ msgstr "" #~ msgstr "GUI Téma Elemek:" #, fuzzy -#~ msgid "Property: " -#~ msgstr "Tulajdonságok" - -#, fuzzy #~ msgid "Toggle folder status as Favorite." #~ msgstr "Mappa Kedvencnek jelölése / Kedvenc jelölés visszavonása" @@ -12947,9 +13335,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "Lecserél" -#~ msgid "Case Sensitive" -#~ msgstr "Pontos Egyezés" - #~ msgid "Backwards" #~ msgstr "Visszafelé" diff --git a/editor/translations/id.po b/editor/translations/id.po index dc8e5c10d5..6024727388 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -1,6 +1,6 @@ # Indonesian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Abdul Aziz Muslim Alqudsy <abdul.aziz.muslim.alqudsy@gmail.com>, 2016. # Andevid Dynmyn <doyan4forum@gmail.com>, 2016. @@ -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 @@ -43,6 +44,10 @@ msgstr "" "Tipe argumen salah dalam menggunakan convert(), gunakan konstanta TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -432,6 +437,10 @@ msgid "Not possible to add a new track without a root" msgstr "Tidak memungkinkan untuk menambah track baru tanpa akar" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Tambah Track Bezier" @@ -544,8 +553,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 +656,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 +669,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 +741,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 +823,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 +1004,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 +1476,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 +1727,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" @@ -1984,6 +2007,15 @@ msgid "Search Help" msgstr "Mencari Bantuan" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Case Sensitive" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Tampilkan Bantuan-bantuan" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Tampilkan Semua" @@ -2019,6 +2051,29 @@ msgstr "Tipe Anggota" msgid "Class" msgstr "Kelas" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Fungsi" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Sinyal" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Konstan" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Properti:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Properti-properti Tema" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Properti:" @@ -2673,7 +2728,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" @@ -2900,8 +2956,8 @@ msgid "Play" msgstr "Mainkan" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Hentikan sementara skena ini" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3014,6 +3070,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 +3131,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." @@ -3389,6 +3455,14 @@ msgid "Importing:" msgstr "Mengimpor:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3515,6 +3589,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" @@ -3593,6 +3672,11 @@ msgid "New Inherited Scene" msgstr "Skena Warisan Baru" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Set As Main Scene" +msgstr "Skena Utama" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Buka Skena" @@ -4319,6 +4403,21 @@ msgstr "" "nama track." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Klip-klip Animasi:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Klip-klip Suara:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Fungsi-fungsi:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Node Telah Diubah Namanya" @@ -4549,6 +4648,11 @@ msgid "Move Node" msgstr "Pindahkan Node" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Transisi: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Tambah Transisi" @@ -4631,6 +4735,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" @@ -4886,6 +4995,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" @@ -4994,6 +5129,15 @@ msgid "Grid Step:" msgstr "Jangkah Kotak-kotak:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 langkah" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Offset Perputaran:" @@ -5002,6 +5146,11 @@ msgid "Rotation Step:" msgstr "Jangkah Perputaran:" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "Skala:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Pindahkan Panduan Vertikal" @@ -5074,6 +5223,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" @@ -5087,6 +5317,20 @@ msgstr "Ubah Jangkar-jangkar" #: 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 "Kunci yang Dipilih" @@ -5230,6 +5474,11 @@ msgid "Use Rotation Snap" msgstr "Gunakan Snap Rotasi" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "Gunakan Snap" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Snap Relatif" @@ -5369,8 +5618,9 @@ msgid "Insert keys (based on mask)." msgstr "Sisipkan Kunci (berdasarkan mask)." #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5718,11 +5968,27 @@ msgstr "Buat Garis Mesh" msgid "Outline Size:" msgstr "Ukuran Garis Tepi:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Hapus item %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Perbarui dari Skena" + +#: 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" @@ -6357,6 +6623,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" @@ -6483,10 +6766,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" @@ -6579,10 +6858,6 @@ msgid "Source" msgstr "Sumber" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Sinyal" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Target" @@ -6610,6 +6885,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "Hanya sumber daya dari berkas sistem yang dapat dihapus." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Simbol Pencarian" @@ -7254,18 +7534,37 @@ msgid "Create Mesh2D" msgstr "Buat Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Buat Pratinjau Mesh" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Buat Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Buat CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Buat CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Buat LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Buat LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite kosong!" @@ -7343,6 +7642,11 @@ msgid "Add Frame" msgstr "Tambah Frame" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Gagal memuat resource." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "GALAT: Tidak dapat memuat aset frame!" @@ -7616,6 +7920,7 @@ msgid "Data Type:" msgstr "Jenis data:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikon" @@ -7632,8 +7937,9 @@ msgid "Color" msgstr "Warna" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Konstan" +#, fuzzy +msgid "Theme File" +msgstr "Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7745,6 +8051,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" @@ -7761,6 +8081,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" @@ -7988,6 +8343,16 @@ msgid "Edit Tile Z Index" msgstr "Sunting Index Z Tile" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Buat Poligon Cembung" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Buat Poligon Cekung" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Buat Poligon Collision" @@ -8251,7 +8616,8 @@ msgid "Dodge operator." msgstr "Operator dodge." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +#, fuzzy +msgid "HardLight operator." msgstr "Operator HardLight" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8897,10 +9263,12 @@ msgstr "" "permukaan dan arah pandangan kamera (berikan masukan yang terkait dengannya)." #: editor/plugins/visual_shader_editor_plugin.cpp +#, fuzzy msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" "Ekspresi Bahasa Kustom Godot Shader, yang ditempatkan di atas shader yang " "dihasilkan. Anda dapat menempatkan berbagai definisi fungsi di dalamnya dan " @@ -8980,6 +9348,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?" @@ -9030,6 +9407,12 @@ msgid "Add..." msgstr "Tambahkan..." #: 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 "Lokasi Ekspor" @@ -9084,6 +9467,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" @@ -9135,6 +9523,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:" @@ -9437,6 +9834,10 @@ msgid "Projects" msgstr "Proyek" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Pindai" @@ -9521,18 +9922,6 @@ msgid "Device" msgstr "Perangkat" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Kontrol+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Tekan Tombol..." @@ -10757,10 +11146,6 @@ 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 "Argumen step adalah nol!" @@ -10905,6 +11290,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "Hapus Pilihan" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "Beri Skala Seleksi" @@ -11059,6 +11449,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." @@ -11124,16 +11524,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" @@ -11188,10 +11578,6 @@ msgid "Add Preload Node" msgstr "Tambahkan Node" #: 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 "Tambahkan Node (Node-node) dari Tree" @@ -11280,7 +11666,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11322,6 +11708,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:" @@ -11530,28 +11931,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 "" @@ -11608,11 +11992,21 @@ msgstr "Tidak dapat membuat folder." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Nama tidak sah." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Nama tidak sah." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Nama tidak sah." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Ukuran font tidak sah." @@ -12194,13 +12588,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 "" @@ -12216,14 +12609,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." @@ -12245,6 +12636,18 @@ msgstr "Variasi hanya bisa ditetapkan dalam fungsi vertex." msgid "Constants cannot be modified." msgstr "Konstanta tidak dapat dimodifikasi." +#~ msgid "Pause the scene" +#~ msgstr "Hentikan sementara skena ini" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Kontrol+" + #~ msgid "Snap to Grid" #~ msgstr "Kancing ke Kisi" @@ -12796,9 +13199,6 @@ msgstr "Konstanta tidak dapat dimodifikasi." #~ msgid "Replace By" #~ msgstr "Ganti dengan" -#~ msgid "Case Sensitive" -#~ msgstr "Case Sensitive" - #~ msgid "Backwards" #~ msgstr "Ke belakang" @@ -12873,9 +13273,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 77ca21f932..372960230e 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -1,6 +1,6 @@ # Icelandic translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Jóhannes G. Þorsteinsson <johannesg@johannesg.com>, 2017, 2018. # Kaan Gül <qaantum@hotmail.com>, 2018. @@ -25,6 +25,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -428,6 +432,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Anim bæta við lag" @@ -533,8 +541,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 +735,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 +815,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -974,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 "" @@ -1440,7 +1457,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 +1700,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 "" @@ -1949,6 +1971,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1984,6 +2014,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2594,7 +2644,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 "" @@ -2804,7 +2855,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2908,6 +2959,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 +3019,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 "" @@ -3273,6 +3332,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3395,6 +3462,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 "" @@ -3471,6 +3542,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4188,6 +4263,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Anim bæta við lag" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Val á kvarða" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4421,6 +4510,11 @@ msgstr "Hreyfa Viðbótar Lykil" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Stillið breyting á:" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Stillið breyting á:" @@ -4503,6 +4597,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" @@ -4757,6 +4855,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 "" @@ -4860,6 +4982,14 @@ 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 "" @@ -4868,6 +4998,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "Val á kvarða" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -4938,6 +5073,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 "" @@ -4951,6 +5154,20 @@ 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 "" @@ -5089,6 +5306,10 @@ 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 "" @@ -5228,7 +5449,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5571,11 +5792,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6205,6 +6440,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 "" @@ -6331,10 +6583,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 "" @@ -6425,10 +6673,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6454,6 +6698,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7089,20 +7338,37 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "Afrita val" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Breyta Viðbót" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Breyta Viðbót" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7180,6 +7446,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7459,6 +7729,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7475,7 +7746,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7589,6 +7860,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 "" @@ -7605,6 +7888,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 "" @@ -7824,6 +8138,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -8094,7 +8416,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8684,9 +9006,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8750,6 +9073,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 +9126,12 @@ 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 "" @@ -8843,6 +9180,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8894,6 +9235,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 "" @@ -9155,6 +9504,10 @@ msgid "Projects" msgstr "Verkefna Stjóri" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9236,18 +9589,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10462,10 +10803,6 @@ 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 "" @@ -10604,6 +10941,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Allt úrvalið" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10747,6 +11089,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 "" @@ -10810,16 +11162,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" @@ -10869,10 +11211,6 @@ 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 "" @@ -10952,7 +11290,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10993,6 +11331,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 "" @@ -11190,27 +11541,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 "" @@ -11259,10 +11593,18 @@ 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 "" diff --git a/editor/translations/it.po b/editor/translations/it.po index 1341981a73..054b292c45 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -1,6 +1,6 @@ # Italian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Alessio Corridori <alessiocorridori@hotmail.com>, 2018. # Dario Bonfanti <bonfi.96@hotmail.it>, 2016-2017. @@ -39,11 +39,14 @@ # Micila Micillotto <micillotto@gmail.com>, 2019. # Mirko Soppelsa <miknsop@gmail.com>, 2019. # No <kingofwizards.kw7@gmail.com>, 2019. +# StarFang208 <polaritymanx@yahoo.it>, 2019. +# Katia Piazza <gydey@ridiculousglitch.com>, 2019. +# nickfla1 <lanterniniflavio@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" +"PO-Revision-Date: 2019-12-30 17:25+0000\n" "Last-Translator: Micila Micillotto <micillotto@gmail.com>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" @@ -52,7 +55,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 @@ -60,6 +63,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Argomento non valido per convert(), usare le costanti TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Prevista una stringa di lunghezza 1 (singolo carattere)." + +#: 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." @@ -448,6 +455,10 @@ msgid "Not possible to add a new track without a root" msgstr "Non è possibile aggiungere una nuova traccia senza un nodo root" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Aggiungi traccia Bézier" @@ -562,8 +573,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" @@ -664,9 +676,8 @@ msgid "Scale Ratio:" msgstr "Fattore di scalatura:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Seleziona le tracce da copiare:" +msgstr "Seleziona le tracce da copiare" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -678,9 +689,8 @@ msgid "Copy" msgstr "Copia" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Seleziona Nulla" +msgstr "Seleziona Tutto/Nulla" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -751,6 +761,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 @@ -829,6 +843,10 @@ msgid "Extra Call Arguments:" msgstr "Argomenti chiamata extra:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Metodo Ricevitore:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Opzioni avanzate" @@ -1006,7 +1024,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" @@ -1480,7 +1498,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" @@ -1731,6 +1750,10 @@ msgid "Erase Profile" msgstr "Cancella profilo" #: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Profilo Caratteristiche Godot" + +#: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Importa profili" @@ -2006,6 +2029,15 @@ msgid "Search Help" msgstr "Cerca aiuto" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Case Sensitive" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Mostra Guide" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Mostra tutto" @@ -2041,6 +2073,29 @@ msgstr "Tipo di membro" msgid "Class" msgstr "Classe" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metodi" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Segnale" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Costante" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Proprietà :" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Proprietà del tema" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Proprietà :" @@ -2705,7 +2760,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" @@ -2935,8 +2991,8 @@ msgid "Play" msgstr "Esegui" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Metti in pausa la scena" +msgid "Pause the scene execution for debugging." +msgstr "Metti in pausa l'esecuzione della scena per eseguire il debug." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3052,6 +3108,10 @@ msgstr "" msgid "Import Templates From ZIP File" msgstr "Importa template da un file ZIP" +#: editor/editor_node.cpp +msgid "Template Package" +msgstr "Pacchetto Modello" + #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" msgstr "Esporta progetto" @@ -3108,6 +3168,10 @@ msgstr "Apri l'Editor successivo" msgid "Open the previous Editor" msgstr "Apri l'Editor precedente" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Attenzione!" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Nessuna sottorisorsa trovata." @@ -3429,6 +3493,15 @@ msgid "Importing:" msgstr "Importo:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Errore in creazione del signature object." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3555,6 +3628,10 @@ msgid "Select Template File" msgstr "Seleziona file template" #: editor/export_template_manager.cpp +msgid "Godot Export Templates" +msgstr "Template di Export" + +#: editor/export_template_manager.cpp msgid "Export Template Manager" msgstr "Gestore Template Esportazione" @@ -3633,6 +3710,10 @@ msgid "New Inherited Scene" msgstr "Nuova scena ereditata" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Imposta Come Scena Principale" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Apri scene" @@ -4365,6 +4446,18 @@ msgstr "" "impossibile recuperare i nomi delle tracce." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Clip d'animazione" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Clip Audio" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funzioni" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Nodo Rinominato" @@ -4596,6 +4689,11 @@ msgid "Move Node" msgstr "Sposta Nodo" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Transizioni" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Aggiungi Transizione" @@ -4680,6 +4778,10 @@ msgstr "Assegna l'animazione finale. Questo è utile per le sotto-transizioni." msgid "Transition: " msgstr "Transizione: " +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "Modalità Gioco:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4934,6 +5036,30 @@ 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 "Aggiornato Recentemente" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Least Recently Updated" +msgstr "Aggiornato Meno Recentemente" + +#: 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 "Licenza (A-Z)" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "License (Z-A)" +msgstr "Licenza (Z-A)" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "First" msgstr "Primo" @@ -4955,7 +5081,7 @@ msgstr "Tutti" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Nessun risultato per \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5045,6 +5171,14 @@ msgid "Grid Step:" msgstr "Step Griglia:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "Line Primaria Ogni:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "passaggi" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Offset Rotazione:" @@ -5053,6 +5187,10 @@ msgid "Rotation Step:" msgstr "Step Rotazione:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Intervallo:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Muovi Guida Verticale" @@ -5125,6 +5263,74 @@ msgstr "" "loro margini." #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Left" +msgstr "In Alto A Sinistra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Right" +msgstr "In Alto A Destra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Right" +msgstr "In Basso A Destra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Left" +msgstr "In Basso A Sinistra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Left" +msgstr "In Centro A Sinistra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Top" +msgstr "In Centro In Alto" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Right" +msgstr "In Centro A Destra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Bottom" +msgstr "In Centro In Basso" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center" +msgstr "Centro" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Left Wide" +msgstr "Lato sinistro" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Lato Sopra" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Lato Destro" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Lato Sotto" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "Lato Verticale" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "Lato Orizzontale" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Full Rect" +msgstr "Rettangolo Completo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Keep Ratio" +msgstr "Mantieni Le Proporzioni" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Solo ancore" @@ -5138,6 +5344,24 @@ msgstr "Cambia Ancore" #: 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 "" +"Sovrascrivi Camera Gioco\n" +"Sovrascrive la camera del gioco con la camera del viewport dell'editor." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Sovrascrivi Camera Gioco\n" +"Nessuna istanza gioco in funzione." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "Blocca selezionato" @@ -5254,24 +5478,20 @@ msgid "Ruler Mode" msgstr "Modalità Righello" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Abilita snapping." +msgstr "Abilita snapping intelligente." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Usa lo Snap" +msgstr "Usa lo Snap Intelligente" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Abilita snapping." +msgstr "Abilita/Disabilita snapping magnetico." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "Snap Griglia" +msgstr "Usa snap magnetico" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5282,6 +5502,10 @@ msgid "Use Rotation Snap" msgstr "Usa lo Snap di Rotazione" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "Usa lo snap con scala" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Snap Relativo" @@ -5364,9 +5588,8 @@ msgid "View" msgstr "Vista" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Mostra Griglia" +msgstr "Mostra Sempre Griglia" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5422,16 +5645,16 @@ msgstr "Inserisci chiavi (in base alla maschera)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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 "" -"Inserimento automatico di chiavi quando gli oggetti sono traslati, ruotati o " -"ridimensionati (basato sulla maschera).\n" -"Le chiavi sono soltanto aggiunte su tracciati già esistenti, nessun " -"tracciato nuovo verrà creato.\n" -"Le chiavi devono essere inserite manualmente per la prima volta." +"Inserimento automatico chiavi quando l'oggetto è translato, rotato o scalato " +"(basato sule maschere).\n" +"Le chiavi sono aggiunte solamente a tracciati già esistenti, quindi nessun " +"nuovo tracciato sarà creato.\n" +"Le chiavi devono essere inserite manualmente la prima volta." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Auto Insert Key" @@ -5633,9 +5856,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Tenere Premuto Shift per modificare le tangenti singolarmente" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Click Destro: Elimina Punto" +msgstr "Click destro per aggiungere punto" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5771,11 +5993,26 @@ msgstr "Crea Mesh di Outline" msgid "Outline Size:" msgstr "Dimensione Outline:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Rimuovi elemento %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Aggiorna da Scena" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "Libreria Mesh" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Aggiungi Elemento" @@ -6413,6 +6650,25 @@ msgid "Save File As..." msgstr "Salva File Come..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "Impossibile ottenere lo script per l'esecuzione." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "Ricaricando lo script fallito, controlla la console per gli errori." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "Lo script non è in modalità tool, non sarà possibile eseguirlo." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"Per eseguire questo script, bisogna ereditare EditorScript ed impostarlo in " +"modalità tool." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importa Tema" @@ -6539,10 +6795,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" @@ -6635,10 +6887,6 @@ msgid "Source" msgstr "Sorgente" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Segnale" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Target" @@ -6665,6 +6913,12 @@ msgid "Only resources from filesystem can be dropped." msgstr "Solo le risorse dal filesystem possono essere eliminate." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"Impossibile lasciare i nodi perché lo script '%s' non è usato nella scena." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Ricerca Simbolo" @@ -7094,9 +7348,8 @@ msgid "Freelook Speed Modifier" msgstr "Modificatore Velocità Vista Libera" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "Modificatore Velocità Vista Libera" +msgstr "Modificatore Vista Libera Velocità Lenta" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7308,18 +7561,37 @@ msgid "Create Mesh2D" msgstr "Crea Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Creazione Anteprime Mesh" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Crea Poligono 2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Crea Poligono di Collisione 2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Crea Poligono di Collisione 2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Crea Occlusore di Luce 2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Crea Occlusore di Luce 2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Lo sprite è vuoto!" @@ -7370,9 +7642,8 @@ msgid "Simplification: " msgstr "Semplificazione: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Aumento (Pixels): " +msgstr "Rimpicciolisci (Pixels): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7399,6 +7670,11 @@ msgid "Add Frame" msgstr "Aggiungi frame" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Impossibile caricare immagine:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "ERRORE: Impossibile caricare la risorsa frame!" @@ -7672,6 +7948,7 @@ msgid "Data Type:" msgstr "Tipo Dato:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Icona" @@ -7688,8 +7965,8 @@ msgid "Color" msgstr "Colore" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Costante" +msgid "Theme File" +msgstr "File Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7802,6 +8079,18 @@ msgid "Merge from Scene" msgstr "Unisci da Scena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "Nuovo Tile Singolo" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Nuovo Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Nuova Atlas" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Prossima Coordinata" @@ -7818,6 +8107,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Seleziona la precedente forma, sottotile, o Tile." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "Regione" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Collisione" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Occlusione" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Navigazione" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Priorità " + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Indice Z" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modalità regione" @@ -8047,6 +8364,16 @@ msgid "Edit Tile Z Index" msgstr "Modifica Indice Z della Tile" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Rendi il Poligono Convesso" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Rendi il Poligono Concavo" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Crea Poligono di Collisione" @@ -8162,9 +8489,8 @@ msgid "(GLES3 only)" msgstr "(Solo GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Aggiungi ouput +" +msgstr "Aggiungi Ouput" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8179,9 +8505,8 @@ msgid "Boolean" msgstr "Booleano" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "Samples" +msgstr "Sampler" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8313,8 +8638,8 @@ msgid "Dodge operator." msgstr "Operatore schivata." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Operatore HardLight" +msgid "HardLight operator." +msgstr "Operatore HardLight." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8954,14 +9279,15 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" -"L'espresione Custom Godot Shader Language è piazzata al di sopra dello " -"shader risultante. Puoi posizionare varie definizioni di fuzioni e chiamarle " -"più tardi nelle Expressions. Puoi anche dichiarare variabilità , uniformi e " -"costanti." +"Espressione custom per il Godot Shader Language, la quale sarà " +"sovraposizionata allo shader risultante. Puoi piazzare varie definizioni di " +"funzioni all'interno e chiamarla dopo nelle Espressioni. Puoi anche " +"dichiarare varianti, uniformi e costanti." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -9036,6 +9362,14 @@ msgid "Runnable" msgstr "Eseguibile" #: editor/project_export.cpp +msgid "Add initial export..." +msgstr "Aggiungi esportazione iniziale…" + +#: editor/project_export.cpp +msgid "Add previous patches..." +msgstr "Aggiungi patch precedenti…" + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Eliminare patch '%s' dalla lista?" @@ -9087,6 +9421,15 @@ msgid "Add..." msgstr "Aggiungi..." #: 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 "" +"Se selezionato, il preset sarà disponibile per il rilascio con un singolo " +"click.\n" +"Solo un preset per piattaforma può essere selezionato come eseguibile." + +#: editor/project_export.cpp msgid "Export Path" msgstr "Percorso di Esportazione" @@ -9115,22 +9458,20 @@ msgid "Resources to export:" msgstr "Risorse da esportare:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filtri per esportare file che non son risorse (separati con virgola, es.: *." -"json, *.txt)" +"Filtri per esportare file/cartelle che non sono risorse\n" +"(separati da virgole, per sempio: *.json, *.txt, docs/*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filtri per escludere dall'esportazione (separati con virgola, es.: *.json, *." -"txt)" +"Filtri per escludere file/cartelle dal progetto\n" +"(separati da virgole, per sempio: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9141,6 +9482,10 @@ msgid "Make Patch" msgstr "Crea Patch" #: editor/project_export.cpp +msgid "Pack File" +msgstr "File Pacchetto" + +#: editor/project_export.cpp msgid "Features" msgstr "Funzionalità " @@ -9192,6 +9537,14 @@ msgstr "Modalità di esportazione?" msgid "Export All" msgstr "Esporta Tutto" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "File ZIP" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Pacchetto Gioco Godot" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Le export templates per questa piattaforma sono mancanti:" @@ -9498,6 +9851,10 @@ msgid "Projects" msgstr "Progetti" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Ultima Modifica" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Esamina" @@ -9582,18 +9939,6 @@ msgid "Device" msgstr "Dispositivo" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Premi un tasto..." @@ -10176,13 +10521,13 @@ msgstr "" "riportate al loro valore predefinito." #: 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 "" -"Disabilitando \"editable_instance\" tutte le proprietà del nodo saranno " -"riportate al loro valore predefinito." +"Abilitando \"Carica Come Placeholder\" disabiliterà \"Figlio Modificabile\" " +"e causerà tutte le proprietà del nodo di essere riportare ai loro valori " +"default." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10521,19 +10866,16 @@ msgid "Will load an existing script file." msgstr "Caricherà un file di script esistente." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Nome Classe" +msgstr "Nome Classe:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Template" +msgstr "Template:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Script Built-In" +msgstr "Script Built-In:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10836,10 +11178,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "Prevista una stringa di lunghezza 1 (singolo carattere)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "L'argomento del passo è zero!" @@ -10977,6 +11315,11 @@ msgid "Cursor Clear Rotation" msgstr "Cursore Cancella Rotazione" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Cancella Selezione" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Cancella Selezione" @@ -11125,6 +11468,14 @@ msgid "Set Variable Type" msgstr "Imposta Tipo di Variabile" #: modules/visual_script/visual_script_editor.cpp +msgid "Add Input Port" +msgstr "Aggiungi Porta Input" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Output Port" +msgstr "Aggiungi Porta Output" + +#: modules/visual_script/visual_script_editor.cpp msgid "Override an existing built-in function." msgstr "Sovrascrivi una funzione built-in esistente." @@ -11173,9 +11524,8 @@ msgid "Add Function" msgstr "Aggiungi Funzione" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" -msgstr "Rimuovi porta input" +msgstr "Rimuovi Porta Input" #: modules/visual_script/visual_script_editor.cpp msgid "Add Variable" @@ -11186,24 +11536,12 @@ msgid "Add Signal" 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" +msgstr "Rimuovi Porta Input" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" -msgstr "Rimuovi porta output" +msgstr "Rimuovi Porta Output" #: modules/visual_script/visual_script_editor.cpp msgid "Change Expression" @@ -11250,10 +11588,6 @@ msgid "Add Preload Node" msgstr "Aggiungi Nodo Preload" #: 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 "Aggiungi Nodo(i) Da Albero" @@ -11262,6 +11596,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 "" +"Impossibile lasciare le proprietà perché lo script '%s' non è usato nella " +"scena.\n" +"Lascia andare premendo 'Shift (Maiuscolo)' per copiare solo la firma." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11288,9 +11625,8 @@ msgid "Connect Nodes" msgstr "Connetti Nodi" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Disconnetti Nodi Grafico" +msgstr "Disconnetti Nodi" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11325,26 +11661,24 @@ msgid "Paste VisualScript Nodes" msgstr "Incolla Nodi VisualScript" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "Non è possibile copiare il nodo della funzione." +msgstr "Impossibile creare funzioni con il nodo funzione." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." -msgstr "" +msgstr "Impossibile creare funzioni di nodi dai nodi di più funzioni." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +msgstr "Seleziona almeno un nodo con la porta sequenziale." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Prova ad avere solamente una sequenza di input nella selezione." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Rinomina Funzione" +msgstr "Crea Funzione" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11375,9 +11709,20 @@ msgid "Members:" msgstr "Membri:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy +msgid "Change Base Type:" +msgstr "Cambia Tipo Base:" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Nodes..." +msgstr "Aggiungi Nodi…" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Function..." +msgstr "Aggiungi Funzione…" + +#: modules/visual_script/visual_script_editor.cpp msgid "function_name" -msgstr "Funzione:" +msgstr "function_name" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11400,14 +11745,12 @@ msgid "Cut Nodes" msgstr "Taglia Nodi" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Rinomina Funzione" +msgstr "Crea Funzione" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Aggiorna" +msgstr "Aggiorna Grafico" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11601,31 +11944,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." @@ -11640,7 +11962,7 @@ msgstr "L'icona richiesta non è specificata nel preset." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Ferma il server HTTP" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11675,10 +11997,18 @@ msgid "Using default boot splash image." msgstr "Utilizzando l'immagine di splash di avvio predefinita." #: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "Nome pacchetto invalido, troppo corto." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "Nome univoco del pacchetto non valido." #: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "Nome visualizzato del publisher del pacchetto invalido." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "GUID prodotto invalido." @@ -12349,6 +12679,36 @@ 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" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "Snap alla griglia" @@ -12826,9 +13186,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" @@ -12956,9 +13313,6 @@ msgstr "Le constanti non possono essere modificate." #~ msgid "Out-In" #~ msgstr "Out-In" -#~ msgid "Transitions" -#~ msgstr "Transizioni" - #~ msgid "Change Anim Len" #~ msgstr "Cambia Lunghezza Animazione" @@ -13176,9 +13530,6 @@ msgstr "Le constanti non possono essere modificate." #~ msgid "Replace By" #~ msgstr "Rimpiazza con" -#~ msgid "Case Sensitive" -#~ msgstr "Case Sensitive" - #~ msgid "Backwards" #~ msgstr "All'indietro" @@ -13323,9 +13674,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" @@ -13637,9 +13985,6 @@ msgstr "Le constanti non possono essere modificate." #~ msgid "Loading Image:" #~ msgstr "Immagine Caricamento:" -#~ msgid "Couldn't load image:" -#~ msgstr "Impossibile caricare immagine:" - #~ msgid "Converting Images" #~ msgstr "Convertendo Immagini" @@ -13817,9 +14162,6 @@ msgstr "Le constanti non possono essere modificate." #~ "Impossibile leggere il file del certificatio. Il percorso e la password " #~ "sono entrambi corretti?" -#~ msgid "Error creating the signature object." -#~ msgstr "Errore in creazione del signature object." - #~ msgid "Error creating the package signature." #~ msgstr "Errore di creazione della firma del pacchetto." @@ -13920,9 +14262,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" @@ -14026,9 +14365,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 319458d634..ad11474725 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -1,6 +1,6 @@ # Japanese translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # akirakido <achts.y@gmail.com>, 2016-2017, 2018, 2019. # D_first <dntk.daisei@gmail.com>, 2017, 2018. @@ -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-10-29 12:49+0000\n" -"Last-Translator: kazuma kondo <kazmax7@gmail.com>\n" +"PO-Revision-Date: 2019-12-25 12:45+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.9.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 @@ -49,6 +50,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "convert() ã®å¼•æ•°ã®åž‹ãŒç„¡åйã§ã™ã€‚TYPE_* 定数を使ã£ã¦ãã ã•ã„。" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "é•·ã•ãŒ1ã®æ–‡å—列(文å—)を予期ã—ã¾ã—ãŸã€‚" + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." @@ -440,6 +445,10 @@ msgid "Not possible to add a new track without a root" msgstr "root ãŒç„¡ã‘ã‚Œã°æ–°è¦ãƒˆãƒ©ãƒƒã‚¯ã¯è¿½åŠ ã§ãã¾ã›ã‚“" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "ãƒ™ã‚¸ã‚§ãƒˆãƒ©ãƒƒã‚¯ã‚’è¿½åŠ " @@ -464,9 +473,8 @@ msgid "Track path is invalid, so can't add a method key." msgstr "トラックã®ãƒ‘スãŒç„¡åйãªãŸã‚ã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚ãƒ¼ã‚’è¿½åŠ ã§ãã¾ã›ã‚“。" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Method Track Key" -msgstr "メソッド呼出ã—トラック" +msgstr "メソッドトラックã‚ーã®è¿½åŠ " #: editor/animation_track_editor.cpp msgid "Method not found in object: " @@ -554,8 +562,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 "編集" @@ -656,9 +665,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 @@ -670,9 +678,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" @@ -743,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 @@ -821,6 +832,10 @@ msgid "Extra Call Arguments:" msgstr "è¿½åŠ ã®å‘¼å‡ºã—引数:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "メソッドã®é¸æŠž:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "高度ãªè¨å®š" @@ -996,7 +1011,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 "パス" @@ -1172,7 +1187,6 @@ msgid "Third-party Licenses" 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 " @@ -1266,9 +1280,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" @@ -1469,7 +1482,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 +1734,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 "プãƒãƒ•ァイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ" @@ -1920,9 +1938,8 @@ msgid "Inherited by:" msgstr "継承先:" #: editor/editor_help.cpp -#, fuzzy msgid "Brief Description" -msgstr "è¦ç´„:" +msgstr "è¦ç´„" #: editor/editor_help.cpp msgid "Properties" @@ -1996,6 +2013,15 @@ msgid "Search Help" msgstr "ヘルプを検索" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "大文å—å°æ–‡å—を区別" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "ヘルパーを表示" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "ã™ã¹ã¦è¡¨ç¤º" @@ -2031,6 +2057,29 @@ msgstr "メンãƒãƒ¼ã‚¿ã‚¤ãƒ—" msgid "Class" msgstr "クラス" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "メソッド" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "シグナル" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "コンスタント" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "プãƒãƒ‘ティ:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "テーマプãƒãƒ‘ティ" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "プãƒãƒ‘ティ:" @@ -2683,7 +2732,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 "プãƒã‚¸ã‚§ã‚¯ãƒˆ" @@ -2720,9 +2770,8 @@ msgid "Tools" msgstr "ツール" #: editor/editor_node.cpp -#, fuzzy msgid "Orphan Resource Explorer..." -msgstr "å¤ç«‹ãƒªã‚½ãƒ¼ã‚¹ エクスプãƒãƒ¼ãƒ©ãƒ¼" +msgstr "å¤ç«‹ãƒªã‚½ãƒ¼ã‚¹ã‚¨ã‚¯ã‚¹ãƒ—ãƒãƒ¼ãƒ©ãƒ¼..." #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2910,8 +2959,8 @@ msgid "Play" msgstr "実行" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "ã‚·ãƒ¼ãƒ³ã‚’ä¸€æ™‚åœæ¢" +msgid "Pause the scene execution for debugging." +msgstr "デãƒãƒƒã‚°ã®ãŸã‚ã«ã‚·ãƒ¼ãƒ³ã®å®Ÿè¡Œã‚’ä¸€æ™‚åœæ¢ã—ã¾ã™ã€‚" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3025,6 +3074,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 "プãƒã‚¸ã‚§ã‚¯ãƒˆã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ" @@ -3081,10 +3134,13 @@ msgstr "次ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã" msgid "Open the previous Editor" msgstr "å‰ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã" +#: editor/editor_node.h +msgid "Warning!" +msgstr "è¦å‘Šï¼" + #: editor/editor_path.cpp -#, fuzzy msgid "No sub-resources found." -msgstr "サーフェスã®ã‚½ãƒ¼ã‚¹ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" +msgstr "サブリソースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" @@ -3400,6 +3456,15 @@ msgid "Importing:" msgstr "インãƒãƒ¼ãƒˆä¸:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "ç½²åオブジェクトã®ç”Ÿæˆã‚¨ãƒ©ãƒ¼" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3444,7 +3509,6 @@ msgid "Cannot remove temporary file:" msgstr "一時ファイルを削除ã§ãã¾ã›ã‚“:" #: editor/export_template_manager.cpp -#, fuzzy msgid "" "Templates installation failed.\n" "The problematic templates archives can be found at '%s'." @@ -3527,6 +3591,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 "テンプレートã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ マãƒãƒ¼ã‚¸ãƒ£ãƒ¼" @@ -3605,6 +3673,10 @@ msgid "New Inherited Scene" msgstr "æ–°ã—ã„継承ã—ãŸã‚·ãƒ¼ãƒ³" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "メインシーンã¨ã—ã¦è¨å®š" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "シーンを開ã" @@ -3682,7 +3754,6 @@ msgid "Re-Scan Filesystem" msgstr "ファイルシステムをå†ã‚¹ã‚ャン" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle Split Mode" msgstr "分割モード切り替ãˆ" @@ -3921,9 +3992,8 @@ msgid "Import As:" msgstr "åå‰ã‚’付ã‘ã¦ã‚¤ãƒ³ãƒãƒ¼ãƒˆ:" #: editor/import_dock.cpp -#, fuzzy msgid "Preset" -msgstr "åˆæœŸè¨å®šå€¤" +msgstr "プリセット" #: editor/import_dock.cpp msgid "Reimport" @@ -4233,9 +4303,8 @@ msgid "No triangles exist, so no blending can take place." msgstr "三角形ãŒå˜åœ¨ã—ãªã„ãŸã‚ã€ãƒ–レンドã§ãã¾ã›ã‚“。" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Toggle Auto Triangles" -msgstr "ã‚°ãƒãƒ¼ãƒãƒ«ã®è‡ªå‹•èªè¾¼ã¿ã‚’切り替ãˆ" +msgstr "三角形ã®è‡ªå‹•作æˆã«åˆ‡ã‚Šæ›¿ãˆ" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Create triangles by connecting points." @@ -4331,6 +4400,18 @@ 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 "ノードã®åå‰ãŒå¤‰æ›´ã•れã¾ã—ãŸ" @@ -4561,6 +4642,11 @@ msgid "Move Node" msgstr "ノードを移動" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "トランジション: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "ãƒˆãƒ©ãƒ³ã‚¸ã‚·ãƒ§ãƒ³ã‚’è¿½åŠ " @@ -4645,6 +4731,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" @@ -4819,9 +4909,8 @@ msgid "Request failed." msgstr "リクエストã¯å¤±æ•—ã—ã¾ã—ãŸã€‚" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Cannot save response to:" -msgstr "ファイルã«ãƒ†ãƒ¼ãƒžã‚’ä¿å˜ã§ãã¾ã›ã‚“:" +msgstr "レスãƒãƒ³ã‚¹ã‚’ä¿å˜ã§ãã¾ã›ã‚“:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." @@ -4832,7 +4921,6 @@ msgid "Request failed, too many redirects" msgstr "リクエスト失敗。リダイレクトéŽå¤š" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Redirect loop." msgstr "リダイレクトã®ãƒ«ãƒ¼ãƒ—。" @@ -4902,6 +4990,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 "最åˆ" @@ -4923,7 +5037,7 @@ msgstr "ã™ã¹ã¦" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "\"%s\" ã®çµæžœã¯ã‚りã¾ã›ã‚“。" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5012,6 +5126,15 @@ msgid "Grid Step:" msgstr "グリッドã®ã‚¹ãƒ†ãƒƒãƒ—:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2ステップ" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "回転ã®ã‚ªãƒ•セット:" @@ -5020,6 +5143,10 @@ 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 "垂直ガイドを移動" @@ -5091,6 +5218,78 @@ 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 +#, 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 "アンカーã®ã¿" @@ -5104,6 +5303,20 @@ 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 "é¸æŠžã‚’ãƒãƒƒã‚¯" @@ -5127,9 +5340,8 @@ msgid "Paste Pose" msgstr "ãƒãƒ¼ã‚ºã‚’貼り付ã‘" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Guides" -msgstr "ボーンをクリアã™ã‚‹" +msgstr "ガイドをクリアã™ã‚‹" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Custom Bone(s) from Node(s)" @@ -5215,29 +5427,24 @@ msgid "Pan Mode" msgstr "パンモード" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Ruler Mode" -msgstr "実行モード:" +msgstr "定è¦ãƒ¢ãƒ¼ãƒ‰" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "スナッピングを切り替ãˆã‚‹ã€‚" +msgstr "スマートスナッピングを切り替ãˆã‚‹ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "スナップを使ã†" +msgstr "スマートスナップを使ã†" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "スナッピングを切り替ãˆã‚‹ã€‚" +msgstr "グリッドスナッピングを切り替ãˆã‚‹ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "グリッドスナップ" +msgstr "グリッドスナップを使ã†" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5248,6 +5455,10 @@ 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 "相対スナップ" @@ -5330,9 +5541,8 @@ msgid "View" msgstr "ビュー" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "グリッドを表示" +msgstr "常ã«ã‚°ãƒªãƒƒãƒ‰ã‚’表示" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5388,19 +5598,19 @@ msgstr "(マスクã«åŸºã¥ã„ã¦)ã‚ーを挿入。" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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 "" -"スケール時ã«ã‚ªãƒ–ジェクトを移動ã€å›žè»¢ã™ã‚‹ã¨ã€è‡ªå‹•çš„ã«ã‚ãƒ¼ãŒæŒ¿å…¥ã•れã¾ã™(マスク" -"ã«åŸºã¥ã)。\n" +"ã‚ーã®è‡ªå‹•挿入ã¯ï¼ˆãƒžã‚¹ã‚¯ã«åŸºã¥ã„ã¦ï¼‰ã‚ªãƒ–ジェクトãŒç§»å‹•ã€å›žè»¢ã€ã¾ãŸã¯æ‹¡å¤§ç¸®å°" +"ã•れãŸéš›ã«è¡Œã‚れã¾ã™ã€‚\n" "ã‚ãƒ¼ã¯æ—¢å˜ã®ãƒˆãƒ©ãƒƒã‚¯ã«ã®ã¿è¿½åŠ ã•ã‚Œã€æ–°ã—ã„トラックã¯ä½œæˆã•れã¾ã›ã‚“。\n" -"åˆã‚ã¦ã‚ãƒ¼ã‚’æ‰‹å‹•ã§æŒ¿å…¥ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" +"åˆå›žã®ã‚ãƒ¼æŒ¿å…¥ã¯æ‰‹å‹•ã§è¡Œã†å¿…è¦ãŒã‚りã¾ã™ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Auto Insert Key" -msgstr "自動挿入ã‚ー" +msgstr "自動ã‚ー挿入" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5423,9 +5633,8 @@ msgid "Divide grid step by 2" msgstr "グリッドステップをåŠåˆ†ã«ã™ã‚‹" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Pan View" -msgstr "後é¢å›³" +msgstr "ビューをパン" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" @@ -5559,9 +5768,8 @@ msgid "Modify Curve Point" msgstr "カーブãƒã‚¤ãƒ³ãƒˆã‚’ä¿®æ£" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Modify Curve Tangent" -msgstr "カーブマップを修æ£" +msgstr "カーブ接線を修æ£" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Curve Preset" @@ -5576,14 +5784,12 @@ msgid "Remove Point" msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’削除" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Left Linear" -msgstr "ç‰é€Ÿ" +msgstr "左線形文法" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right Linear" -msgstr "å³å´é¢å›³" +msgstr "å³ç·šå½¢æ–‡æ³•" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Preset" @@ -5602,9 +5808,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "接線を個別ã«ç·¨é›†ã™ã‚‹ã«ã¯ã‚·ãƒ•トを押ã™" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "å³ã‚¯ãƒªãƒƒã‚¯: 点を削除" +msgstr "å³ã‚¯ãƒªãƒƒã‚¯ã§ç‚¹ã‚’è¿½åŠ " #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5712,9 +5917,8 @@ msgid "Create Trimesh Collision Sibling" msgstr "三角形メッシュ兄弟コリジョンを生æˆ" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Convex Collision Sibling(s)" -msgstr "凸型兄弟コリジョンを生æˆ" +msgstr "凸型兄弟関係コリジョンを生æˆ" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh..." @@ -5740,11 +5944,26 @@ msgstr "アウトラインメッシュを生æˆ" msgid "Outline Size:" msgstr "アウトラインã®ã‚µã‚¤ã‚º:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "アイテム%dã‚’å–り除ãã¾ã™ã‹ï¼Ÿ" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "シーンã‹ã‚‰ã‚¢ãƒƒãƒ—デート" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "メッシュライブラリ" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "ã‚¢ã‚¤ãƒ†ãƒ ã‚’è¿½åŠ " @@ -5889,9 +6108,8 @@ msgid "The geometry's faces don't contain any area." msgstr "ジオメトリã®é¢ã¯é¢ç©ã‚’æŒã¡ã¾ã›ã‚“。" #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "The geometry doesn't contain any faces." -msgstr "ノードã¯ã‚¸ã‚ªãƒ¡ãƒˆãƒªãƒ¼ (é¢) ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“。" +msgstr "ジオメトリーã¯é¢ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“。" #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't inherit from Spatial." @@ -6381,6 +6599,26 @@ 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 "" +"ã“ã®ã‚¹ã‚¯ãƒªãƒ—トを実行ã™ã‚‹ã«ã¯ã€EditorScriptを継承ã—ã€ãƒ„ールモードã«è¨å®šã™ã‚‹å¿…" +"è¦ãŒã‚りã¾ã™ã€‚" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "テーマã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ" @@ -6507,10 +6745,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 "ステップイン" @@ -6592,9 +6826,8 @@ msgid "Search Results" msgstr "æ¤œç´¢çµæžœ" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Clear Recent Scripts" -msgstr "最近開ã„ãŸã‚·ãƒ¼ãƒ³ã®å±¥æ´ã‚’クリア" +msgstr "最近開ã„ãŸã‚¹ã‚¯ãƒªãƒ—トã®å±¥æ´ã‚’クリア" #: editor/plugins/script_text_editor.cpp msgid "Connections to method:" @@ -6605,10 +6838,6 @@ msgid "Source" msgstr "ソース" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "シグナル" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "ターゲット" @@ -6636,6 +6865,13 @@ msgid "Only resources from filesystem can be dropped." msgstr "ファイルシステムã®ãƒªã‚½ãƒ¼ã‚¹ã®ã¿ãƒ‰ãƒãƒƒãƒ—ã§ãã¾ã™." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"スクリプト '%s' ã¯ã“ã®ã‚·ãƒ¼ãƒ³ã§ä½¿ã‚れã¦ã„ãªã„ãŸã‚ã€ãƒŽãƒ¼ãƒ‰ã‚’(ドラッグ&)ドãƒãƒƒ" +"プã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "シンボルを検索" @@ -6724,9 +6960,8 @@ msgid "Complete Symbol" msgstr "シンボルを補完" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Evaluate Selection" -msgstr "スケールã®é¸æŠž" +msgstr "é¸æŠžã—ãŸã‚‚ã®ã‚’評価ã™ã‚‹" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" @@ -7030,9 +7265,8 @@ msgid "Audio Listener" msgstr "オーディオリスナー" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Enable Doppler" -msgstr "フィルタリングを有効化" +msgstr "ドップラー効果を有効化ã™ã‚‹" #: editor/plugins/spatial_editor_plugin.cpp msgid "Cinematic Preview" @@ -7282,18 +7516,37 @@ msgid "Create Mesh2D" msgstr "メッシュ2Dを作æˆ" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "メッシュプレビューを作æˆ" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Polygon2Dを作æˆ" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "CollisionPolygon2Dを作æˆ" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "CollisionPolygon2Dを作æˆ" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "LightOccluder2Dを作æˆ" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "LightOccluder2Dを作æˆ" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "スプライトã¯ç©ºã§ã™!" @@ -7342,9 +7595,8 @@ msgid "Simplification: " msgstr "簡略化: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "拡大(ピクセル): " +msgstr "ç¸®å° (ピクセル): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7371,6 +7623,11 @@ msgid "Add Frame" msgstr "ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’è¿½åŠ " #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "イメージをèªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "エラー:フレームリソースをèªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ!" @@ -7647,6 +7904,7 @@ msgid "Data Type:" msgstr "データã®åž‹:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "アイコン" @@ -7663,8 +7921,8 @@ msgid "Color" msgstr "色" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "コンスタント" +msgid "Theme File" +msgstr "テーマ ファイル" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7778,6 +8036,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 "次ã®åº§æ¨™" @@ -7794,6 +8064,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 "Zインデックス" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "é ˜åŸŸãƒ¢ãƒ¼ãƒ‰" @@ -7815,7 +8113,7 @@ msgstr "ビットマスクモード" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Priority Mode" -msgstr "優先モード" +msgstr "å„ªå…ˆé †ä½ãƒ¢ãƒ¼ãƒ‰" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon Mode" @@ -7990,14 +8288,12 @@ msgid "Clear Tile Bitmask" msgstr "タイル ビットマスクをクリア" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Concave" -msgstr "ãƒãƒªã‚´ãƒ³ã‚’移動" +msgstr "ãƒãƒªã‚´ãƒ³ã‚’凹é¢ã«ã™ã‚‹" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Convex" -msgstr "ãƒãƒªã‚´ãƒ³ã‚’移動" +msgstr "ãƒãƒªã‚´ãƒ³ã‚’凸é¢ã«ã™ã‚‹" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Tile" @@ -8024,6 +8320,16 @@ msgid "Edit Tile Z Index" msgstr "タイルã®Zインデックスを編集" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "ãƒãƒªã‚´ãƒ³ã‚’凸é¢ã«ã™ã‚‹" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "ãƒãƒªã‚´ãƒ³ã‚’凹é¢ã«ã™ã‚‹" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "コリジョン ãƒãƒªã‚´ãƒ³ã‚’生æˆ" @@ -8040,18 +8346,16 @@ msgid "TileSet" msgstr "タイルセット" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No VCS addons are available." -msgstr "ノードã®è¦ªã®åå‰ (使用å¯èƒ½ãªå ´åˆ)" +msgstr "VCSアドオンã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。" #: editor/plugins/version_control_editor_plugin.cpp editor/rename_dialog.cpp msgid "Error" msgstr "エラー" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No commit message was provided" -msgstr "åå‰ãŒä»˜ã„ã¦ã„ã¾ã›ã‚“" +msgstr "ã‚³ãƒŸãƒƒãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯æä¾›ã•れã¾ã›ã‚“ã§ã—ãŸ" #: editor/plugins/version_control_editor_plugin.cpp msgid "No files added to stage" @@ -8098,9 +8402,8 @@ msgid "Deleted" msgstr "削除ã•れãŸ" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Typechange" -msgstr "変更" +msgstr "タイプã®å¤‰æ›´" #: editor/plugins/version_control_editor_plugin.cpp msgid "Stage Selected" @@ -8129,9 +8432,8 @@ msgid "View file diffs before committing them to the latest version" msgstr "最新ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚³ãƒŸãƒƒãƒˆã™ã‚‹å‰ã«ãƒ•ァイルã®å·®åˆ†ã‚’見る" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No file diff is active" -msgstr "ファイルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“!" +msgstr "有効ãªãƒ•ァイル差分ã¯ã‚りã¾ã›ã‚“" #: editor/plugins/version_control_editor_plugin.cpp msgid "Detect changes in file diff" @@ -8142,9 +8444,8 @@ msgid "(GLES3 only)" msgstr "(GLES3ã®ã¿)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "å‡ºåŠ›ã‚’è¿½åŠ +" +msgstr "å‡ºåŠ›ã‚’è¿½åŠ " #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8152,16 +8453,15 @@ msgstr "スカラー" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector" -msgstr "\\ Vector" +msgstr "ベクター(Vector)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean" msgstr "ブール" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "ã‚µãƒ³ãƒ—ãƒ«ã‚’è¿½åŠ " +msgstr "サンプラー" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8294,8 +8594,8 @@ msgid "Dodge operator." msgstr "Dodge演算å。" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "HardLight演算å" +msgid "HardLight operator." +msgstr "HardLight演算å。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8945,9 +9245,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" "カスタムGodotシェーダー言語ã®è¡¨ç¾ã¯ã€ã‚·ã‚§ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°çµæžœã®æœ€å¾Œã«ä½ç½®ã—ã¾ã™ã€‚" "様々ãªé–¢æ•°ã‚’ãã®ä¸ã§å®šç¾©ã—ã€è¡¨ç¾ã®ä¸ã§å‘¼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸvarying変" @@ -9024,6 +9325,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' をリストã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹?" @@ -9077,6 +9387,12 @@ 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 "エクスãƒãƒ¼ãƒˆå…ˆã®ãƒ‘ス" @@ -9105,20 +9421,20 @@ msgid "Resources to export:" msgstr "エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒªã‚½ãƒ¼ã‚¹:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"エクスãƒãƒ¼ãƒˆã™ã‚‹éžãƒªã‚½ãƒ¼ã‚¹ãƒ•ァイルã®ãƒ•ィルタ (コンマ区切り, 例*.json, *.txt)" +"リソース以外ã®ãƒ•ァイル/フォルダをエクスãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ãƒ•ィルタ\n" +"(コンマã§åŒºåˆ‡ã‚‹ã€ 例: *.json,*.txt,docs/*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"プãƒã‚¸ã‚§ã‚¯ãƒˆã‹ã‚‰é™¤å¤–ã™ã‚‹ãƒ•ァイルã®ãƒ•ィルタ (コンマ区切り, 例*.json, *.txt)" +"プãƒã‚¸ã‚§ã‚¯ãƒˆã‹ã‚‰ãƒ•ァイル/フォルダを除外ã™ã‚‹ãƒ•ィルタ\n" +"(コンマã§åŒºåˆ‡ã‚‹ã€ 例: *.json,*.txt,docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9129,6 +9445,10 @@ msgid "Make Patch" msgstr "パッãƒç”Ÿæˆ" #: editor/project_export.cpp +msgid "Pack File" +msgstr "パックファイル" + +#: editor/project_export.cpp msgid "Features" msgstr "特徴" @@ -9137,9 +9457,8 @@ msgid "Custom (comma-separated):" msgstr "カスタム(コンマ区切り):" #: editor/project_export.cpp -#, fuzzy msgid "Feature List:" -msgstr "メソッド一覧:" +msgstr "機能一覧:" #: editor/project_export.cpp msgid "Script" @@ -9181,6 +9500,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 "ã“ã®ãƒ—ラットフォームã«å¯¾ã™ã‚‹ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ テンプレートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:" @@ -9349,9 +9676,8 @@ msgid "Unnamed Project" msgstr "åç„¡ã—ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆ" #: editor/project_manager.cpp -#, fuzzy msgid "Missing Project" -msgstr "æ—¢å˜ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’インãƒãƒ¼ãƒˆ" +msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆãŒã‚りã¾ã›ã‚“" #: editor/project_manager.cpp msgid "Error: Project is missing on the filesystem." @@ -9484,6 +9810,10 @@ msgid "Projects" msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆ" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "最終更新" + +#: editor/project_manager.cpp msgid "Scan" msgstr "スã‚ャン" @@ -9568,18 +9898,6 @@ msgid "Device" msgstr "デãƒã‚¤ã‚¹" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "ã‚ーを押ã—ã¦ãã ã•ã„..." @@ -9649,7 +9967,7 @@ msgstr "ã‚¤ãƒ™ãƒ³ãƒˆã‚’è¿½åŠ " #: editor/project_settings_editor.cpp msgid "Button" -msgstr "ボタン" +msgstr "\\ Button" #: editor/project_settings_editor.cpp msgid "Left Button." @@ -9857,9 +10175,8 @@ msgid "Preset..." msgstr "プリセット..." #: editor/property_editor.cpp -#, fuzzy msgid "Zero" -msgstr "(イージング)無ã—" +msgstr "ç„¡ã—" #: editor/property_editor.cpp msgid "Easing In-Out" @@ -9910,9 +10227,8 @@ msgid "Select Method" msgstr "メソッドã®é¸æŠž" #: editor/rename_dialog.cpp editor/scene_tree_dock.cpp -#, fuzzy msgid "Batch Rename" -msgstr "åå‰ã®å¤‰æ›´" +msgstr "åå‰ã®ä¸€æ‹¬å¤‰æ›´" #: editor/rename_dialog.cpp msgid "Prefix" @@ -10083,9 +10399,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" @@ -10133,9 +10448,8 @@ msgid "Delete %d nodes?" msgstr "%d ノードを削除ã—ã¾ã™ã‹ï¼Ÿ" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete the root node \"%s\"?" -msgstr "シェーダーグラフノードを消去" +msgstr "ルートノード \"%s\" を削除ã—ã¾ã™ã‹?" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\" and its children?" @@ -10219,9 +10533,8 @@ msgid "Remove Node(s)" msgstr "ノードを除去" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Change type of node(s)" -msgstr "出力ãƒãƒ¼ãƒˆåã®å¤‰æ›´" +msgstr "ノードã®ã‚¿ã‚¤ãƒ—を変更ã™ã‚‹" #: editor/scene_tree_dock.cpp msgid "" @@ -10349,13 +10662,12 @@ msgid "Node configuration warning:" msgstr "ノードã®è¨å®šã«é–¢ã™ã‚‹è¦å‘Š:" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node has %s connection(s) and %s group(s).\n" "Click to show signals dock." msgstr "" -"ãƒŽãƒ¼ãƒ‰ã«æŽ¥ç¶šã¨ã‚°ãƒ«ãƒ¼ãƒ—ãŒã‚りã¾ã™ã€‚\n" -"クリックã§ã‚·ã‚°ãƒŠãƒ« ドックを表示。" +"ノードã«ã¯ %s 接続㨠%s グループãŒã‚りã¾ã™ã€‚\n" +"クリックã™ã‚‹ã¨ã€ä¿¡å·ãƒ‰ãƒƒã‚¯ãŒè¡¨ç¤ºã•れã¾ã™ã€‚" #: editor/scene_tree_editor.cpp msgid "" @@ -10466,7 +10778,6 @@ msgid "Error loading script from %s" msgstr "%s ã‹ã‚‰ã®ã‚¹ã‚¯ãƒªãƒ—トã®èªã¿è¾¼ã¿ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Overrides" msgstr "上書ã" @@ -10503,9 +10814,8 @@ msgid "Allowed: a-z, A-Z, 0-9, _ and ." msgstr "使用å¯èƒ½: a-z, A-Z, 0-9 㨠." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in script (into scene file)." -msgstr "組ã¿è¾¼ã¿ã‚¹ã‚¯ãƒªãƒ—ト(シーンファイルã®ï¼‰" +msgstr "組ã¿è¾¼ã¿ã‚¹ã‚¯ãƒªãƒ—ト(シーンファイルã¸ã®)。" #: editor/script_create_dialog.cpp msgid "Will create a new script file." @@ -10516,19 +10826,16 @@ msgid "Will load an existing script file." msgstr "æ—¢å˜ã®ã‚¹ã‚¯ãƒªãƒ—トファイルをèªã¿è¾¼ã‚€ã€‚" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "クラスå" +msgstr "クラスå:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "テンプレート" +msgstr "テンプレート:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "組ã¿è¾¼ã¿ã‚¹ã‚¯ãƒªãƒ—ト" +msgstr "組ã¿è¾¼ã¿ã‚¹ã‚¯ãƒªãƒ—ト:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10813,7 +11120,7 @@ msgstr "GDNative ライブラリ" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Enabled GDNative Singleton" -msgstr "有効ãªGDNative Singleton" +msgstr "有効ãªGDNativeシングルトン" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Disabled GDNative Singleton" @@ -10832,10 +11139,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "é•·ã•ãŒ1ã®æ–‡å—列(文å—)を予期ã—ã¾ã—ãŸã€‚" - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "ステップ引数ã¯ã‚¼ãƒã§ã™!" @@ -10978,6 +11281,11 @@ msgid "Cursor Clear Rotation" msgstr "カーソル回転をクリア" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "é¸æŠžå¯¾è±¡ã‚’æ¶ˆåŽ»" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "é¸æŠžã‚’ã‚¯ãƒªã‚¢" @@ -10991,14 +11299,13 @@ msgid "GridMap Settings" msgstr "グリッドマップã®è¨å®š" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Pick Distance:" -msgstr "インスタンス:" +msgstr "è·é›¢ã‚’å–å¾—:" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy msgid "Filter meshes" -msgstr "フィルタメソッド" +msgstr "フィルタメッシュ" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." @@ -11132,6 +11439,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 "æ—¢å˜ã®çµ„è¾¼ã¿é–¢æ•°ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã€‚" @@ -11180,7 +11495,6 @@ msgid "Add Function" msgstr "é–¢æ•°ã‚’è¿½åŠ " #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "入力ãƒãƒ¼ãƒˆã®å‰Šé™¤" @@ -11194,16 +11508,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 "入力ãƒãƒ¼ãƒˆã®å‰Šé™¤" @@ -11231,10 +11535,10 @@ msgstr "" "メタã‚ãƒ¼ã‚’ä¿æŒã—ã¦getterã‚’è½ã¨ã™.Shiftã‚ãƒ¼ã‚’ä¿æŒã—ã¦ã‚¸ã‚§ãƒãƒªãƒƒã‚¯ã‚’指示ã™ã‚‹." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" -"Ctrlã‚ãƒ¼ã‚’ä¿æŒã—ã¦getterã‚’è½ã¨ã™.Shiftã‚ãƒ¼ã‚’ä¿æŒã—ã¦ã‚¸ã‚§ãƒãƒªãƒƒã‚¯ã‚’指示ã™ã‚‹." +"Ctrlを押ã—ãŸã¾ã¾Getterを(ドラッグ&)ドãƒãƒƒãƒ—ã™ã‚‹ã€‚Shiftを押ã—ãŸã¾ã¾æ±Žç”¨ã‚·ã‚°" +"ãƒãƒãƒ£ã‚’(ドラッグ&)ドãƒãƒƒãƒ—ã™ã‚‹." #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -11242,9 +11546,10 @@ msgid "Hold %s to drop a simple reference to the node." msgstr "メタã‚ãƒ¼ã‚’ä¿æŒã—ã¦å˜ç´”å‚照(simple reference)ã‚’è½ã¨ã™." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold Ctrl to drop a simple reference to the node." -msgstr "Ctrlã‚ãƒ¼ã‚’ä¿æŒã—ã¦å˜ç´”å‚照(simple reference)ã‚’è½ã¨ã™." +msgstr "" +"Ctrlを押ã—ãŸã¾ã¾ãƒŽãƒ¼ãƒ‰ã¸å˜ç´”å‚照(simple reference)を(ドラッグ&)ドãƒãƒƒãƒ—ã™" +"る。" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -11252,35 +11557,35 @@ msgid "Hold %s to drop a Variable Setter." msgstr "メタã‚ãƒ¼ã‚’ä¿æŒã—ã¦å¤‰æ•°ã®setterã‚’è½ã¨ã™" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold Ctrl to drop a Variable Setter." -msgstr "Ctrlã‚ãƒ¼ã‚’ä¿æŒã—ã¦å¤‰æ•°ã®setterã‚’è½ã¨ã™." +msgstr "Ctrlを押ã—ãŸã¾ã¾å¤‰æ•°ã®Setterを(ドラッグ&)ドãƒãƒƒãƒ—ã™ã‚‹ã€‚" #: modules/visual_script/visual_script_editor.cpp msgid "Add Preload Node" msgstr "プリãƒãƒ¼ãƒ‰ãƒŽãƒ¼ãƒ‰ã‚’è¿½åŠ " #: 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 +#, fuzzy 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" -msgstr "ゲッタープãƒãƒ‘ティã®è¿½åŠ " +msgstr "Getterプãƒãƒ‘ãƒ†ã‚£ã‚’è¿½åŠ " #: modules/visual_script/visual_script_editor.cpp msgid "Add Setter Property" -msgstr "セッタープãƒãƒ‘ティã®è¿½åŠ " +msgstr "setterプãƒãƒ‘ãƒ†ã‚£ã‚’è¿½åŠ " #: modules/visual_script/visual_script_editor.cpp msgid "Change Base Type" @@ -11342,15 +11647,16 @@ 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 atleast one node with sequence port." -msgstr "" +#, fuzzy +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 "" +msgstr "セクションã§ã¯å”¯ä¸€ã¤ã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹å…¥åŠ›ã‚’æŒã¤ã‚ˆã†ã«ã—ã¦ãã ã•ã„。" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -11388,6 +11694,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 "関数:" @@ -11412,14 +11733,12 @@ msgid "Cut Nodes" msgstr "ノードを切りå–ã‚‹" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "関数åを変更" +msgstr "関数ã®ä½œæˆ" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "å†èªè¾¼" +msgstr "ã‚°ãƒ©ãƒ•ã®æ›´æ–°" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11446,9 +11765,8 @@ msgid "Base object is not a Node!" msgstr "ベースオブジェクトã¯ãƒŽãƒ¼ãƒ‰ã§ã¯ã‚りã¾ã›ã‚“!" #: modules/visual_script/visual_script_func_nodes.cpp -#, fuzzy msgid "Path does not lead Node!" -msgstr "パスãŒãƒŽãƒ¼ãƒ‰ã«é”ã—ã¾ã›ã‚“!" +msgstr "パスãŒãƒŽãƒ¼ãƒ‰ã«é”ã—ã¾ã›ã‚“ï¼" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." @@ -11543,13 +11861,12 @@ msgid "Invalid Android SDK path for custom build in Editor Settings." msgstr "エディタè¨å®šã®ã‚«ã‚¹ã‚¿ãƒ ビルドã®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." @@ -11602,27 +11919,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 ãŒæœªæŒ‡å®š - プãƒã‚¸ã‚§ã‚¯ãƒˆã‚’æ§‹æˆã§ãã¾ã›ã‚“。" @@ -11636,7 +11936,7 @@ msgstr "å¿…é ˆã‚¢ã‚¤ã‚³ãƒ³ãŒãƒ—ãƒªã‚»ãƒƒãƒˆã«æŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。" #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "HTTPサーãƒãƒ¼ã‚’æ¢ã‚ã‚‹" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11671,10 +11971,18 @@ 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 "無効ãªãƒ—ãƒãƒ€ã‚¯ãƒˆ GUIDã§ã™ã€‚" @@ -11687,9 +11995,8 @@ msgid "Invalid background color." msgstr "無効ãªèƒŒæ™¯è‰²ã§ã™ã€‚" #: platform/uwp/export/export.cpp -#, fuzzy msgid "Invalid Store Logo image dimensions (should be 50x50)." -msgstr "䏿£ãªStoreãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸(縦横50x50ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" +msgstr "Storeãƒã‚´ã®ç”»åƒã‚µã‚¤ã‚ºãŒç„¡åйã§ã™(縦横50x50ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)。" #: platform/uwp/export/export.cpp msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." @@ -11801,9 +12108,8 @@ msgstr "" "ã™ã€‚" #: scene/2d/light_occluder_2d.cpp -#, fuzzy msgid "The occluder polygon for this occluder is empty. Please draw a polygon." -msgstr "ã“ã®é®è”½ã®ã‚ªã‚¯ãƒ«ãƒ¼ãƒ€ ãƒãƒªã‚´ãƒ³ãŒç©ºã§ã™ã€‚多角形をæç”»ã—ã¦ãã ã•ã„!" +msgstr "ã“ã®é®è”½ç”¨ã®ã‚ªã‚¯ãƒ«ãƒ¼ãƒ€ãƒ¼ãƒãƒªã‚´ãƒ³ã¯ç©ºã§ã™ã€‚ãƒãƒªã‚´ãƒ³ã‚’æã„ã¦ãã ã•ã„。" #: scene/2d/navigation_polygon.cpp msgid "" @@ -12001,13 +12307,12 @@ msgstr "" "ãã ã•ã„。" #: scene/3d/collision_shape.cpp -#, fuzzy msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it." msgstr "" "関数㮠CollisionShape ã®å½¢çŠ¶ã‚’æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãれã®ãŸã‚ã®ã‚·ã‚§ã‚¤ãƒ—リ" -"ソースを作æˆã—ã¦ãã ã•ã„!" +"ソースを作æˆã—ã¦ãã ã•ã„。" #: scene/3d/collision_shape.cpp msgid "" @@ -12129,13 +12434,12 @@ msgstr "" "代ã‚りã«ã€åã®è¡çªã‚·ã‚§ã‚¤ãƒ—ã®ã‚µã‚¤ã‚ºã‚’変更ã—ã¦ãã ã•ã„。" #: 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 "" "SpriteFrames リソースを作æˆã¾ãŸã¯ AnimatedSprite3D フレームを表示ã™ã‚‹ãŸã‚ã«" -"㯠'Frames' プãƒãƒ‘ティã«è¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" +"㯠'Frames' プãƒãƒ‘ティをè¨å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: scene/3d/vehicle_body.cpp msgid "" @@ -12161,7 +12465,6 @@ msgstr "" "WorldEnvironmentã¯1ã¤ã ã‘ã§ã™ã€‚" #: scene/3d/world_environment.cpp -#, fuzzy msgid "" "This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set " "this environment's Background Mode to Canvas (for 2D scenes)." @@ -12190,7 +12493,6 @@ msgid "Nothing connected to input '%s' of node '%s'." msgstr "ノード 'ï¼…s'ã®å…¥åŠ› 'ï¼…s'ã«æŽ¥ç¶šã•れã¦ã„ã‚‹ã‚‚ã®ãŒã‚りã¾ã›ã‚“。" #: scene/animation/animation_tree.cpp -#, fuzzy msgid "No root AnimationNode for the graph is set." msgstr "グラフã®ãƒ«ãƒ¼ãƒˆAnimationNodeãŒè¨å®šã•れã¦ã„ã¾ã›ã‚“。" @@ -12339,6 +12641,31 @@ 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 "ã‚·ãƒ¼ãƒ³ã‚’ä¸€æ™‚åœæ¢" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "グリッドã«ã‚¹ãƒŠãƒƒãƒ—" @@ -12828,9 +13155,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" #~ msgid "Rotate 270 degrees" #~ msgstr "270度回転" -#~ msgid "Warning" -#~ msgstr "è¦å‘Š" - #~ msgid "Variable" #~ msgstr "変数" @@ -13202,9 +13526,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" #~ msgid "Replace By" #~ msgstr "ã§ç½®æ›ã™ã‚‹" -#~ msgid "Case Sensitive" -#~ msgstr "大文å—å°æ–‡å—を区別" - #, fuzzy #~ msgid "Backwards" #~ msgstr "後方" @@ -13360,10 +13681,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" #~ msgstr "変更ã—ãŸãƒªã‚½ãƒ¼ã‚¹ã‚’å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ" #, fuzzy -#~ msgid "Loading Export Templates" -#~ msgstr "エクスãƒãƒ¼ãƒˆã€€ãƒ†ãƒ³ãƒ—レートã®èªã¿è¾¼ã¿" - -#, fuzzy #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13731,10 +14048,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" #~ msgstr "イメージをèªã¿è¾¼ã¿ä¸:" #, fuzzy -#~ msgid "Couldn't load image:" -#~ msgstr "イメージをèªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:" - -#, fuzzy #~ msgid "Converting Images" #~ msgstr "イメージを変æ›ä¸" @@ -13936,10 +14249,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。" #~ msgstr "証明書ファイルãŒèªã‚ã¾ã›ã‚“. パスã‹ãƒ‘スワードãŒé–“é•ã£ã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ" #, fuzzy -#~ msgid "Error creating the signature object." -#~ msgstr "ç½²åオブジェクトã®ç”Ÿæˆã‚¨ãƒ©ãƒ¼" - -#, fuzzy #~ msgid "Error creating the package signature." #~ msgstr "パッケージ署å生æˆã‚¨ãƒ©ãƒ¼" diff --git a/editor/translations/ka.po b/editor/translations/ka.po index f703153803..2c93b4dab9 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -1,6 +1,6 @@ # Georgian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Giorgi Beriashvili <giorgi.beriashvili@outlook.com>, 2018. # George Dzavashvili <dzavashviligeorge@gmail.com>, 2018. @@ -27,6 +27,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -440,6 +444,10 @@ msgid "Not possible to add a new track without a root" msgstr "შეუძლებელირდáƒáƒáƒ›áƒáƒ¢áƒ áƒáƒ®áƒáƒšáƒ˜ ჩáƒáƒœáƒáƒ¬áƒ”რი ფესვის გáƒáƒ ეშე" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" @@ -551,8 +559,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 +754,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 +841,10 @@ msgid "Extra Call Arguments:" msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი გáƒáƒ›áƒáƒ«áƒáƒ®áƒ”ბის áƒáƒ გუმენტები:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp #, fuzzy msgid "Advanced" msgstr "დáƒáƒ‘áƒáƒšáƒáƒœáƒ¡áƒ”ბული" @@ -1012,7 +1029,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 +1509,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 +1760,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 "" @@ -2016,6 +2038,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ" @@ -2055,6 +2085,29 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ მხáƒáƒšáƒáƒ“" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "სიგნáƒáƒšáƒ”ბი" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "მუდმივი" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "áƒáƒ‘იექტზე დáƒáƒ™áƒ•ირვებáƒ" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2669,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 "" @@ -2880,7 +2934,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2984,6 +3038,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 +3098,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 +3413,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3477,6 +3547,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 "" @@ -3554,6 +3628,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp #, fuzzy msgid "Open Scenes" msgstr "გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜" @@ -4293,6 +4371,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ მáƒáƒœáƒáƒ™áƒ•ეთები:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "ხმáƒáƒ•áƒáƒœáƒ˜ მáƒáƒœáƒáƒ™áƒ•ეთები:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "ფუნქციები:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4527,6 +4620,11 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "გáƒáƒ დáƒáƒ¡áƒ•ლáƒ" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "გáƒáƒ დáƒáƒ¡áƒ•ლáƒ" @@ -4612,6 +4710,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" @@ -4868,6 +4971,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 "" @@ -4972,6 +5101,14 @@ 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 "" @@ -4980,6 +5117,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ დáƒáƒ‘áƒ:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -5052,6 +5194,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 "" @@ -5065,6 +5278,20 @@ 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 "" @@ -5206,6 +5433,10 @@ 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 "" @@ -5347,7 +5578,7 @@ msgstr "áƒáƒœáƒ˜áƒ› გáƒáƒ¡áƒáƒ¦áƒ”ბის ჩáƒáƒ§áƒ”ნებáƒ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5696,11 +5927,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6337,6 +6582,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 "" @@ -6465,10 +6727,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 "" @@ -6562,11 +6820,6 @@ msgid "Source" msgstr "რესურსი" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "სიგნáƒáƒšáƒ”ბი" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6595,6 +6848,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7239,21 +7497,39 @@ msgid "Create Mesh2D" msgstr "áƒáƒ®áƒáƒšáƒ˜ %s შექმნáƒ" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "შექმნáƒ" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "შექმნáƒ" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "შექმნáƒ" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "შექმნáƒ" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "შექმნáƒ" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7333,6 +7609,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7613,6 +7893,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7629,8 +7910,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "მუდმივი" +#, fuzzy +msgid "Theme File" +msgstr "გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7743,6 +8025,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 "" @@ -7760,6 +8054,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 "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი" @@ -7985,6 +8311,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "შექმნáƒ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "შექმნáƒ" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "შექმნáƒ" @@ -8269,7 +8605,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8864,9 +9200,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8930,6 +9267,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 "" @@ -8975,6 +9321,12 @@ 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 "" @@ -9023,6 +9375,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9074,6 +9430,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 "" @@ -9332,6 +9696,10 @@ msgid "Projects" msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9414,18 +9782,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10661,10 +11017,6 @@ 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 "" @@ -10803,6 +11155,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10946,6 +11303,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 "" @@ -11011,16 +11378,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 "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ ებáƒ" @@ -11070,10 +11427,6 @@ 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 "" @@ -11155,7 +11508,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11197,6 +11550,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 "ფუნქციები:" @@ -11395,27 +11763,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 "" @@ -11466,11 +11817,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." @@ -12029,9 +12390,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 d2e68e1d71..261d978bf7 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -1,6 +1,6 @@ # Korean translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Ch <ccwpc@hanmail.net>, 2017. # paijai 송 (fivejobi) <xotjq237@gmail.com>, 2018. @@ -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-10-29 12:49+0000\n" +"PO-Revision-Date: 2019-12-23 17:08+0000\n" "Last-Translator: ì†¡íƒœì„ <xotjq237@gmail.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" @@ -27,13 +28,16 @@ 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.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 "" -"conver() ë©”ì„œë“œì˜ ì¸ìˆ˜ íƒ€ìž…ì´ ìž˜ 못ë˜ì—ˆìŠµë‹ˆë‹¤, TYPE_* ìƒìˆ˜ë¥¼ 사용하세요." +msgstr "convert() ë©”ì„œë“œì˜ ì¸ìˆ˜ ìœ í˜•ì´ ìž˜ëª»ë˜ì—ˆì–´ìš”. TYPE_* ìƒìˆ˜ë¥¼ 사용하세요." + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "길ì´ê°€ 1ì¸ ë¬¸ìžì—´ (문ìž)ì´ í•„ìš”í•´ìš”." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp @@ -147,47 +151,47 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 키 ì‚ì œí•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "ì• ë‹ˆë©”ì´ì…˜ í‚¤í”„ë ˆìž„ 시간 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ í‚¤í”„ë ˆìž„ 시간 바꾸기" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" -msgstr "ì• ë‹ˆë©”ì´ì…˜ ì „í™˜ 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ ì „í™˜ 바꾸기" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 변형 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 변형 바꾸기" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "ì• ë‹ˆë©”ì´ì…˜ í‚¤í”„ë ˆìž„ ê°’ 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ í‚¤í”„ë ˆìž„ ê°’ 바꾸기" #: editor/animation_track_editor.cpp msgid "Anim Change Call" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 호출 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 호출 바꾸기" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Time" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 í‚¤í”„ë ˆìž„ 시간 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 í‚¤í”„ë ˆìž„ 시간 바꾸기" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transition" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 ì „í™˜ 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 ì „í™˜ 바꾸기" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transform" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 변형 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 변형 바꾸기" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Value" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 í‚¤í”„ë ˆìž„ ê°’ 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 í‚¤í”„ë ˆìž„ ê°’ 바꾸기" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Call" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 호출 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 여러 호출 바꾸기" #: editor/animation_track_editor.cpp msgid "Change Animation Length" -msgstr "ì• ë‹ˆë©”ì´ì…˜ ê¸¸ì´ ë³€ê²½í•˜ê¸°" +msgstr "ì• ë‹ˆë©”ì´ì…˜ ê¸¸ì´ ë°”ê¾¸ê¸°" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -208,7 +212,7 @@ msgstr "호출 메서드 트랙" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" -msgstr "ë² ì§€ì–´ 커브 트랙" +msgstr "ë² ì§€ì–´ ê³¡ì„ íŠ¸ëž™" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" @@ -249,11 +253,11 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ í´ë¦½:" #: editor/animation_track_editor.cpp msgid "Change Track Path" -msgstr "트랙 경로 변경하기" +msgstr "트랙 경로 바꾸기" #: editor/animation_track_editor.cpp msgid "Toggle this track on/off." -msgstr "ì´ íŠ¸ëž™ì„ ì¼œê±°ë‚˜ ë•니다." +msgstr "ì´ íŠ¸ëž™ì„ ì¼œê±°ë‚˜ 꺼요." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" @@ -265,7 +269,7 @@ msgstr "ë³´ê°„ 모드" #: editor/animation_track_editor.cpp msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" -msgstr "루프 ëž© 모드 (시작 루프와 ëì„ ë³´ê°„)" +msgstr "루프 마무리 모드 (시작 루프와 ëì„ ë³´ê°„)" #: editor/animation_track_editor.cpp msgid "Remove this track." @@ -314,7 +318,7 @@ msgstr "루프 ë³´ê°„ ê³ ì •í•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Wrap Loop Interp" -msgstr "루프 ë³´ê°„ ê°ì¶”기" +msgstr "루프 ë³´ê°„ 마무리하기" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp @@ -331,15 +335,15 @@ msgstr "키 ì‚ì œí•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Change Animation Update Mode" -msgstr "ì• ë‹ˆë©”ì´ì…˜ ì—…ë°ì´íЏ 모드 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ ì—…ë°ì´íЏ 모드 바꾸기" #: editor/animation_track_editor.cpp msgid "Change Animation Interpolation Mode" -msgstr "ì• ë‹ˆë©”ì´ì…˜ ë³´ê°„ 모드 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ ë³´ê°„ 모드 바꾸기" #: editor/animation_track_editor.cpp msgid "Change Animation Loop Mode" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 루프 모드 변경하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 루프 모드 바꾸기" #: editor/animation_track_editor.cpp msgid "Remove Anim Track" @@ -372,7 +376,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 삽입하기" #: editor/animation_track_editor.cpp msgid "AnimationPlayer can't animate itself, only other players." msgstr "" -"AnimationPlayer는 ìžì‹ ì—게 ì• ë‹ˆë©”ì´ì…˜ì„ í• ìˆ˜ 없어요, 다른 AnimationPlayerë§Œ " +"AnimationPlayer는 ìžì‹ ì—게 ì• ë‹ˆë©”ì´ì…˜ì„ 줄 수 없어요. 다른 AnimationPlayerë§Œ " "ì• ë‹ˆë©”ì´ì…˜ì„ 줄 수 ìžˆì£ ." #: editor/animation_track_editor.cpp @@ -381,7 +385,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ ìƒì„±í•˜ê¸° & 삽입하기" #: editor/animation_track_editor.cpp msgid "Anim Insert Track & Key" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙과 키 삽입하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 & 키 삽입하기" #: editor/animation_track_editor.cpp msgid "Anim Insert Key" @@ -389,7 +393,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 키 삽입하기" #: editor/animation_track_editor.cpp msgid "Change Animation Step" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 단계 바꾸기하기" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 단계 바꾸기" #: editor/animation_track_editor.cpp msgid "Rearrange Tracks" @@ -418,12 +422,16 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ íŠ¸ëž™ì€ ì˜¤ì§ AnimationPlayer 노드만 가리킬 수 #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." msgstr "" -"AnimationPlayer는 ìžì‹ ì—게 ì• ë‹ˆë©”ì´ì…˜ì„ í• ìˆ˜ 없어요, 다른 AnimationPlayerë§Œ " +"AnimationPlayer는 ìžì‹ ì—게 ì• ë‹ˆë©”ì´ì…˜ì„ 줄 수 없어요. 다른 AnimationPlayerë§Œ " "ì• ë‹ˆë©”ì´ì…˜ì„ 줄 수 ìžˆì£ ." #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" -msgstr "루트 ì—†ì´ ìƒˆ íŠ¸ëž™ì„ ì¶”ê°€í• ìˆ˜ 없어요" +msgstr "루트 ì—†ì´ ìƒˆ íŠ¸ëž™ì„ ì¶”ê°€í• ìˆ˜ ì—†ìŒ" + +#: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" #: editor/animation_track_editor.cpp msgid "Add Bezier Track" @@ -431,11 +439,11 @@ msgstr "ë² ì§€ì–´ 트랙 추가하기" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "트랙 경로가 잘못ëì–´ìš”, 키를 ì¶”ê°€í• ìˆ˜ 없어요." +msgstr "트랙 경로가 잘못ë˜ì—ˆì–´ìš”. 키를 ì¶”ê°€í• ìˆ˜ 없어요." #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" -msgstr "íŠ¸ëž™ì´ Spatial ìœ í˜•ì´ ì•„ë‹ˆì—ìš”, 키를 ì‚½ìž…í• ìˆ˜ 없어요" +msgstr "íŠ¸ëž™ì´ Spatial ìœ í˜•ì´ ì•„ë‹ˆì—ìš”. 키를 ì‚½ìž…í• ìˆ˜ 없어요" #: editor/animation_track_editor.cpp msgid "Add Transform Track Key" @@ -447,7 +455,7 @@ msgstr "트랙 키 추가하기" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." -msgstr "트랙 경로가 잘못ëì–´ìš”, 메서드 키를 ì¶”ê°€í• ìˆ˜ 없어요." +msgstr "트랙 경로가 잘못ëì–´ìš”. 메서드 키를 ì¶”ê°€í• ìˆ˜ 없어요." #: editor/animation_track_editor.cpp msgid "Add Method Track Key" @@ -455,7 +463,7 @@ msgstr "메서드 트랙 키 추가하기" #: editor/animation_track_editor.cpp msgid "Method not found in object: " -msgstr "ê°ì²´ì— 메서드가 없어요: " +msgstr "ê°ì²´ì— 메서드가 ì—†ìŒ: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" @@ -463,7 +471,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 키 ì´ë™í•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Clipboard is empty" -msgstr "í´ë¦½ë³´ë“œê°€ 비었어요" +msgstr "í´ë¦½ë³´ë“œê°€ 비었ìŒ" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -490,29 +498,29 @@ msgid "" "Alternatively, use an import preset that imports animations to separate " "files." msgstr "" -"ì´ ì• ë‹ˆë©”ì´ì…˜ì€ ê°€ì ¸ì˜¨ ì”¬ì— ì¢…ì†ë˜ì–´ìžˆì–´ìš”, ê°€ì ¸ì˜¨ íŠ¸ëž™ì˜ ë³€ê²½ 사í•ì€ ì €ìž¥ë˜" -"ì§€ 않아요.\n" +"ì´ ì• ë‹ˆë©”ì´ì…˜ì€ ê°€ì ¸ì˜¨ ì”¬ì— ì†í•´ 있어요. ê°€ì ¸ì˜¨ íŠ¸ëž™ì˜ ë³€ê²½ 사í•ì€ ì €ìž¥ë˜ì§€ " +"않아요.\n" "\n" "ì €ìž¥ ê¸°ëŠ¥ì„ ì¼œë ¤ë©´ 맞춤 íŠ¸ëž™ì„ ì¶”ê°€í•˜ê³ , ì”¬ì˜ ê°€ì ¸ì˜¤ê¸° ì„¤ì •ìœ¼ë¡œ 가서\n" "\"Animation > Storage\" ì„¤ì •ì„ \"Files\"로, \"Animation > Keep Custom Tracks" "\" ì„¤ì •ì„ ì¼ ë’¤, 다시 ê°€ì ¸ì˜¤ì„¸ìš”.\n" -"ëŒ€ì‹ ê°€ì ¸ì˜¤ê¸° 프리셋으로 ì• ë‹ˆë©”ì´ì…˜ì„ 별ë„ì˜ íŒŒì¼ë¡œ ê°€ì ¸ì˜¬ ìˆ˜ë„ ìžˆì–´ìš”." +"아니면 ê°€ì ¸ì˜¤ê¸° 프리셋으로 ì• ë‹ˆë©”ì´ì…˜ì„ 별ë„ì˜ íŒŒì¼ë¡œ ê°€ì ¸ì˜¬ ìˆ˜ë„ ìžˆì–´ìš”." #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" -msgstr "ê²½ê³ : ê°€ì ¸ì˜¨ ì• ë‹ˆë©”ì´ì…˜ì„ 편집 중" +msgstr "ê²½ê³ : ê°€ì ¸ì˜¨ ì• ë‹ˆë©”ì´ì…˜ì„ íŽ¸ì§‘í•˜ê³ ìžˆìŒ" #: editor/animation_track_editor.cpp msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "ì• ë‹ˆë©”ì´ì…˜ì„ ë§Œë“¤ê³ íŽ¸ì§‘í•˜ë ¤ë©´ AnimationPlayer노드를 ì„ íƒí•˜ì„¸ìš”." +msgstr "ì• ë‹ˆë©”ì´ì…˜ì„ ë§Œë“¤ê³ íŽ¸ì§‘í•˜ë ¤ë©´ AnimationPlayer노드를 ì„ íƒí•˜ì„¸ìš”." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." -msgstr "트리ì—서 ì„ íƒí•œ 노드만 íŠ¸ëž™ì— í‘œì‹œë˜ìš”." +msgstr "ì˜¤ì§ íŠ¸ë¦¬ì—서 ì„ íƒí•œ 노드만 íŠ¸ëž™ì— í‘œì‹œë¼ìš”." #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "노드 별로 íŠ¸ëž™ì„ ë¬¶ê±°ë‚˜ 묶지 ì•Šê³ ë‚˜ì—´í•´ì„œ ë³¼ 수 있어요." +msgstr "노드 별로 íŠ¸ëž™ì„ ë¬¶ì–´ì„œ 보거나, 묶지 ì•Šê³ ë‚˜ì—´í•´ì„œ ë³¼ 수 있어요." #: editor/animation_track_editor.cpp msgid "Snap:" @@ -534,8 +542,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 "편집하기" @@ -549,11 +558,11 @@ msgstr "트랙 복사하기" #: editor/animation_track_editor.cpp msgid "Scale Selection" -msgstr "ì„ íƒ í•목 ê¸¸ì´ ì¡°ì ˆí•˜ê¸°" +msgstr "ì„ íƒ í•목 규모 ì¡°ì ˆí•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Scale From Cursor" -msgstr "커서 위치ì—서 ê¸¸ì´ ì¡°ì ˆí•˜ê¸°" +msgstr "커서 위치ì—서 규모 ì¡°ì ˆí•˜ê¸°" #: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp msgid "Duplicate Selection" @@ -581,7 +590,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 최ì 화하기" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation" -msgstr "ì• ë‹ˆë©”ì´ì…˜ ì—†ì• ê¸°" +msgstr "ì• ë‹ˆë©”ì´ì…˜ ì •ë¦¬í•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" @@ -589,7 +598,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ì„ 줄 노드를 ì„ íƒí•˜ì„¸ìš”:" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" -msgstr "ë² ì§€ì–´ 커브 사용하기" +msgstr "ë² ì§€ì–´ ê³¡ì„ ì‚¬ìš©í•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" @@ -597,11 +606,11 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜. 최ì í™”" #: editor/animation_track_editor.cpp msgid "Max. Linear Error:" -msgstr "최대 ì„ í˜• 오류:" +msgstr "최대. ì„ í˜• 오류:" #: editor/animation_track_editor.cpp msgid "Max. Angular Error:" -msgstr "최대 ê°ë„ 오류:" +msgstr "최대. ê°ë„ 오류:" #: editor/animation_track_editor.cpp msgid "Max Optimizable Angle:" @@ -621,24 +630,23 @@ msgstr "í•´ê²°ë˜ì§€ ì•Šê³ ë¹ˆ 트랙 ì‚ì œí•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Clean-up all animations" -msgstr "ëª¨ë“ ì• ë‹ˆë©”ì´ì…˜ ì—†ì• ê¸°" +msgstr "ëª¨ë“ ì• ë‹ˆë©”ì´ì…˜ ì •ë¦¬í•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "ì• ë‹ˆë©”ì´ì…˜ ì—†ì• ê¸° (ë˜ëŒë¦´ 수 없어요!)" +msgstr "ì• ë‹ˆë©”ì´ì…˜ ì •ë¦¬í•˜ê¸° (ë˜ëŒë¦´ 수 없어요!)" #: editor/animation_track_editor.cpp msgid "Clean-Up" -msgstr "ì—†ì• ê¸°" +msgstr "ì •ë¦¬í•˜ê¸°" #: editor/animation_track_editor.cpp msgid "Scale Ratio:" -msgstr "ê¸¸ì´ ë¹„ìœ¨:" +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 +658,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" @@ -660,23 +667,23 @@ msgstr "오디오 트랙 í´ë¦½ 추가하기" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" -msgstr "오디오 트랙 í´ë¦½ 시작 오프셋 변경하기" +msgstr "오디오 트랙 í´ë¦½ 시작 오프셋 바꾸기" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip End Offset" -msgstr "오디오 트랙 í´ë¦½ 종료 오프셋 변경하기" +msgstr "오디오 트랙 í´ë¦½ 종료 오프셋 바꾸기" #: editor/array_property_edit.cpp msgid "Resize Array" -msgstr "ë°°ì—´ í¬ê¸° 변경하기" +msgstr "ë°°ì—´ í¬ê¸° 바꾸기" #: editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "ë°°ì—´ ê°’ ìœ í˜• 변경하기" +msgstr "ë°°ì—´ ê°’ ìœ í˜• 바꾸기" #: editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "ë°°ì—´ ê°’ 변경하기" +msgstr "ë°°ì—´ ê°’ 바꾸기" #: editor/code_editor.cpp msgid "Go to Line" @@ -688,7 +695,7 @@ msgstr "í–‰ 번호:" #: editor/code_editor.cpp msgid "Replaced %d occurrence(s)." -msgstr "%@ê°œì˜ ë‹¨ì–´ë¥¼ êµì²´í–ˆì–´ìš”." +msgstr "%dê°œì˜ ë‹¨ì–´ë¥¼ êµì²´í–ˆì–´ìš”." #: editor/code_editor.cpp editor/editor_help.cpp msgid "%d match." @@ -712,7 +719,7 @@ msgstr "êµì²´í•˜ê¸°" #: editor/code_editor.cpp msgid "Replace All" -msgstr "ì „ë¶€ êµì²´í•˜ê¸°" +msgstr "ëª¨ë‘ êµì²´í•˜ê¸°" #: editor/code_editor.cpp msgid "Selection Only" @@ -723,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 @@ -737,7 +748,7 @@ msgstr "축소하기" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "줌 리셋" +msgstr "확대 비율 ì›ëž˜ëŒ€ë¡œ" #: editor/code_editor.cpp msgid "Warnings" @@ -749,23 +760,23 @@ msgstr "í–‰ ë° ì—´ 번호." #: editor/connections_dialog.cpp msgid "Method in target node must be specified." -msgstr "ëŒ€ìƒ ë…¸ë“œì˜ ë©”ì„œë“œë¥¼ ì§€ì •í•´ì•¼ í•´ìš”." +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 "ì´ ë…¸ë“œì— ì—°ê²°í• ê²Œìš”:" +msgstr "ì´ ë…¸ë“œì— ì—°ê²°ë¨:" #: editor/connections_dialog.cpp msgid "Connect to Script:" -msgstr "ì´ ìŠ¤í¬ë¦½íŠ¸ì— ì—°ê²°í• ê²Œìš”:" +msgstr "ì´ ìŠ¤í¬ë¦½íŠ¸ì— ì—°ê²°ë¨:" #: editor/connections_dialog.cpp msgid "From Signal:" @@ -773,7 +784,7 @@ msgstr "ì´ ì‹œê·¸ë„ì—서:" #: editor/connections_dialog.cpp msgid "Scene does not contain any script." -msgstr "ì”¬ì´ ì–´ë–¤ 스í¬ë¦½íŠ¸ë„ ê°–ê³ ìžˆì§€ 않네요." +msgstr "ì”¬ì´ ì–´ë–¤ 스í¬ë¦½íŠ¸ë„ ê°–ê³ ìžˆì§€ 않아요." #: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp @@ -801,6 +812,10 @@ msgid "Extra Call Arguments:" msgstr "별ë„ì˜ í˜¸ì¶œ ì¸ìˆ˜:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "받는 메서드:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "ê³ ê¸‰" @@ -812,7 +827,7 @@ msgstr "지연" msgid "" "Defers the signal, storing it in a queue and only firing it at idle time." msgstr "" -"시그ë„ì„ ì§€ì—°í•˜ë©´ 시그ë„ì€ íì— ì €ìž¥ë˜ê¸° ë•Œë¬¸ì— ëŒ€ê¸° 시간ì—ë§Œ 방출해요." +"시그ë„ì„ ì§€ì—°í•˜ë©´, 시그ë„ì€ íì— ì €ìž¥ë˜ê¸° ë•Œë¬¸ì— ëŒ€ê¸° 시간ì—ë§Œ 방출해요." #: editor/connections_dialog.cpp msgid "Oneshot" @@ -824,7 +839,7 @@ msgstr "ì²˜ìŒ ë°©ì¶œí•˜ë©´ ì‹œê·¸ë„ ì—°ê²°ì„ í’€ì–´ë²„ë ¤ìš”." #: editor/connections_dialog.cpp msgid "Cannot connect signal" -msgstr "시그ë„ì„ ì—°ê²°í• ìˆ˜ 없어요" +msgstr "시그ë„ì„ ì—°ê²°í• ìˆ˜ ì—†ìŒ" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/export_template_manager.cpp editor/groups_editor.cpp @@ -855,11 +870,11 @@ msgstr "'%s'ì„(를) '%s'ì— ì—°ê²°í•˜ê¸°" #: editor/connections_dialog.cpp msgid "Disconnect '%s' from '%s'" -msgstr "'%s'와(ê³¼) '%s'ì˜ ì—°ê²° 풀기" +msgstr "'%s'ì„(를) '%s'ì—서 ì—°ê²° 풀기" #: editor/connections_dialog.cpp msgid "Disconnect all from signal: '%s'" -msgstr "ì „ë¶€ 시그ë„ì—서 ì—°ê²° 풀기: '%s'" +msgstr "ëª¨ë‘ ì‹œê·¸ë„ì—서 ì—°ê²° 풀기: '%s'" #: editor/connections_dialog.cpp msgid "Connect..." @@ -884,7 +899,7 @@ msgstr "\"%s\" 시그ë„ì˜ ëª¨ë“ ì—°ê²°ì„ ì‚ì œí• ê¹Œìš”?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" -msgstr "시그ë„" +msgstr "시그ë„(Signal)" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" @@ -908,7 +923,7 @@ msgstr "%s(으)로 ìœ í˜• 바꾸기" #: editor/create_dialog.cpp editor/project_settings_editor.cpp msgid "Change" -msgstr "변경하기" +msgstr "바꾸기" #: editor/create_dialog.cpp msgid "Create New %s" @@ -933,7 +948,7 @@ msgstr "검색하기:" #: editor/property_selector.cpp editor/quick_open.cpp #: modules/visual_script/visual_script_property_selector.cpp msgid "Matches:" -msgstr "ì¼ì¹˜í•´ìš”:" +msgstr "ì¼ì¹˜í•¨:" #: editor/create_dialog.cpp editor/editor_plugin_settings.cpp #: editor/plugin_config_dialog.cpp @@ -957,7 +972,7 @@ msgid "" "Changes will only take effect when reloaded." msgstr "" "씬 '%s'ì„(를) íŽ¸ì§‘í•˜ê³ ìžˆì–´ìš”.\n" -"다시 불러와야 변경 사í•ì´ ì ìš©ë˜ìš”." +"다시 불러와야 변경 사í•ì´ ì ìš©ë¼ìš”." #: editor/dependency_editor.cpp msgid "" @@ -965,7 +980,7 @@ msgid "" "Changes will only take effect when reloaded." msgstr "" "리소스 '%s'ì„(를) ì‚¬ìš©í•˜ê³ ìžˆì–´ìš”.\n" -"다시 불러와야 변경 사í•ì´ ì ìš©ë˜ìš”." +"다시 불러와야 변경 사í•ì´ ì ìš©ë¼ìš”." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -977,7 +992,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,15 +1041,15 @@ msgstr "" #: editor/dependency_editor.cpp msgid "Cannot remove:" -msgstr "ì‚ì œí• ìˆ˜ 없어요:" +msgstr "ì‚ì œí• ìˆ˜ ì—†ìŒ:" #: editor/dependency_editor.cpp msgid "Error loading:" -msgstr "불러오기 중 오류:" +msgstr "불러오는 중 오류:" #: editor/dependency_editor.cpp msgid "Load failed due to missing dependencies:" -msgstr "ì¢…ì† ê´€ê³„ê°€ 누ë½ë˜ì–´ì„œ 불러올 수 없어요:" +msgstr "ì¢…ì† ê´€ê³„ê°€ 누ë½ë˜ì–´ì„œ ë¶ˆëŸ¬ì˜¤ê¸°ì— ì‹¤íŒ¨í•¨:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -1050,7 +1065,7 @@ msgstr "ì¢…ì† ê´€ê³„ ê³ ì¹˜ê¸°" #: editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "불러오기 중 오류!" +msgstr "불러오는 중 오류!" #: editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" @@ -1074,11 +1089,11 @@ msgstr "ì‚ì œí•˜ê¸°" #: editor/dependency_editor.cpp msgid "Owns" -msgstr "ì†Œìœ ìž" +msgstr "ì†Œìœ í•¨" #: editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "명확한 ì†Œìœ ìžê°€ 없는 리소스:" +msgstr "명확한 ì†Œìœ ê´€ê³„ê°€ 없는 리소스:" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" @@ -1090,7 +1105,7 @@ msgstr "ë””ë ‰í† ë¦¬ ê°’ 변경하기" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" -msgstr "Godot 커뮤니티ì—서 ê³ ë§ˆì›Œìš”!" +msgstr "Godot ì»¤ë®¤ë‹ˆí‹°ì˜ ê°ì‚¬ì˜ ë§ì”€!" #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -1165,11 +1180,11 @@ msgstr "" #: editor/editor_about.cpp msgid "All Components" -msgstr "ëª¨ë“ ì»´í¬ë„ŒíЏ" +msgstr "ëª¨ë“ êµ¬ì„± 요소" #: editor/editor_about.cpp msgid "Components" -msgstr "ì»´í¬ë„ŒíЏ" +msgstr "구성 요소" #: editor/editor_about.cpp msgid "Licenses" @@ -1177,7 +1192,7 @@ msgstr "ë¼ì´ì„ 스" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Error opening package file, not in ZIP format." -msgstr "패키지 파ì´ì„ 여는 중 오류가 ë°œìƒí–ˆì–´ìš”, ZIP 형ì‹ì´ 아니네요." +msgstr "패키지 파ì¼ì„ 여는 중 오류. ZIP 형ì‹ì´ 아니ì—ìš”." #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" @@ -1271,7 +1286,7 @@ msgstr "ë³µì œí•˜ê¸°" #: editor/editor_audio_buses.cpp msgid "Reset Volume" -msgstr "볼륨 리셋하기" +msgstr "볼륨 리셋" #: editor/editor_audio_buses.cpp msgid "Delete Effect" @@ -1327,7 +1342,7 @@ msgstr "ë ˆì´ì•„웃" #: editor/editor_audio_buses.cpp msgid "Invalid file, not an audio bus layout." -msgstr "ìž˜ëª»ëœ íŒŒì¼ì´ì—ìš”, 오디오 버스 ë ˆì´ì•„ì›ƒì´ ì•„ë‹ˆì—ìš”." +msgstr "ìž˜ëª»ëœ íŒŒì¼. 오디오 버스 ë ˆì´ì•„ì›ƒì´ ì•„ë‹ˆì—ìš”." #: editor/editor_audio_buses.cpp msgid "Add Bus" @@ -1335,7 +1350,7 @@ msgstr "버스 추가하기" #: editor/editor_audio_buses.cpp msgid "Add a new Audio Bus to this layout." -msgstr "ì´ ë ˆì´ì•„ì›ƒì— ìƒˆ 오디오 버스를 ì¶”ê°€í• ê²Œìš”." +msgstr "ì´ ë ˆì´ì•„ì›ƒì— ìƒˆ 오디오 버스를 추가해요." #: editor/editor_audio_buses.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp @@ -1345,7 +1360,7 @@ msgstr "불러오기" #: editor/editor_audio_buses.cpp msgid "Load an existing Bus Layout." -msgstr "기존 버스 ë ˆì´ì•„ì›ƒì„ ë¶ˆëŸ¬ì˜¬ê²Œìš”." +msgstr "존재하는 버스 ë ˆì´ì•„ì›ƒì„ ë¶ˆëŸ¬ì™€ìš”." #: editor/editor_audio_buses.cpp msgid "Save As" @@ -1353,7 +1368,7 @@ msgstr "다른 ì´ë¦„으로 ì €ìž¥í•˜ê¸°" #: editor/editor_audio_buses.cpp msgid "Save this Bus Layout to a file." -msgstr "ì´ ë²„ìŠ¤ ë ˆì´ì•„ì›ƒì„ íŒŒì¼ë¡œ ì €ìž¥í• ê²Œìš”..." +msgstr "ì´ ë²„ìŠ¤ ë ˆì´ì•„ì›ƒì„ íŒŒì¼ë¡œ ì €ìž¥í•´ìš”..." #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" @@ -1361,7 +1376,7 @@ msgstr "기본값 불러오기" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." -msgstr "기본 버스 ë ˆì´ì•„ì›ƒì„ ë¶ˆëŸ¬ì˜¬ê²Œìš”." +msgstr "기본 버스 ë ˆì´ì•„ì›ƒì„ ë¶ˆëŸ¬ì™€ìš”." #: editor/editor_audio_buses.cpp msgid "Create a new Bus Layout." @@ -1447,7 +1462,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 "ì´ë¦„" @@ -1477,11 +1493,11 @@ msgstr "[ì €ìž¥ë˜ì§€ 않ìŒ]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first." -msgstr "ë¨¼ì € 기본 ë””ë ‰í† ë¦¬ë¥¼ ì„ íƒí•˜ê¸°í•´ì£¼ì„¸ìš”." +msgstr "ë¨¼ì € 기본 ë””ë ‰í† ë¦¬ë¥¼ ì„ íƒí•´ì£¼ì„¸ìš”." #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" -msgstr "ë””ë ‰í† ë¦¬ ì„ íƒí•˜ê¸°" +msgstr "ë””ë ‰í† ë¦¬ë¥¼ ì„ íƒí•˜ì„¸ìš”" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp editor/project_manager.cpp @@ -1562,7 +1578,7 @@ msgstr "템플릿 파ì¼ì„ ì°¾ì„ ìˆ˜ 없어요:" #: editor/editor_export.cpp msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." -msgstr "32비트 환경ì—서는 4GiB보다 í° ë‚´ìž¥ëœ PCK를 내보낼 수 없어요." +msgstr "32비트 환경ì—서는 4 GiB보다 í° ë‚´ìž¥ëœ PCK를 내보낼 수 없어요." #: editor/editor_feature_profile.cpp msgid "3D Editor" @@ -1638,7 +1654,7 @@ msgstr "켜진 í´ëž˜ìФ:" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." -msgstr "íŒŒì¼ '%s' 형ì‹ì´ 잘못ë¬ì–´ìš”, ê°€ì ¸ì˜¬ 수 없어요." +msgstr "íŒŒì¼ '%s' 형ì‹ì´ 잘못ë˜ì—ˆì–´ìš”. ê°€ì ¸ì˜¬ 수 없어요." #: editor/editor_feature_profile.cpp msgid "" @@ -1646,7 +1662,7 @@ msgid "" "aborted." msgstr "" "프로필 '%s'ì´(ê°€) ì´ë¯¸ 있어요. ê°€ì ¸ì˜¤ê¸° ì „ì— ì´ë¯¸ 있는 í”„ë¡œí•„ì„ ë¨¼ì € ì‚ì œí•˜ì„¸" -"ìš”, ê°€ì ¸ì˜¬ 수 없어요." +"ìš”. ê°€ì ¸ì˜¬ 수 없어요." #: editor/editor_feature_profile.cpp msgid "Error saving profile to path: '%s'." @@ -1696,6 +1712,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 "프로필 ê°€ì ¸ì˜¤ê¸°" @@ -1713,7 +1733,7 @@ msgstr "현재 í´ë” ì„ íƒí•˜ê¸°" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" -msgstr "파ì¼ì´ 존재합니다. ë®ì–´ì“°ì‹œê² 습니까?" +msgstr "파ì¼ì´ ì´ë¯¸ 있어요. ë®ì–´ì“¸ê¹Œìš”?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select This Folder" @@ -1834,7 +1854,7 @@ msgstr "현재 í´ë”를 ì¦ê²¨ì°¾ê¸°í•˜ê±°ë‚˜ 하지 않아요." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Toggle the visibility of hidden files." -msgstr "ê°ì¶˜ 파ì¼ì˜ 표시 여부 í† ê¸€." +msgstr "숨긴 파ì¼ì˜ 표시 여부 í† ê¸€." #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." @@ -1870,7 +1890,7 @@ msgstr "소스 조사" msgid "" "There are multiple importers for different types pointing to file %s, import " "aborted" -msgstr "íŒŒì¼ %sì„(를) 가리키는 다른 ìœ í˜•ì˜ ê°€ì ¸ì˜¤ê¸°ê°€ ë§Žì•„ìš”, ê°€ì ¸ì˜¬ 수 없어요" +msgstr "íŒŒì¼ %sì„(를) 가리키는 다른 ìœ í˜•ì˜ ê°€ì ¸ì˜¤ê¸°ê°€ ë§Žì•„ìš”. ê°€ì ¸ì˜¬ 수 없어요" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" @@ -1948,7 +1968,7 @@ 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]ê´€ë ¨ ì •ë³´ë¥¼ 기여하여[/" +"현재 ì´ ì†ì„±ì˜ ì„¤ëª…ì´ ì—†ì–´ìš”. [color=$color][url=$url]ê´€ë ¨ ì •ë³´ë¥¼ 기여하여[/" "url][/color] ê°œì„ í• ìˆ˜ 있ë„ë¡ ë„와주세요!" #: editor/editor_help.cpp @@ -1969,6 +1989,15 @@ msgid "Search Help" msgstr "ë„ì›€ë§ ê²€ìƒ‰" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "ë„우미 ë³´ì´ê¸°" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "ëª¨ë‘ í‘œì‹œí•˜ê¸°" @@ -2004,6 +2033,29 @@ msgstr "멤버 ìœ í˜•" msgid "Class" msgstr "í´ëž˜ìФ" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "메서드" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "시그ë„" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "ë¹„ì„ í˜•" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "ì†ì„±:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "테마 ì†ì„±" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "ì†ì„±:" @@ -2014,7 +2066,7 @@ msgstr "ì„¤ì •" #: editor/editor_inspector.cpp msgid "Set Multiple:" -msgstr "다중 ì„¤ì •:" +msgstr "여러 ì„¤ì •:" #: editor/editor_log.cpp msgid "Output:" @@ -2046,7 +2098,7 @@ msgstr "중단하기" #: editor/editor_network_profiler.cpp editor/editor_profiler.cpp #: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp msgid "Start" -msgstr "시작" +msgstr "시작하기" #: editor/editor_network_profiler.cpp msgid "%s/s" @@ -2086,7 +2138,7 @@ msgstr "새 ì°½" #: editor/editor_node.cpp msgid "Project export failed with error code %d." -msgstr "프로ì 트를 내보낼 수 없었어요 오류 코드%d." +msgstr "프로ì 트 ë‚´ë³´ë‚´ê¸°ì— ì‹¤íŒ¨í–ˆì–´ìš”. 오류 코드%d." #: editor/editor_node.cpp msgid "Imported resources can't be saved." @@ -2115,11 +2167,11 @@ msgstr "리소스를 다른 ì´ë¦„으로 ì €ìž¥í•˜ê¸°..." #: editor/editor_node.cpp msgid "Can't open file for writing:" -msgstr "파ì¼ì„ ìž‘ì„±í•˜ë ¤ê³ ì—´ 수 없어요:" +msgstr "파ì¼ì„ ìž‘ì„±í•˜ë ¤ê³ ì—´ 수 ì—†ìŒ:" #: editor/editor_node.cpp msgid "Requested file format unknown:" -msgstr "ìš”ì²í•œ íŒŒì¼ í˜•ì‹ì„ 알 수 없어요:" +msgstr "ìš”ì²í•œ íŒŒì¼ í˜•ì‹ì„ 알 수 ì—†ìŒ:" #: editor/editor_node.cpp msgid "Error while saving." @@ -2127,7 +2179,7 @@ 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'." @@ -2174,11 +2226,12 @@ 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 "ì—´ë ¤ìžˆëŠ” ì”¬ì€ ë®ì–´ 쓸 수 없어요!" +msgstr "ì—´ë ¤ìžˆëŠ” ì”¬ì€ ë®ì–´ì“¸ 수 없어요!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2261,7 +2314,7 @@ msgstr "" #: editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "실행하기로 ì •ì˜ëœ ì”¬ì´ ì—†ì–´ìš”." +msgstr "실행하기로 ì •ì˜í•œ ì”¬ì´ ì—†ì–´ìš”." #: editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." @@ -2293,7 +2346,7 @@ msgstr "ë¹ ë¥¸ 스í¬ë¦½íЏ 열기..." #: editor/editor_node.cpp msgid "Save & Close" -msgstr "ì €ìž¥ & 닫기" +msgstr "ì €ìž¥í•˜ê¸° & 닫기" #: editor/editor_node.cpp msgid "Save changes to '%s' before closing?" @@ -2321,7 +2374,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." @@ -2333,7 +2386,7 @@ msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." -msgstr "ì´ ìž‘ì—…ì€ ë£¨íŠ¸ 노드가 ì—†ì´ëŠ” 불가능합니다." +msgstr "ì´ ìž‘ì—…ì—는 루트 노드가 필요해요." #: editor/editor_node.cpp msgid "Export Tile Set" @@ -2341,15 +2394,15 @@ msgstr "타ì¼ì…‹ 내보내기" #: editor/editor_node.cpp msgid "This operation can't be done without a selected node." -msgstr "ì´ ìž‘ì—…ì—는 노드를 ì„ íƒí•´ 놓아야 í•´ìš”." +msgstr "ì´ ìž‘ì—…ì—는 ì„ íƒí•œ 노드가 필요해요." #: editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" -msgstr "현재 ì”¬ì„ ì €ìž¥í•˜ì§€ 않았네요. ë¬´ì‹œí•˜ê³ ì—´ê¹Œìš”?" +msgstr "현재 ì”¬ì„ ì €ìž¥í•˜ì§€ 않았어요. ë¬´ì‹œí•˜ê³ ì—´ê¹Œìš”?" #: editor/editor_node.cpp msgid "Can't reload a scene that was never saved." -msgstr "ì €ìž¥í•˜ì§€ ì•Šì€ ì”¬ì„ ë‹¤ì‹œ 불러올 수는 없어요." +msgstr "ì €ìž¥í•˜ì§€ ì•Šì€ ì”¬ì€ ë‹¤ì‹œ 불러올 수 없어요." #: editor/editor_node.cpp msgid "Revert" @@ -2365,7 +2418,7 @@ msgstr "ë¹ ë¥¸ 씬 실행하기..." #: editor/editor_node.cpp msgid "Quit" -msgstr "종료" +msgstr "종료하기" #: editor/editor_node.cpp msgid "Exit the editor?" @@ -2377,7 +2430,7 @@ msgstr "프로ì 트 ë§¤ë‹ˆì €ë¥¼ 열까요?" #: editor/editor_node.cpp msgid "Save & Quit" -msgstr "ì €ìž¥í•˜ê³ ì¢…ë£Œí•˜ê¸°" +msgstr "ì €ìž¥í•˜ê¸° & 종료하기" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" @@ -2410,7 +2463,7 @@ msgstr "ë‹«ì€ ì”¬ 다시 열기" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." msgstr "" -"ì• ë“œì˜¨ 플러그ì¸ì„ 여기서 켤 수 ì—†ìŒ: '%s' ì„¤ì •ì„ êµ¬ë¬¸ ë¶„ì„í• ìˆ˜ 없어요." +"ì• ë“œì˜¨ 플러그ì¸ì„ 여기서 켤 수 ì—†ìŒ: '%s' ì„¤ì •ì„ êµ¬ë¬¸ ë¶„ì„í• ìˆ˜ 없어요." #: editor/editor_node.cpp msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." @@ -2425,8 +2478,8 @@ msgid "" "Unable to load addon script from path: '%s' There seems to be an error in " "the code, please check the syntax." msgstr "" -"ë‹¤ìŒ ê²½ë¡œì—서 ì• ë“œì˜¨ 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 ì—†ìŒ: '%s' ì½”ë“œì˜ ì˜¤ë¥˜ê°€ 있는 것 ê°™" -"ì€ë°, ë¬¸ë²•ì„ í™•ì¸í•´ë´ìš”." +"ë‹¤ìŒ ê²½ë¡œì—서 ì• ë“œì˜¨ 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 ì—†ìŒ: '%s' ì½”ë“œì— ì˜¤ë¥˜ê°€ 있는 모양" +"ì´ì—ìš”. ë¬¸ë²•ì„ í™•ì¸í•´ë³´ì„¸ìš”." #: editor/editor_node.cpp msgid "" @@ -2447,19 +2500,19 @@ msgid "" "To make changes to it, a new inherited scene can be created." msgstr "" "씬 '%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:" -msgstr "씬 '%s'ì˜ ì¢…ì† í•ëª©ì´ ê¹¨ì§:" +msgstr "씬 '%s'ì˜ ì¢…ì† í•ëª©ì´ ë§ê°€ì§:" #: editor/editor_node.cpp msgid "Clear Recent Scenes" @@ -2489,7 +2542,7 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" -"ì„ íƒí•œ 씬 '%s'ì€(는) 씬 파ì¼ì´ 아니네요, 다른 씬으로 ì •í• ê¹Œìš”?\n" +"ì„ íƒí•œ 씬 '%s'ì€(는) 씬 파ì¼ì´ 아니ì—ìš”, 다른 씬으로 ì •í• ê¹Œìš”?\n" "ì´ê±´ ë‚˜ì¤‘ì— \"프로ì 트 ì„¤ì •\"ì˜ 'application' ì¹´í…Œê³ ë¦¬ì—서 바꿀 수 있어요." #: editor/editor_node.cpp @@ -2540,15 +2593,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" @@ -2564,7 +2617,7 @@ msgstr "집중 모드 í† ê¸€." #: editor/editor_node.cpp msgid "Add a new scene." -msgstr "새 씬 추가하기." +msgstr "새 ì”¬ì„ ì¶”ê°€í•´ìš”." #: editor/editor_node.cpp msgid "Scene" @@ -2572,7 +2625,7 @@ msgstr "씬" #: editor/editor_node.cpp msgid "Go to previously opened scene." -msgstr "ì´ì „ì— ì—´ì—ˆë˜ ì”¬ìœ¼ë¡œ 가기." +msgstr "ì´ì „ì— ì—´ì—ˆë˜ ì”¬ìœ¼ë¡œ 가요." #: editor/editor_node.cpp msgid "Copy Text" @@ -2592,7 +2645,7 @@ msgstr "íŒŒì¼ í•„í„°..." #: editor/editor_node.cpp msgid "Operations with scene files." -msgstr "씬 파ì¼ë¡œ 작업하기." +msgstr "씬 파ì¼ë¡œ 작업해요." #: editor/editor_node.cpp msgid "New Scene" @@ -2648,7 +2701,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 "프로ì 트" @@ -2748,7 +2802,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" @@ -2863,15 +2917,15 @@ msgstr "ì •ë³´" #: editor/editor_node.cpp msgid "Play the project." -msgstr "프로ì 트 실행하기." +msgstr "프로ì 트를 실행해요." #: editor/editor_node.cpp msgid "Play" msgstr "실행하기" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "씬 멈추기" +msgid "Pause the scene execution for debugging." +msgstr "ë””ë²„ê¹…ì„ í•˜ê¸° 위해 씬 ì‹¤í–‰ì„ ë©ˆì¶°ìš”." #: editor/editor_node.cpp msgid "Pause Scene" @@ -2879,11 +2933,11 @@ 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" @@ -2891,7 +2945,7 @@ msgstr "씬 실행하기" #: editor/editor_node.cpp msgid "Play custom scene" -msgstr "다른 씬 실행하기" +msgstr "ì”¬ì„ ì§€ì •í•´ì„œ 실행해요" #: editor/editor_node.cpp msgid "Play Custom Scene" @@ -2899,7 +2953,7 @@ msgstr "맞춤 씬 실행하기" #: editor/editor_node.cpp msgid "Changing the video driver requires restarting the editor." -msgstr "비디오 드ë¼ì´ë²„를 ë³€ê²½í•˜ë ¤ë©´ 편집기를 다시 실행해야 í•´ìš”." +msgstr "비디오 드ë¼ì´ë²„를 ë³€ê²½í•˜ë ¤ë©´ 편집기를 다시 ê»ë‹¤ 켜야 í•´ìš”." #: editor/editor_node.cpp editor/project_settings_editor.cpp #: editor/settings_config_dialog.cpp @@ -2908,11 +2962,11 @@ msgstr "ì €ìž¥ & 다시 시작하기" #: editor/editor_node.cpp msgid "Spins when the editor window redraws." -msgstr "편집기 ì°½ì´ ë³€í• ë•Œë§ˆë‹¤ ëŒ ê±°ì˜ˆìš”." +msgstr "편집기 ì°½ì— ë³€í™”ê°€ ìžˆì„ ë•Œë§ˆë‹¤ ëŒì•„ìš”." #: editor/editor_node.cpp msgid "Update Continuously" -msgstr "ì§€ì†ì ì—…ë°ì´íЏ" +msgstr "ìƒì‹œ ì—…ë°ì´íЏ" #: editor/editor_node.cpp msgid "Update When Changed" @@ -2961,7 +3015,7 @@ msgid "" "preset." msgstr "" "\"res://android/build\"ì— ì†ŒìŠ¤ í…œí”Œë¦¿ì„ ì„¤ì¹˜í•´ì„œ, 프로ì 트를 맞춤 안드로ì´ë“œ " -"ë¹Œë“œì— ë§žê²Œ ì„¤ì •í• ê±°ì—ìš”.\n" +"ë¹Œë“œì— ë§žê²Œ ì„¤ì •í• ê±°ì˜ˆìš”.\n" "그런 ë‹¤ìŒ ìˆ˜ì • 사í•ì„ ì ìš©í•˜ê³ ë§žì¶¤ APK를 만들어 내보낼 수 있어요 (모듈 추가" "하기, AndroidManifest.xml 바꾸기 등).\n" "미리 ë¹Œë“œëœ APK를 사용하는 ëŒ€ì‹ ë§žì¶¤ 빌드를 ë§Œë“¤ë ¤ë©´, 안드로ì´ë“œ 내보내기 프" @@ -2974,13 +3028,17 @@ msgid "" "Remove the \"res://android/build\" directory manually before attempting this " "operation again." msgstr "" -"안드로ì´ë“œ 빌드 í…œí”Œë¦¿ì„ ì´ë¯¸ 설치한 ë°ë‹¤ê°€ ë®ì–´ 쓸 수 없네요.\n" +"안드로ì´ë“œ 빌드 í…œí”Œë¦¿ì´ ì´ë¯¸ ì´ í”„ë¡œì íŠ¸ì— ì„¤ì¹˜í–ˆê³ , ë®ì–´ 쓸 수 없어요.\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 "프로ì 트 내보내기" @@ -2999,7 +3057,7 @@ msgstr "암호:" #: editor/editor_node.cpp msgid "Open & Run a Script" -msgstr "스í¬ë¦½íŠ¸ë¥¼ ì—´ê³ ì‹¤í–‰í•˜ê¸°" +msgstr "스í¬ë¦½íЏ 열기 & 실행하기" #: editor/editor_node.cpp msgid "New Inherited" @@ -3037,13 +3095,17 @@ msgstr "ë‹¤ìŒ íŽ¸ì§‘ê¸° 열기" 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 "메시 미리보기 ìƒì„± 중" +msgstr "메시 미리 보기 만들기" #: editor/editor_plugin.cpp msgid "Thumbnail..." @@ -3161,7 +3223,7 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" -"파ì¼ë¡œ ì €ìž¥í•œ ë¦¬ì†ŒìŠ¤ì— ViewportTexture를 만들 수는 없어요.\n" +"파ì¼ë¡œ ì €ìž¥í•œ ë¦¬ì†ŒìŠ¤ì— ViewportTexture를 만들 수 없어요.\n" "리소스가 ì”¬ì— ì†í•´ 있어야 í•´ìš”." #: editor/editor_properties.cpp @@ -3178,7 +3240,7 @@ msgstr "" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" -msgstr "ë·°í¬íЏ ì„ íƒí•˜ê¸°" +msgstr "ë·°í¬íŠ¸ë¥¼ ì„ íƒí•˜ì„¸ìš”" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New Script" @@ -3322,7 +3384,7 @@ msgstr "(현재)" #: editor/export_template_manager.cpp msgid "Retrieving mirrors, please wait..." -msgstr "미러를 검색 중ì´ì—ìš”, ê¸°ë‹¤ë ¤ì£¼ì„¸ìš”..." +msgstr "미러를 검색 중ì´ì—ìš”. ê¸°ë‹¤ë ¤ì£¼ì„¸ìš”..." #: editor/export_template_manager.cpp msgid "Remove template version '%s'?" @@ -3353,6 +3415,15 @@ msgid "Importing:" msgstr "ê°€ì ¸ì˜¤ëŠ” 중:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "서명 오브ì 트 ìƒì„±ì¤‘ ì—러." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3363,12 +3434,12 @@ msgstr "" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve." -msgstr "í•´ê²°í• ìˆ˜ ì—†ìŒ." +msgstr "í•´ê²°í• ìˆ˜ 없어요." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't connect." -msgstr "ì—°ê²°í• ìˆ˜ ì—†ìŒ." +msgstr "ì—°ê²°í• ìˆ˜ 없어요." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3386,7 +3457,7 @@ msgstr "리다ì´ë ‰íЏ 루프." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed:" -msgstr "실패:" +msgstr "실패함:" #: editor/export_template_manager.cpp msgid "Download Complete." @@ -3479,6 +3550,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 "내보내기 템플릿 ë§¤ë‹ˆì €" @@ -3497,7 +3572,7 @@ msgstr "ì¦ê²¨ì°¾ê¸°" #: editor/filesystem_dock.cpp msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"ìƒíƒœ: íŒŒì¼ ê°€ì ¸ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆì–´ìš”. 수ë™ìœ¼ë¡œ 파ì¼ì„ ìˆ˜ì •í•˜ê³ ë‹¤ì‹œ ê°€ì ¸ì™€ 주세" +"ìƒíƒœ: íŒŒì¼ ê°€ì ¸ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆì–´ìš”. 수ë™ìœ¼ë¡œ 파ì¼ì„ ìˆ˜ì •í•˜ê³ ë‹¤ì‹œ ê°€ì ¸ 와주세" "ìš”." #: editor/filesystem_dock.cpp @@ -3557,12 +3632,16 @@ 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 "ì¸ìŠ¤í„´ìŠ¤" +msgstr "ì¸ìŠ¤í„´ìŠ¤í•˜ê¸°" #: editor/filesystem_dock.cpp msgid "Add to Favorites" @@ -3646,7 +3725,7 @@ msgid "" "Scanning Files,\n" "Please Wait..." msgstr "" -"íŒŒì¼ ìŠ¤ìº” 중,\n" +"íŒŒì¼ ìŠ¤ìº” 중ì´ì—ìš”.\n" "ê¸°ë‹¤ë ¤ì£¼ì„¸ìš”..." #: editor/filesystem_dock.cpp @@ -3690,8 +3769,8 @@ 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 @@ -3716,7 +3795,7 @@ msgstr "바꾸기: " #: editor/find_in_files.cpp msgid "Replace all (no undo)" -msgstr "ì „ë¶€ 바꾸기 (ë˜ëŒë¦´ 수 없어요)" +msgstr "ëª¨ë‘ ë°”ê¾¸ê¸° (ë˜ëŒë¦´ 수 없어요)" #: editor/find_in_files.cpp msgid "Searching..." @@ -3740,7 +3819,7 @@ msgstr "ì´ ê·¸ë£¹ ì´ë¦„ì€ ì´ë¯¸ 누가 ì“°ê³ ìžˆì–´ìš”." #: editor/groups_editor.cpp msgid "Invalid group name." -msgstr "ì´ ê·¸ë£¹ ì´ë¦„ì€ ìž˜ëª»ë˜ì—ˆì–´ìš”." +msgstr "ì´ ê·¸ë£¹ ì´ë¦„ì€ ìž˜ëª»ëì–´ìš”." #: editor/groups_editor.cpp msgid "Rename Group" @@ -3752,7 +3831,7 @@ msgstr "그룹 ì‚ì œí•˜ê¸°" #: editor/groups_editor.cpp editor/node_dock.cpp msgid "Groups" -msgstr "그룹(Group)" +msgstr "그룹" #: editor/groups_editor.cpp msgid "Nodes Not in Group" @@ -3769,7 +3848,7 @@ msgstr "ê·¸ë£¹ì— ì†í•œ 노드" #: editor/groups_editor.cpp msgid "Empty groups will be automatically removed." -msgstr "빈 ê·¸ë£¹ì€ ìžë™ìœ¼ë¡œ ì‚ì œë˜ìš”." +msgstr "빈 ê·¸ë£¹ì€ ìžë™ìœ¼ë¡œ ì‚ì œë¼ìš”." #: editor/groups_editor.cpp msgid "Group Editor" @@ -3842,15 +3921,15 @@ msgstr "맞춤 스í¬ë¦½íЏ 실행 중..." #: editor/import/resource_importer_scene.cpp msgid "Couldn't load post-import script:" -msgstr "ê°€ì ¸ì˜¤ê¸° 후 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 ì—†ìŒ:" +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:" -msgstr "ê°€ì ¸ì˜¤ê¸° 후 스í¬ë¦½íЏ 실행 중 오류:" +msgstr "후 ê°€ì ¸ì˜¤ê¸° 스í¬ë¦½íЏ 실행 중 오류:" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -3892,7 +3971,7 @@ msgstr "ê°€ì ¸ì˜¨ 파ì¼ì˜ ìœ í˜•ì„ ë°”ê¾¸ë ¤ë©´ 편집기를 다시 켜아 í• msgid "" "WARNING: Assets exist that use this resource, they may stop loading properly." msgstr "" -"ê²½ê³ : ì´ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하는 ì• ì…‹ì´ ìžˆì–´ìš”, ì •ìƒì 으로 불러오지 ëª»í• ìˆ˜ë„ ìžˆì–´" +"ê²½ê³ : ì´ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하는 ì• ì…‹ì´ ìžˆì–´ìš”. ì •ìƒì 으로 불러오지 ëª»í• ìˆ˜ë„ ìžˆì–´" "ìš”." #: editor/inspector_dock.cpp @@ -3914,11 +3993,11 @@ msgstr "다른 ì´ë¦„으로 ì €ìž¥..." #: editor/inspector_dock.cpp msgid "Copy Params" -msgstr "ì†ì„± 복사하기" +msgstr "매개변수 복사하기" #: editor/inspector_dock.cpp msgid "Paste Params" -msgstr "ì†ì„± 붙여넣기" +msgstr "매개변수 붙여넣기" #: editor/inspector_dock.cpp msgid "Edit Resource Clipboard" @@ -3942,27 +4021,27 @@ msgstr "ë„움ë§ì—서 열기" #: editor/inspector_dock.cpp msgid "Create a new resource in memory and edit it." -msgstr "새 리소스를 메모리ì—서 ë§Œë“¤ê³ íŽ¸ì§‘í•˜ê¸°." +msgstr "새 리소스를 메모리ì—서 ë§Œë“¤ê³ íŽ¸ì§‘í•´ìš”." #: editor/inspector_dock.cpp msgid "Load an existing resource from disk and edit it." -msgstr "디스í¬ì—서 기존 리소스를 ë¶ˆëŸ¬ì˜¤ê³ íŽ¸ì§‘í•˜ê¸°." +msgstr "디스í¬ì—서 기존 리소스를 ë¶ˆëŸ¬ì˜¤ê³ íŽ¸ì§‘í•´ìš”." #: editor/inspector_dock.cpp msgid "Save the currently edited resource." -msgstr "현재 편집하는 리소스를 ì €ìž¥í•˜ê¸°." +msgstr "현재 편집하는 리소스를 ì €ìž¥í•´ìš”." #: editor/inspector_dock.cpp msgid "Go to the previous edited object in history." -msgstr "기ë¡ì—서 ì´ì „ì— íŽ¸ì§‘í•œ ê°ì²´ë¡œ 가기." +msgstr "기ë¡ì—서 ì´ì „ì— íŽ¸ì§‘í•œ ê°ì²´ë¡œ 가요." #: editor/inspector_dock.cpp msgid "Go to the next edited object in history." -msgstr "기ë¡ì—서 다ìŒì— 편집한 ê°ì²´ë¡œ 가기." +msgstr "기ë¡ì—서 다ìŒì— 편집한 ê°ì²´ë¡œ 가요." #: editor/inspector_dock.cpp msgid "History of recently edited objects." -msgstr "ìµœê·¼ì— íŽ¸ì§‘í•œ ê°ì²´ 기ë¡." +msgstr "ìµœê·¼ì— íŽ¸ì§‘í•œ ê°ì²´ 기ë¡ì´ì—ìš”." #: editor/inspector_dock.cpp msgid "Object properties." @@ -3974,7 +4053,7 @@ msgstr "í•„í„° ì†ì„±" #: editor/inspector_dock.cpp msgid "Changes may be lost!" -msgstr "변경사í•ì„ ìžƒì„ ìˆ˜ë„ ìžˆì–´ìš”!" +msgstr "변경 사í•ì„ ìžƒì„ ìˆ˜ë„ ìžˆì–´ìš”!" #: editor/multi_node_edit.cpp msgid "MultiNode Set" @@ -4114,7 +4193,7 @@ msgid "" "AnimationTree is inactive.\n" "Activate to enable playback, check node warnings if activation fails." msgstr "" -"AnimationTree ê°€ êº¼ì ¸ 있어요.\n" +"AnimationTreeê°€ êº¼ì ¸ 있어요.\n" "재ìƒí•˜ë ¤ë©´ AnimationTree를 ì¼œê³ , ì‹¤í–‰ì— ì‹¤íŒ¨í•˜ë©´ 노드 ê²½ê³ ë¥¼ 확ì¸í•˜ì„¸ìš”." #: editor/plugins/animation_blend_space_1d_editor.cpp @@ -4125,12 +4204,12 @@ msgstr "공간 ë‚´ì˜ í˜¼í•© ì§€ì ì„¤ì •í•˜ê¸°" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Select and move points, create points with RMB." -msgstr "ì ì„ ì„ íƒí•˜ê³ ì´ë™í•´ìš”, ìš°í´ë¦ìœ¼ë¡œ ì ì„ ë§Œë“œì„¸ìš”." +msgstr "ì ì„ ì„ íƒí•˜ê³ ì´ë™í•´ìš”. ìš°í´ë¦ìœ¼ë¡œ ì ì„ ë§Œë“œì„¸ìš”." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp msgid "Enable snap and show grid." -msgstr "ìŠ¤ëƒ…ì„ ì¼œë©´ì„œ 격ìžë¥¼ ë³´ì´ê¸°." +msgstr "ìŠ¤ëƒ…ì„ ì¼œê³ ê²©ìžë¥¼ ë³´ì´ê²Œ í•´ìš”." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4176,11 +4255,11 @@ msgstr "BlendSpace2D 삼ê°í˜• ì‚ì œí•˜ê¸°" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "BlendSpace2D does not belong to an AnimationTree node." -msgstr "BlendSpace2Dê°€ AnimationTree ë…¸ë“œì— ì†í•´ìžˆì§€ 않네요." +msgstr "BlendSpace2Dê°€ AnimationTree ë…¸ë“œì— ì†í•´ìžˆì§€ 않아요." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "No triangles exist, so no blending can take place." -msgstr "삼ê°í˜•ì´ ì—†ì–´ìš”, í˜¼í•©ì´ ì¼ì–´ë‚˜ì§€ ì•Šì„ ê±°ì˜ˆìš”." +msgstr "삼ê°í˜•ì´ ì—†ì–´ìš”. í˜¼í•©ì´ ì¼ì–´ë‚˜ì§€ ì•Šì„ ê±°ì˜ˆìš”." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Toggle Auto Triangles" @@ -4188,7 +4267,7 @@ msgstr "ìžë™ 삼ê°í˜• í† ê¸€" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Create triangles by connecting points." -msgstr "ì ì„ ì—°ê²°í•˜ì—¬ 삼ê°í˜• 만들기." +msgstr "ì ì„ ì—°ê²°í•´ì„œ 삼ê°í˜•ì„ ë§Œë“¤ì–´ìš”." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Erase points and triangles." @@ -4227,7 +4306,7 @@ msgstr "노드 ì´ë™ë¨" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Unable to connect, port may be in use or connection may be invalid." -msgstr "ì—°ê²°í• ìˆ˜ 없어요, í¬íŠ¸ê°€ 사용 중ì´ê±°ë‚˜ ìž˜ëª»ëœ ì—°ê²°ì¼ ê±°ì˜ˆìš”." +msgstr "ì—°ê²°í• ìˆ˜ 없어요. í¬íŠ¸ê°€ 사용 중ì´ê±°ë‚˜ ì—°ê²°ì´ ìž˜ëª»ëœ ëª¨ì–‘ì´ì—ìš”." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -4264,11 +4343,11 @@ 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 "í”Œë ˆì´ì–´ 경로 ì„¤ì •ì´ ìž˜ëª»ëì–´ìš”, 그래서 트랙 ì´ë¦„ì„ ê²€ìƒ‰í• ìˆ˜ 없어요." +msgstr "í”Œë ˆì´ì–´ 경로 ì„¤ì •ì´ ìž˜ëª»ëì–´ìš”. 그래서 트랙 ì´ë¦„ì„ ê²€ìƒ‰í• ìˆ˜ 없어요." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp @@ -4276,10 +4355,22 @@ 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 "노드 ì´ë¦„ 바뀜" @@ -4375,23 +4466,23 @@ msgstr "íŽ¸ì§‘í• ì• ë‹ˆë©”ì´ì…˜ì´ 없어요!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" -msgstr "ì„ íƒí•œ ì• ë‹ˆë©”ì´ì…˜ì„ 현재 위치ì—서 거꾸로 재ìƒí•˜ê¸°. (A)" +msgstr "ì„ íƒí•œ ì• ë‹ˆë©”ì´ì…˜ì„ 현재 위치ì—서 거꾸로 재ìƒí•´ìš”. (A)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" -msgstr "ì„ íƒí•œ ì• ë‹ˆë©”ì´ì…˜ì„ ëì—서 거꾸로 재ìƒí•˜ê¸°. (Shift+A)" +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)" -msgstr "ì„ íƒí•œ ì• ë‹ˆë©”ì´ì…˜ì„ 처ìŒë¶€í„° 재ìƒí•˜ê¸°. (Shift+D)" +msgstr "ì„ íƒí•œ ì• ë‹ˆë©”ì´ì…˜ì„ 처ìŒë¶€í„° 재ìƒí•´ìš”. (Shift+D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from current pos. (D)" -msgstr "ì„ íƒí•œ ì• ë‹ˆë©”ì´ì…˜ì„ 현재 위치부터 재ìƒí•˜ê¸°. (D)" +msgstr "ì„ íƒí•œ ì• ë‹ˆë©”ì´ì…˜ì„ 현재 위치부터 재ìƒí•´ìš”. (D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation position (in seconds)." @@ -4399,7 +4490,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" @@ -4420,7 +4511,7 @@ msgstr "ì¸ìŠ¤íŽ™í„°ì—서 열기" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." -msgstr "ì• ë‹ˆë©”ì´ì…˜ ëª©ë¡ í‘œì‹œí•˜ê¸°." +msgstr "ì• ë‹ˆë©”ì´ì…˜ 목ë¡ì„ 표시해요." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" @@ -4510,6 +4601,11 @@ msgid "Move Node" msgstr "노드 ì´ë™í•˜ê¸°" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "ì „í™˜" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "ì „í™˜ 추가하기" @@ -4536,7 +4632,7 @@ msgstr "ëì—서" #: editor/plugins/animation_state_machine_editor.cpp msgid "Travel" -msgstr "ì´ë™í•˜ê¸°" +msgstr "ì§„í–‰" #: editor/plugins/animation_state_machine_editor.cpp msgid "Start and end nodes are needed for a sub-transition." @@ -4570,20 +4666,19 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp msgid "Create new nodes." -msgstr "새 노드 만들기." +msgstr "새 노드를 만들어요." #: editor/plugins/animation_state_machine_editor.cpp msgid "Connect nodes." -msgstr "노드 연결하기." +msgstr "노드를 ì—°ê²°í•´ìš”." #: editor/plugins/animation_state_machine_editor.cpp msgid "Remove selected node or transition." -msgstr "ì„ íƒí•œ 노드나 ì „í™˜ ì‚ì œí•˜ê¸°." +msgstr "ì„ íƒí•œ 노드나 ì „í™˜ì„ ì‚ì œí•´ìš”." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." -msgstr "" -"ì´ ì• ë‹ˆë©”ì´ì…˜ì„ 시작, 다시 시작 í˜¹ì€ 0으로 ê°€ë„ë¡ ìžë™ìœ¼ë¡œ 재ìƒì„ í† ê¸€." +msgstr "ì´ ì• ë‹ˆë©”ì´ì…˜ì„ 시작, 재시작, í˜¹ì€ 0으로 ê°€ë„ë¡ ìžë™ 재ìƒì„ í† ê¸€í•´ìš”." #: editor/plugins/animation_state_machine_editor.cpp msgid "Set the end animation. This is useful for sub-transitions." @@ -4593,6 +4688,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" @@ -4744,7 +4843,7 @@ msgstr "íŒŒì¼ ë³´ê¸°" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Connection error, please try again." -msgstr "ì—°ê²° 오류, 다시 시ë„해주세요." +msgstr "ì—°ê²° 오류. 다시 시ë„해주세요." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't connect to host:" @@ -4760,7 +4859,7 @@ msgstr "호스트 ì´ë¦„ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, return code:" -msgstr "ìš”ì² ì‹¤íŒ¨, 반환 코드:" +msgstr "ìš”ì² ì‹¤íŒ¨. 반환 코드:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed." @@ -4776,7 +4875,7 @@ msgstr "작성 오류." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" -msgstr "ìš”ì² ì‹¤íŒ¨, 너무 ë§Žì€ ë¦¬ë‹¤ì´ë ‰íЏ" +msgstr "ìš”ì² ì‹¤íŒ¨. 너무 ë§Žì€ ë¦¬ë‹¤ì´ë ‰íЏ" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Redirect loop." @@ -4784,7 +4883,7 @@ msgstr "리다ì´ë ‰íЏ 루프." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, timeout" -msgstr "ìš”ì² ì‹¤íŒ¨, 시간 초과" +msgstr "ìš”ì² ì‹¤íŒ¨. 시간 초과" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Timeout." @@ -4792,7 +4891,7 @@ msgstr "시간 초과." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." -msgstr "ìž˜ëª»ëœ ë‹¤ìš´ë¡œë“œ 해시, 파ì¼ì´ ë³€ì¡°ëœ ê²ƒ 같아요." +msgstr "ìž˜ëª»ëœ ë‹¤ìš´ë¡œë“œ 해시. 파ì¼ì´ ë³€ì¡°ëœ ê²ƒ 같아요." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Expected:" @@ -4824,7 +4923,7 @@ msgstr "í•´ê²° 중..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Error making request" -msgstr "ìš”ì² ì˜¤ë¥˜" +msgstr "ìš”ì² ë§Œë“œëŠ” 중 오류" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Idle" @@ -4847,6 +4946,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 "처ìŒìœ¼ë¡œ" @@ -4868,7 +4991,7 @@ msgstr "모ë‘" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "\"%s\"ì— ëŒ€í•œ 결과가 없어요." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -4901,7 +5024,7 @@ msgstr "ê³µì‹" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "실험" +msgstr "시험" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Loading..." @@ -4917,7 +5040,7 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" -"ë¼ì´íŠ¸ë§µ ì´ë¯¸ì§€ì˜ ì €ìž¥ 경로를 íŒŒì•…í• ìˆ˜ 없네요.\n" +"ë¼ì´íŠ¸ë§µ ì´ë¯¸ì§€ì˜ ì €ìž¥ 경로를 íŒŒì•…í• ìˆ˜ 없어요.\n" "(ê°™ì€ ê²½ë¡œì— ì´ë¯¸ì§€ë¥¼ ì €ìž¥í• ìˆ˜ 있ë„ë¡) ì”¬ì„ ì €ìž¥í•˜ê±°ë‚˜, BakedLightmap ì†ì„±ì—" "서 ì €ìž¥ 경로를 ì§€ì •í•˜ì„¸ìš”." @@ -4931,7 +5054,7 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." -msgstr "ë¼ì´íŠ¸ë§µ ì´ë¯¸ì§€ ìƒì„± 실패, 작성 가능한 경로ì¸ì§€ 확ì¸í•´ì£¼ì„¸ìš”." +msgstr "ë¼ì´íŠ¸ë§µ ì´ë¯¸ì§€ ìƒì„± 실패. 작성 가능한 경로ì¸ì§€ 확ì¸í•´ì£¼ì„¸ìš”." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" @@ -4955,6 +5078,14 @@ 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 "íšŒì „ 오프셋:" @@ -4963,6 +5094,10 @@ 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 "ìˆ˜ì§ ê°€ì´ë“œ ì´ë™í•˜ê¸°" @@ -5028,11 +5163,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" @@ -5044,6 +5247,24 @@ 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 "" +"게임 ì¹´ë©”ë¼ ë‹¤ì‹œ ì •ì˜í•˜ê¸°\n" +"편집기 ë·°í¬íЏ ì¹´ë©”ë¼ë¡œ 게임 ì¹´ë©”ë¼ë¥¼ 다시 ì •ì˜í•´ìš”." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"게임 ì¹´ë©”ë¼ ë‹¤ì‹œ ì •ì˜í•˜ê¸°\n" +"ì‹¤í–‰í•˜ê³ ìžˆëŠ” 게임 ì¸ìŠ¤í„´ìŠ¤ê°€ 없어요." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "ì„ íƒ í•목 ìž ê·¸ê¸°" @@ -5072,7 +5293,7 @@ msgstr "ê°€ì´ë“œ 지우기" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Custom Bone(s) from Node(s)" -msgstr "노드ì—서 커스텀 본 만들기" +msgstr "노드ì—서 맞춤 본 만들기" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" @@ -5090,7 +5311,7 @@ msgstr "IK ì²´ì¸ ì§€ìš°ê¸°" msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." -msgstr "ê²½ê³ : 컨테ì´ë„ˆì˜ ìžì‹ 규모와 위치는 ë¶€ëª¨ì— ì˜í•´ ê²°ì •ë˜ì–´ìš”." +msgstr "ê²½ê³ : 컨테ì´ë„ˆì˜ ìžì‹ 규모와 위치는 ë¶€ëª¨ì— ì˜í•´ ê²°ì •ë¼ìš”." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -5113,7 +5334,7 @@ msgstr "Alt+드래그: ì´ë™í•˜ê¸°" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." -msgstr "'v'키로 피벗 바꾸기, 'Shift+v'키로 피벗 드래그 (ì´ë™í•˜ëŠ” ë™ì•ˆ)." +msgstr "'v'키로 피벗 바꾸기. 'Shift+v'키로 피벗 드래그 (ì´ë™í•˜ëŠ” ë™ì•ˆ)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" @@ -5156,24 +5377,20 @@ msgid "Ruler Mode" msgstr "ìž ëª¨ë“œ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "스냅 í† ê¸€." +msgstr "스마트 스냅 í† ê¸€." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "스냅 사용하기" +msgstr "스마트 스냅 사용하기" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "스냅 í† ê¸€." +msgstr "ê²©ìž ìŠ¤ëƒ… í† ê¸€." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "ê²©ìž ìŠ¤ëƒ…" +msgstr "ê²©ìž ìŠ¤ëƒ… 사용하기" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5184,6 +5401,10 @@ 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 "ìƒëŒ€ì ì¸ ìŠ¤ëƒ…" @@ -5198,7 +5419,7 @@ msgstr "스마트 스냅" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap..." -msgstr "스냅 ì„¤ì •..." +msgstr "스냅 ì„¤ì •í•˜ê¸°..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to Parent" @@ -5232,7 +5453,7 @@ msgstr "ì„ íƒí•œ ê°ì²´ë¥¼ ê·¸ ìžë¦¬ì— ìž ê°€ìš” (움ì§ì¼ 수 없어요)." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Unlock the selected object (can be moved)." -msgstr "ì„ íƒí•œ ê°ì²´ë¥¼ ìž ê¸ˆ í•´ì œí•´ìš” (움ì§ì¼ 수 있어요)." +msgstr "ì„ íƒí•œ ê°ì²´ë¥¼ ìž ê¸ˆì—서 풀어요 (움ì§ì¼ 수 있어요)." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5266,29 +5487,28 @@ msgid "View" msgstr "보기" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "ê²©ìž ë³´ê¸°" +msgstr "í•ìƒ ê²©ìž ë³´ì´ê¸°" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "í—¬í¼ ë³´ê¸°" +msgstr "ë„우미 ë³´ì´ê¸°" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" -msgstr "ìž ë³´ê¸°" +msgstr "ìž ë³´ì´ê¸°" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "ê°€ì´ë“œ 보기" +msgstr "ê°€ì´ë“œ ë³´ì´ê¸°" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" -msgstr "ì›ì 보기" +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" @@ -5324,7 +5544,7 @@ msgstr "키 삽입하기 (ë§ˆìŠ¤í¬ ê¸°ì¤€)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5422,7 +5642,7 @@ msgstr "ë°©ì¶œ ë§ˆìŠ¤í¬ ë¶ˆëŸ¬ì˜¤ê¸°" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Restart" -msgstr "다시 시작" +msgstr "다시 시작하기" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -5487,19 +5707,19 @@ msgstr "ê°€ì†" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" -msgstr "부드러운단계" +msgstr "부드러운 단계" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Point" -msgstr "커브 ì ìˆ˜ì •í•˜ê¸°" +msgstr "ê³¡ì„ ì ìˆ˜ì •í•˜ê¸°" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Tangent" -msgstr "커브 탄ì 트 ìˆ˜ì •í•˜ê¸°" +msgstr "ê³¡ì„ íƒ„ì 트 ìˆ˜ì •í•˜ê¸°" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Curve Preset" -msgstr "커브 프리셋 불러오기" +msgstr "ê³¡ì„ í”„ë¦¬ì…‹ 불러오기" #: editor/plugins/curve_editor_plugin.cpp msgid "Add Point" @@ -5523,20 +5743,19 @@ msgstr "프리셋 불러오기" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove Curve Point" -msgstr "커브 ì ì‚ì œí•˜ê¸°" +msgstr "ê³¡ì„ ì ì‚ì œí•˜ê¸°" #: editor/plugins/curve_editor_plugin.cpp msgid "Toggle Curve Linear Tangent" -msgstr "커브 ì„ í˜• 탄ì 트 í† ê¸€" +msgstr "ê³¡ì„ ì„ í˜• 탄ì 트 í† ê¸€" #: editor/plugins/curve_editor_plugin.cpp msgid "Hold Shift to edit tangents individually" msgstr "Shift키를 눌러서 탄ì 트를 개별ì 으로 편집하기" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "ìš°í´ë¦: ì ì‚ì œí•˜ê¸°" +msgstr "ì ì„ ì¶”ê°€í•˜ë ¤ë©´ ìš°í´ë¦" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5600,7 +5819,7 @@ msgstr "ê°–ê³ ìžˆëŠ” 메시가 ArrayMesh ìœ í˜•ì´ ì•„ë‹ˆì—ìš”." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "UV 펼치기를 실패했어요, 메시가 다양한 것 ê°™ì€ë°ìš”?" +msgstr "UV 펼치기를 실패했어요. 메시가 다양한 것 ê°™ì€ë°ìš”?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." @@ -5671,11 +5890,26 @@ msgstr "윤곽 메시 만들기" msgid "Outline Size:" msgstr "윤곽 í¬ê¸°:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "%dê°œì˜ í•ëª©ì„ ì‚ì œí• ê¹Œìš”?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "씬ì—서 ì—…ë°ì´íŠ¸í•˜ê¸°" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "í•목 추가하기" @@ -5695,11 +5929,11 @@ msgstr "씬ì—서 ì—…ë°ì´íŠ¸í•˜ê¸°" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." msgstr "" -"메시 소스를 ì§€ì •í•˜ì§€ 않았네요 (ê·¸ë¦¬ê³ ë…¸ë“œì— MultiMesh를 ì„¤ì •í•˜ì§€ ì•Šì•˜ê³ ìš”)." +"메시 소스를 ì§€ì •í•˜ì§€ 않았어요 (ê·¸ë¦¬ê³ ë…¸ë“œì— MultiMesh를 ì„¤ì •í•˜ì§€ 않았어요)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "메시 소스를 ì§€ì •í•˜ì§€ 않았네요 (ê·¸ë¦¬ê³ MultiMeshì— ë©”ì‹œê°€ ì—†ê³ ìš”)." +msgstr "메시 소스를 ì§€ì •í•˜ì§€ 않았어요 (ê·¸ë¦¬ê³ MultiMeshì— ë©”ì‹œê°€ 없어요)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." @@ -5715,7 +5949,7 @@ msgstr "메시 소스가 잘못ëì–´ìš” (Mesh 리소스가 ì—†ìŒ)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." -msgstr "표면 소스를 ì§€ì •í•˜ì§€ 않았네요." +msgstr "표면 소스를 ì§€ì •í•˜ì§€ 않았어요." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (invalid path)." @@ -5751,7 +5985,7 @@ msgstr "ëŒ€ìƒ í‘œë©´:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "소스 메시:" +msgstr "ì›ë³¸ 메시:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" @@ -5793,7 +6027,7 @@ msgstr "내비게ì´ì…˜ í´ë¦¬ê³¤ 만들기" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" -msgstr "CPU파티í´ë¡œ 변환" +msgstr "CPU파티í´ë¡œ 변환하기" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generating Visibility Rect" @@ -5801,11 +6035,11 @@ msgstr "가시성 ì§ì‚¬ê°í˜• 만들기" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generate Visibility Rect" -msgstr "가시성 ì§ì‚¬ê°í˜•ì„ ë§Œë“¤ê¸°" +msgstr "가시성 ì§ì‚¬ê°í˜•ì„ ë§Œë“¤ì–´ìš”" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" -msgstr "ParticlesMaterial 프로세스 머티리얼 안ì—ë§Œ ì ì„ ì„¤ì •í• ìˆ˜ 있ìŒ" +msgstr "ParticlesMaterial 프로세스 머티리얼 안ì—ë§Œ ì ì„ ì„¤ì •í• ìˆ˜ 있어요" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -5814,11 +6048,11 @@ msgstr "ìƒì„± 시간 (ì´ˆ):" #: editor/plugins/particles_editor_plugin.cpp msgid "The geometry's faces don't contain any area." -msgstr "í˜•íƒœì˜ í‘œë©´ì´ ì˜ì—ì„ ê°–ê³ ìžˆì§€ 않아요." +msgstr "í˜•íƒœì˜ í‘œë©´ì— ì˜ì—ì´ ì—†ì–´ìš”." #: editor/plugins/particles_editor_plugin.cpp msgid "The geometry doesn't contain any faces." -msgstr "형태가 ë©´ì„ ê°–ê³ ìžˆì§€ 않아요." +msgstr "í˜•íƒœì— ë©´ì´ ì—†ì–´ìš”." #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't inherit from Spatial." @@ -5826,11 +6060,11 @@ msgstr "\"%s\"ì€(는) Spatialì„ ìƒì†ë°›ì§€ 않아요." #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't contain geometry." -msgstr "\"%s\"ì´(ê°€) 형태를 ê°–ê³ ìžˆì§€ 않아요." +msgstr "\"%s\"ì— í˜•íƒœê°€ 없어요." #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't contain face geometry." -msgstr "\"%s\"ì´(ê°€) ë©´ 형태를 ê°–ê³ ìžˆì§€ 않아요." +msgstr "\"%s\"ì— ë©´ 형태가 없어요." #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" @@ -5846,7 +6080,7 @@ msgstr "표면 ì " #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points+Normal (Directed)" -msgstr "표면 ì +노멀 (지시ëœ)" +msgstr "표면 ì +노멀 (ì§ì ‘)" #: editor/plugins/particles_editor_plugin.cpp msgid "Volume" @@ -5862,7 +6096,7 @@ msgstr "'ParticlesMaterial' ìœ í˜•ì˜ í”„ë¡œì„¸ì„œ ë¨¸í‹°ë¦¬ì–¼ì´ í•„ìš”í•´ìš”. #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" -msgstr "AABB ìƒì„± 중" +msgstr "AABB 만드는 중" #: editor/plugins/particles_editor_plugin.cpp msgid "Generate Visibility AABB" @@ -5874,36 +6108,36 @@ msgstr "AABB 만들기" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Point from Curve" -msgstr "커브ì—서 ì ì‚ì œí•˜ê¸°" +msgstr "ê³¡ì„ ì—서 ì ì‚ì œí•˜ê¸°" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Out-Control from Curve" -msgstr "ì»¤ë¸Œì˜ ì•„ì›ƒ-컨트롤 ì‚ì œí•˜ê¸°" +msgstr "ê³¡ì„ ì˜ ì•„ì›ƒ-컨트롤 ì‚ì œí•˜ê¸°" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove In-Control from Curve" -msgstr "ì»¤ë¸Œì˜ ì¸-컨트롤 ì‚ì œí•˜ê¸°" +msgstr "ê³¡ì„ ì˜ ì¸-컨트롤 ì‚ì œí•˜ê¸°" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Add Point to Curve" -msgstr "ì»¤ë¸Œì— ì 추가하기" +msgstr "ê³¡ì„ ì— ì 추가하기" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Split Curve" -msgstr "커브 가르기" +msgstr "ê³¡ì„ ê°€ë¥´ê¸°" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move Point in Curve" -msgstr "ì»¤ë¸Œì˜ ì ì´ë™í•˜ê¸°" +msgstr "ê³¡ì„ ì˜ ì ì´ë™í•˜ê¸°" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move In-Control in Curve" -msgstr "ì»¤ë¸Œì˜ ì¸-컨트롤 ì´ë™í•˜ê¸°" +msgstr "ê³¡ì„ ì˜ ì¸-컨트롤 ì´ë™í•˜ê¸°" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move Out-Control in Curve" -msgstr "ì»¤ë¸Œì˜ ì•„ì›ƒ-컨트롤 ì´ë™í•˜ê¸°" +msgstr "ê³¡ì„ ì˜ ì•„ì›ƒ-컨트롤 ì´ë™í•˜ê¸°" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -5922,7 +6156,7 @@ msgstr "í´ë¦: ì 추가하기" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Left Click: Split Segment (in curve)" -msgstr "좌í´ë¦: (커브로) ì„ ë¶„ 가르기" +msgstr "좌í´ë¦: (ê³¡ì„ ì—서) ì„ ë¶„ 가르기" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -5946,7 +6180,7 @@ msgstr "ì ì‚ì œí•˜ê¸°" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Close Curve" -msgstr "커브 닫기" +msgstr "ê³¡ì„ ë‹«ê¸°" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp @@ -5966,19 +6200,19 @@ msgstr "핸들 ê¸¸ì´ ê±°ìš¸" #: editor/plugins/path_editor_plugin.cpp msgid "Curve Point #" -msgstr "커브 ì #" +msgstr "ê³¡ì„ ì #" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve Point Position" -msgstr "커브 ì 위치 ì„¤ì •í•˜ê¸°" +msgstr "ê³¡ì„ ì 위치 ì„¤ì •í•˜ê¸°" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve In Position" -msgstr "ì»¤ë¸Œì˜ ì¸ ìœ„ì¹˜ ì„¤ì •í•˜ê¸°" +msgstr "ê³¡ì„ ì˜ ì¸ ìœ„ì¹˜ ì„¤ì •í•˜ê¸°" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve Out Position" -msgstr "ì»¤ë¸Œì˜ ì•„ì›ƒ 위치 ì„¤ì •í•˜ê¸°" +msgstr "ê³¡ì„ ì˜ ì•„ì›ƒ 위치 ì„¤ì •í•˜ê¸°" #: editor/plugins/path_editor_plugin.cpp msgid "Split Path" @@ -5998,7 +6232,7 @@ msgstr "ì¸-컨트롤 ì ì‚ì œí•˜ê¸°" #: editor/plugins/path_editor_plugin.cpp msgid "Split Segment (in curve)" -msgstr "(커브로) ì„ ë¶„ 가르기" +msgstr "(ê³¡ì„ ì—서) ì„ ë¶„ 가르기" #: editor/plugins/physical_bone_plugin.cpp msgid "Move Joint" @@ -6029,7 +6263,7 @@ msgstr "UV ë§µ 만들기" msgid "" "Polygon 2D has internal vertices, so it can no longer be edited in the " "viewport." -msgstr "Polygon2Dì— ë‚´ë¶€ ê¼ì§“ì ì´ ìžˆì–´ìš”, ë” ì´ìƒ ë·°í¬íЏì—서 íŽ¸ì§‘í• ìˆ˜ 없어요." +msgstr "Polygon2Dì— ë‚´ë¶€ ê¼ì§“ì ì´ ìžˆì–´ìš”. ë” ì´ìƒ ë·°í¬íЏì—서 íŽ¸ì§‘í• ìˆ˜ 없어요." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Polygon & UV" @@ -6045,7 +6279,7 @@ msgstr "ë‚´ë¶€ ê¼ì§“ì ì‚ì œí•˜ê¸°" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "ìž˜ëª»ëœ í´ë¦¬ê³¤ (3ê°œì˜ ë‹¤ë¥¸ ê¼ì§“ì ì´ í•„ìš”í•¨)" +msgstr "ìž˜ëª»ëœ í´ë¦¬ê³¤ (3ê°œì˜ ë‹¤ë¥¸ ê¼ì§“ì ì´ í•„ìš”í•´ìš”)" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Add Custom Polygon" @@ -6061,7 +6295,7 @@ msgstr "UV ë§µ 변형하기" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform Polygon" -msgstr "변형 í´ë¦¬ê³¤" +msgstr "í´ë¦¬ê³¤ 변형하기" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint Bone Weights" @@ -6101,7 +6335,7 @@ msgstr "Ctrl: íšŒì „í•˜ê¸°" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" -msgstr "Shift: ì „ë¶€ ì´ë™í•˜ê¸°" +msgstr "Shift: ëª¨ë‘ ì´ë™í•˜ê¸°" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift+Ctrl: Scale" @@ -6121,23 +6355,23 @@ msgstr "í´ë¦¬ê³¤ í¬ê¸° ì¡°ì ˆí•˜ê¸°" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." -msgstr "맞춤 í´ë¦¬ê³¤ì„ 만들어요. 맞춤 í´ë¦¬ê³¤ ë Œë”ë§ì„ 켤게요." +msgstr "맞춤 í´ë¦¬ê³¤ì„ 만들어요. 맞춤 í´ë¦¬ê³¤ ë Œë”ë§ì„ 켜세요." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" -"맞춤 í´ë¦¬ê³¤ì„ ì‚ì œí•´ìš”. 남아있는 맞춤 í´ë¦¬ê³¤ì´ 없으면, 맞춤 í´ë¦¬ê³¤ ë Œë”ë§ì„ " -"ëŒê²Œìš”." +"맞춤 í´ë¦¬ê³¤ì„ ì‚ì œí•´ìš”. 남아있는 맞춤 í´ë¦¬ê³¤ì´ 없으면, 맞춤 í´ë¦¬ê³¤ ë Œë”ë§ì€ " +"êº¼ì ¸ìš”." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." -msgstr "ì§€ì •í•œ ê°•ë„로 가중치를 ì¹ í•˜ê¸°." +msgstr "ì§€ì •í•œ ê°•ë„로 가중치를 ì¹ í•´ìš”." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Unpaint weights with specified intensity." -msgstr "ì§€ì •í•œ ê°•ë„로 가중치를 지우기." +msgstr "ì§€ì •í•œ ê°•ë„로 가중치를 지워요." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Radius:" @@ -6173,7 +6407,7 @@ msgstr "격ìž" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Show Grid" -msgstr "ê²©ìž ë³´ê¸°" +msgstr "ê²©ìž ë³´ì´ê¸°" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Configure Grid:" @@ -6303,7 +6537,26 @@ msgstr "íŒŒì¼ ì—´ê¸°" #: editor/plugins/script_editor_plugin.cpp msgid "Save File As..." -msgstr "다른 ì´ë¦„으로 ì €ìž¥..." +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 "스í¬ë¦½íŠ¸ê°€ Tool 모드가 아니ì—ìš”. ì‹¤í–‰í• ìˆ˜ ì—†ì„ ê±°ì˜ˆìš”." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"ì´ ìŠ¤í¬ë¦½íŠ¸ë¥¼ ì‹¤í–‰í•˜ë ¤ë©´, 반드시 EditorScriptì— ì†í•´ì•¼ 하며, Tool 모드로 ì„¤ì •" +"ë˜ì–´ 있어야 í•´ìš”." #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" @@ -6319,7 +6572,7 @@ msgstr "ì €ìž¥ 중 오류" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme As..." -msgstr "테마를 다른 ì´ë¦„으로 ì €ìž¥..." +msgstr "테마를 다른 ì´ë¦„으로 ì €ìž¥í•˜ê¸°..." #: editor/plugins/script_editor_plugin.cpp msgid "%s Class Reference" @@ -6432,10 +6685,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 "í”„ë¡œì‹œì € 단위 실행하기" @@ -6463,7 +6712,7 @@ msgstr "외부 편집기로 디버깅" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation." -msgstr "Godot 온ë¼ì¸ 문서 열기." +msgstr "Godot 온ë¼ì¸ 문서를 ì—´ì–´ìš”." #: editor/plugins/script_editor_plugin.cpp msgid "Request Docs" @@ -6479,15 +6728,15 @@ msgstr "참조 문서 검색하기." #: editor/plugins/script_editor_plugin.cpp msgid "Go to previous edited document." -msgstr "ì´ì „ì— íŽ¸ì§‘í•œ 문서로 ì´ë™í•˜ê¸°." +msgstr "ì´ì „ì— íŽ¸ì§‘í•œ 문서로 ì´ë™í•´ìš”." #: editor/plugins/script_editor_plugin.cpp msgid "Go to next edited document." -msgstr "다ìŒì— 편집한 문서로 ì´ë™í•˜ê¸°." +msgstr "다ìŒì— 편집한 문서로 ì´ë™í•´ìš”." #: editor/plugins/script_editor_plugin.cpp msgid "Discard" -msgstr "ì €ìž¥ 안함" +msgstr "버리기" #: editor/plugins/script_editor_plugin.cpp msgid "" @@ -6495,7 +6744,7 @@ msgid "" "What action should be taken?:" msgstr "" "해당 파ì¼ì€ 디스í¬ì— 있는 게 ë” ìµœì‹ ì´ì—ìš”.\n" -"어떻게 하실래요?:" +"어떻게 í• ê±´ê°€ìš”?:" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp @@ -6528,10 +6777,6 @@ msgid "Source" msgstr "소스" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "시그ë„" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "대ìƒ" @@ -6559,6 +6804,12 @@ msgid "Only resources from filesystem can be dropped." msgstr "íŒŒì¼ ì‹œìŠ¤í…œì˜ ë¦¬ì†ŒìŠ¤ë§Œ 드ë¡í• 수 있어요." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"스í¬ë¦½íЏ '%s'ì´(ê°€) ì´ ì”¬ì—서 사용ë˜ì§€ ì•Šê³ ìžˆì–´ì„œ 노드를 드ë¡í• 수 없어요." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "룩업 기호" @@ -6656,11 +6907,11 @@ msgstr "후행 공백 ë¬¸ìž ì‚ì œí•˜ê¸°" #: editor/plugins/script_text_editor.cpp msgid "Convert Indent to Spaces" -msgstr "들여쓰기를 공백으로 변환하기" +msgstr "공백으로 들여쓰ë„ë¡ ë³€í™˜í•˜ê¸°" #: editor/plugins/script_text_editor.cpp msgid "Convert Indent to Tabs" -msgstr "들여쓰기를 íƒìœ¼ë¡œ 변환하기" +msgstr "íƒìœ¼ë¡œ 들여쓰ë„ë¡ ë³€í™˜í•˜ê¸°" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" @@ -6720,7 +6971,7 @@ msgid "" "This shader has been modified on on disk.\n" "What action should be taken?" msgstr "" -"ì´ ì…°ì´ë”는 디스í¬ì—서 ìˆ˜ì •í–ˆë„¤ìš”.\n" +"ì´ ì…°ì´ë”는 디스í¬ì—서 ìˆ˜ì •í–ˆì–´ìš”.\n" "ì–´ë–¤ í–‰ë™ì„ í• ê±´ê°€ìš”?" #: editor/plugins/shader_editor_plugin.cpp @@ -6729,7 +6980,7 @@ msgstr "ì…°ì´ë”" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "This skeleton has no bones, create some children Bone2D nodes." -msgstr "ì´ ìŠ¤ì¼ˆë ˆí†¤ì—는 ë³¸ì´ ì—†ì–´ìš”, Bone2D노드를 ìžì‹ìœ¼ë¡œ 만드세요." +msgstr "ì´ ìŠ¤ì¼ˆë ˆí†¤ì—는 ë³¸ì´ ì—†ì–´ìš”. Bone2D노드를 ìžì‹ìœ¼ë¡œ 만드세요." #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Create Rest Pose from Bones" @@ -6765,7 +7016,7 @@ msgstr "물리ì ìŠ¤ì¼ˆë ˆí†¤ 만들기" #: editor/plugins/skeleton_ik_editor_plugin.cpp msgid "Play IK" -msgstr "IK 실행" +msgstr "IK 실행하기" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" @@ -6777,7 +7028,7 @@ msgstr "ì›ê·¼ë³´ê¸°" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Aborted." -msgstr "변형 중단." +msgstr "변형 중단ë¨." #: editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." @@ -6805,7 +7056,7 @@ msgstr "ì´ë™ 중: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." -msgstr "%së„로 íšŒì „." +msgstr "%së„로 íšŒì „í•˜ê¸°." #: editor/plugins/spatial_editor_plugin.cpp msgid "Keying is disabled (no key inserted)." @@ -6953,7 +7204,7 @@ msgstr "오디오 리스너" #: editor/plugins/spatial_editor_plugin.cpp msgid "Enable Doppler" -msgstr "ì§„ë™ ì™œê³¡ 켜기" +msgstr "íŒŒë™ ì™œê³¡ 켜기" #: editor/plugins/spatial_editor_plugin.cpp msgid "Cinematic Preview" @@ -6988,16 +7239,15 @@ msgid "Freelook Speed Modifier" msgstr "ìžìœ 시ì ì†ë„ ìˆ˜ì •ìž" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "ìžìœ 시ì ì†ë„ ìˆ˜ì •ìž" +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 "" -"ì°¸ê³ : FPS ê°’ì€ íŽ¸ì§‘ê¸°ì˜ í”„ë ˆìž„ìœ¼ë¡œ 표시ë˜ìš”.\n" +"ì°¸ê³ : FPS ê°’ì€ íŽ¸ì§‘ê¸°ì˜ í”„ë ˆìž„ìœ¼ë¡œ 표시ë¼ìš”.\n" "ì´ê²ƒì´ 게임 ë‚´ ì„±ëŠ¥ì„ ë³´ìž¥í• ìˆ˜ 없어요." #: editor/plugins/spatial_editor_plugin.cpp @@ -7024,7 +7274,7 @@ msgid "" msgstr "" "드래그: íšŒì „í•˜ê¸°\n" "Alt+드래그: ì´ë™í•˜ê¸°\n" -"Alt+ìš°í´ë¦: 겹친 ëª©ë¡ ì„ íƒê¸°í•˜ê¸°" +"Alt+ìš°í´ë¦: 겹친 ëª©ë¡ ì„ íƒí•˜ê¸°" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Local Space" @@ -7201,18 +7451,37 @@ msgid "Create Mesh2D" msgstr "Mesh2D 만들기" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "메시 미리 보기 만들기" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Polygon2D 만들기" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "CollisionPolygon2D 만들기" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "CollisionPolygon2D 만들기" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "LightOccluder2D 만들기" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "LightOccluder2D 만들기" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "스프ë¼ì´íŠ¸ê°€ 없어요!" @@ -7222,7 +7491,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ í”„ë ˆìž„ì„ ì‚¬ìš©í•˜ëŠ” 스프ë¼ì´íŠ¸ë¥¼ 메시로 ë #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't replace by mesh." -msgstr "ìž˜ëª»ëœ í˜•íƒœ, 메시로 ëŒ€ì²´í• ìˆ˜ 없어요." +msgstr "ìž˜ëª»ëœ í˜•íƒœ. 메시로 ëŒ€ì²´í• ìˆ˜ 없어요." #: editor/plugins/sprite_editor_plugin.cpp msgid "Convert to Mesh2D" @@ -7230,7 +7499,7 @@ msgstr "Mesh2D로 변환하기" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create polygon." -msgstr "ìž˜ëª»ëœ í˜•íƒœ, í´ë¦¬ê³¤ì„ 만들 수 없어요." +msgstr "ìž˜ëª»ëœ í˜•íƒœ. í´ë¦¬ê³¤ì„ 만들 수 없어요." #: editor/plugins/sprite_editor_plugin.cpp msgid "Convert to Polygon2D" @@ -7238,7 +7507,7 @@ msgstr "Polygon2D로 변환하기" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create collision polygon." -msgstr "ìž˜ëª»ëœ í˜•íƒœ, ì¶©ëŒ í´ë¦¬ê³¤ì„ 만들 수 없어요." +msgstr "ìž˜ëª»ëœ í˜•íƒœ. ì¶©ëŒ í´ë¦¬ê³¤ì„ 만들 수 없어요." #: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D Sibling" @@ -7261,9 +7530,8 @@ msgid "Simplification: " msgstr "단순화: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "성장 (픽셀): " +msgstr "수축 (픽셀): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7290,6 +7558,11 @@ msgid "Add Frame" msgstr "í”„ë ˆìž„ 추가하기" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "ì´ë¯¸ì§€ë¥¼ ë¡œë“œí• ìˆ˜ ì—†ìŒ:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "오류: í”„ë ˆìž„ 리소스를 불러올 수 없어요!" @@ -7532,7 +7805,7 @@ msgstr "ë§Žì€" #: editor/plugins/theme_editor_plugin.cpp msgid "Disabled LineEdit" -msgstr "ë¹„í™œì„±í™”ëœ LineEdit" +msgstr "꺼진 LineEdit" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" @@ -7548,7 +7821,7 @@ msgstr "íƒ 3" #: editor/plugins/theme_editor_plugin.cpp msgid "Editable Item" -msgstr "편집 가능한 í•목" +msgstr "íŽ¸ì§‘í• ìˆ˜ 있는 í•목" #: editor/plugins/theme_editor_plugin.cpp msgid "Subtree" @@ -7563,6 +7836,7 @@ msgid "Data Type:" msgstr "ë°ì´í„° ìœ í˜•:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "ì•„ì´ì½˜" @@ -7572,15 +7846,15 @@ msgstr "스타ì¼" #: editor/plugins/theme_editor_plugin.cpp msgid "Font" -msgstr "í°íЏ" +msgstr "글꼴" #: editor/plugins/theme_editor_plugin.cpp msgid "Color" msgstr "색깔" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "ë¹„ì„ í˜•" +msgid "Theme File" +msgstr "테마 파ì¼" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7629,7 +7903,7 @@ msgstr "ì˜¤í† íƒ€ì¼ ë„기" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Enable Priority" -msgstr "ìš°ì„ ìˆœìœ„ 편집" +msgstr "ìš°ì„ ìˆœìœ„ 켜기" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Filter tiles" @@ -7692,6 +7966,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 "ë‹¤ìŒ ì¢Œí‘œ" @@ -7708,6 +7994,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 "Z ì¸ë±ìФ" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "ì§€ì— ëª¨ë“œ" @@ -7780,7 +8094,7 @@ 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." @@ -7788,7 +8102,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 +8133,7 @@ msgid "" "Select current edited sub-tile.\n" "Click on another Tile to edit it." msgstr "" -"현재 편집한 하위 íƒ€ì¼ ì„ íƒí•˜ê¸°.\n" +"현재 편집한 하위 타ì¼ì„ ì„ íƒí•´ìš”.\n" "다른 타ì¼ì„ íŽ¸ì§‘í•˜ë ¤ë©´ í´ë¦í•˜ì„¸ìš”." #: editor/plugins/tile_set_editor_plugin.cpp @@ -7833,9 +8147,9 @@ 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 @@ -7844,8 +8158,8 @@ msgid "" "bindings.\n" "Click on another Tile to edit it." msgstr "" -"ì•„ì´ì½˜ìœ¼ë¡œ 쓸 하위 타ì¼ì„ ì„ íƒí•˜ì„¸ìš”, ìž˜ëª»ëœ ì˜¤í† íƒ€ì¼ ë°”ì¸ë”©ì—ë„ ì“°ì¼ ê±°ì—" -"ìš”.\n" +"ì•„ì´ì½˜ìœ¼ë¡œ 쓸 하위 타ì¼ì„ ì„ íƒí•˜ì„¸ìš”. ì´ê²ƒì€ ìž˜ëª»ëœ ì˜¤í† íƒ€ì¼ ë°”ì¸ë”©ì—ë„ ì‚¬ìš©" +"ë¼ìš”.\n" "다른 타ì¼ì„ íŽ¸ì§‘í•˜ë ¤ë©´ í´ë¦í•˜ì„¸ìš”." #: editor/plugins/tile_set_editor_plugin.cpp @@ -7933,6 +8247,16 @@ msgid "Edit Tile Z Index" msgstr "íƒ€ì¼ Z ì¸ë±ìФ 편집하기" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "ë³¼ë¡í•œ í´ë¦¬ê³¤ 만들기" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "오목한 í´ë¦¬ê³¤ 만들기" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "내비게ì´ì…˜ ì¶©ëŒ í´ë¦¬ê³¤ 만들기" @@ -8010,7 +8334,7 @@ msgstr "타입체ì¸ì§€" #: editor/plugins/version_control_editor_plugin.cpp msgid "Stage Selected" -msgstr "ì„ íƒ í•목 스테ì´ì§€ë¡œ 보내기" +msgstr "ì„ íƒ í•목 스테ì´ì§€ë¡œ 보내기" #: editor/plugins/version_control_editor_plugin.cpp msgid "Stage All" @@ -8046,9 +8370,8 @@ msgid "(GLES3 only)" msgstr "(GLES3ë§Œ 가능)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "ì¶œë ¥ 추가하기 +" +msgstr "ì¶œë ¥ 추가하기" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8063,9 +8386,8 @@ msgid "Boolean" msgstr "불리언" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "샘플" +msgstr "샘플러" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8197,8 +8519,8 @@ msgid "Dodge operator." msgstr "ë‹·ì§€ ì—°ì‚°ìž." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "하드 ë¼ì´íЏ ì—°ì‚°ìž" +msgid "HardLight operator." +msgstr "하드 ë¼ì´íЏ ì—°ì‚°ìž." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8222,7 +8544,7 @@ msgstr "ìƒ‰ìƒ ìƒìˆ˜." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color uniform." -msgstr "ìƒ‰ìƒ ìœ ë‹ˆí¼." +msgstr "ìƒ‰ìƒ Uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the %s comparison between two parameters." @@ -8299,7 +8621,7 @@ msgstr "불리언 ìƒìˆ˜." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean uniform." -msgstr "불리언 ìœ ë‹ˆí¼." +msgstr "불리언 Uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for all shader modes." @@ -8424,7 +8746,7 @@ msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ìŒê³¡ì½”ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•´ìš”." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in radians to degrees." -msgstr "ê°ë„ 단위를 ë¼ë””안ì—서 ë„로 변환합니다." +msgstr "ê°ë„ 단위를 ë¼ë””안ì—서 ë„로 변환해요." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-e Exponential." @@ -8576,7 +8898,7 @@ msgstr "ìŠ¤ì¹¼ë¼ ìƒìˆ˜." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar uniform." -msgstr "ìŠ¤ì¹¼ë¼ ìœ ë‹ˆí¼." +msgstr "ìŠ¤ì¹¼ë¼ Uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the cubic texture lookup." @@ -8588,15 +8910,15 @@ msgstr "í…스처 ë£©ì—…ì„ ìˆ˜í–‰í•´ìš”." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Cubic texture uniform lookup." -msgstr "ì„¸ì œê³± í…스처 ìœ ë‹ˆí¼ ë£©ì—…." +msgstr "ì„¸ì œê³± í…스처 Uniform 룩업." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "2D texture uniform lookup." -msgstr "2D í…스처 ìœ ë‹ˆí¼ ë£©ì—…." +msgstr "2D í…스처 Uniform 룩업." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "2D texture uniform lookup with triplanar." -msgstr "Triplanarê°€ ì ìš©ëœ 2D í…스처 ìœ ë‹ˆí¼ ë£©ì—… ." +msgstr "Triplanarê°€ ì ìš©ëœ 2D í…스처 Uniform 룩업 ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Transform function." @@ -8653,7 +8975,7 @@ msgstr "변형 ìƒìˆ˜." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Transform uniform." -msgstr "변형 ìœ ë‹ˆí¼." +msgstr "변형 Uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector function." @@ -8692,8 +9014,8 @@ msgid "" msgstr "" "ê°™ì€ ë°©í–¥ì„ ê°€ë¦¬í‚¤ëŠ” 벡터를 참조 벡터로 반환해요. 함수ì—는 세 ê°œì˜ ë²¡í„° 매개" "변수가 있어요 : ë°©í–¥ì„ ì§€ì •í•˜ëŠ” 벡터 N, ì¸ì‹œë˜íЏ 벡터 I, ê·¸ë¦¬ê³ ì°¸ì¡° 벡터 " -"Nref. 만약 I와 Nrefê°€ 0ì˜ ë²¡í„°ê³±ì´ 0보다 작다면 ë°˜í™˜ê°’ì€ Nì´ ë˜ìš”. ê·¸ë ‡ì§€ 않" -"으면 -Nì´ ë°˜í™˜ë˜ê³ ìš”." +"Nref. 만약 I와 Nrefê°€ 0ì˜ ë²¡í„°ê³±ì´ 0보다 작다면 ë°˜í™˜ê°’ì€ Nì´ ë¼ìš”. ê·¸ë ‡ì§€ 않" +"으면 -Nì´ ë°˜í™˜ë¼ìš”." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the length of a vector." @@ -8802,7 +9124,7 @@ msgstr "벡터 ìƒìˆ˜." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector uniform." -msgstr "벡터 ìœ ë‹ˆí¼." +msgstr "벡터 Uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8824,13 +9146,14 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" -"ê²°ê³¼ ì…°ì´ë” ìœ„ì— ë°°ì¹˜ëœ, 맞춤 Godot ì…°ì´ë” 언어 ëª…ë ¹ë¬¸. 다양한 함수 ì„ ì–¸ì„ ë†“" -"ì€ ë’¤ ë‚˜ì¤‘ì— ëª…ë ¹ë¬¸ì—서 í˜¸ì¶œí• ìˆ˜ 있어요. 변화, ìœ ë‹ˆí¼, ìƒìˆ˜ë„ ì •ì˜í• 수 있어" -"ìš”." +"ê²°ê³¼ ì…°ì´ë” ìœ„ì— ë°°ì¹˜ëœ, 맞춤 Godot ì…°ì´ë” 언어 표현ì‹. 다양한 함수 ì„ ì–¸ì„ ë†“" +"ì€ ë’¤ ë‚˜ì¤‘ì— í‘œí˜„ì‹ì—서 í˜¸ì¶œí• ìˆ˜ 있어요. Varying, Uniform, ìƒìˆ˜ë„ ì •ì˜í• 수 " +"있어요." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -8895,6 +9218,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'ì„(를) 패치 목ë¡ì—서 ì‚ì œí• ê¹Œìš”?" @@ -8908,7 +9239,7 @@ msgid "" "Export templates seem to be missing or invalid." msgstr "" "'%s' 플랫í¼ì— 프로ì 트를 내보낼 수 없어요.\n" -"내보내기 í…œí”Œë¦¿ì´ ëˆ„ë½ë˜ê±°ë‚˜ ìž˜ëª»ëœ ë“¯ í•´ìš”." +"내보내기 í…œí”Œë¦¿ì´ ëˆ„ë½ë˜ê±°ë‚˜ ìž˜ëª»ëœ ëª¨ì–‘ì´ì—ìš”." #: editor/project_export.cpp msgid "" @@ -8917,7 +9248,7 @@ msgid "" "export settings." msgstr "" "'%s' 플랫í¼ì— 프로ì 트를 내보낼 수 없어요.\n" -"내보내기 프리셋ì´ë‚˜ 내보내기 ì„¤ì • ìƒì˜ ë¬¸ì œ ë•Œë¬¸ì¸ ê²ƒ 같아요." +"내보내기 프리셋ì´ë‚˜ 내보내기 ì„¤ì •ì˜ ë¬¸ì œë¡œ 보여요." #: editor/project_export.cpp msgid "Release" @@ -8944,6 +9275,14 @@ 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 "" +"ì²´í¬í•˜ë©´ í”„ë¦¬ì…‹ì€ ì› í´ë¦ ë°°í¬ë¡œ ì‚¬ìš©í• ìˆ˜ 있게 ë¼ìš”.\n" +"í”Œëž«í¼ ë‹¹ í•˜ë‚˜ì˜ í”„ë¦¬ì…‹ë§Œ 실행 ê°€ëŠ¥í•˜ë‹¤ê³ í‘œì‹œë ê±°ì—ìš”." + +#: editor/project_export.cpp msgid "Export Path" msgstr "경로 내보내기" @@ -8969,21 +9308,22 @@ msgstr "내보내기 모드:" #: editor/project_export.cpp msgid "Resources to export:" -msgstr "내보낼 리소스:" +msgstr "내보내는 리소스:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" -msgstr "리소스가 아닌 íŒŒì¼ ë‚´ë³´ë‚´ê¸° í•„í„° (쉼표로 구분, 예: *.json, *.txt)" +msgstr "" +"리소스가 아닌 파ì¼/í´ë” 내보내기 í•„í„° (쉼표로 구분, 예: *.json, *.txt, docs/" +"*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" -msgstr "프로ì 트ì—서 ì œì™¸ì‹œí‚¬ íŒŒì¼ í•„í„° (쉼표로 구분, 예: *.json, *.txt)" +msgstr "" +"프로ì 트ì—서 ì œì™¸í• íŒŒì¼/í´ë” í•„í„° (쉼표로 구분, 예: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -8994,6 +9334,10 @@ msgid "Make Patch" msgstr "패치 만들기" #: editor/project_export.cpp +msgid "Pack File" +msgstr "팩 파ì¼" + +#: editor/project_export.cpp msgid "Features" msgstr "기능" @@ -9023,11 +9367,11 @@ msgstr "컴파ì¼ë¨" #: editor/project_export.cpp msgid "Encrypted (Provide Key Below)" -msgstr "암호화 (ì•„ëž˜ì— í‚¤ê°’ í•„ìš”)" +msgstr "암호화 (ì•„ëž˜ì— í‚¤ê°€ 필요해요)" #: editor/project_export.cpp msgid "Invalid Encryption Key (must be 64 characters long)" -msgstr "ìž˜ëª»ëœ ì•”í˜¸í™” 키 (64ìž ê¸¸ì´ì—¬ì•¼ 함)" +msgstr "ìž˜ëª»ëœ ì•”í˜¸í™” 키 (길ì´ê°€ 64ìžì´ì–´ì•¼ í•´ìš”)" #: editor/project_export.cpp msgid "Script Encryption Key (256-bits as hex):" @@ -9045,6 +9389,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 "ì´ í”Œëž«í¼ì— 대한 내보내기 í…œí”Œë¦¿ì´ ì—†ìŒ:" @@ -9064,15 +9416,15 @@ msgstr "경로가 없어요." #: editor/project_manager.cpp msgid "Invalid '.zip' project file, does not contain a 'project.godot' file." msgstr "" -"ìž˜ëª»ëœ '.zip' 프로ì 트 파ì¼ì´ì—ìš”, 'project.godot' 파ì¼ì„ ê°–ê³ ìžˆì§€ 않아요." +"ìž˜ëª»ëœ '.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." -msgstr "'project.godot' íŒŒì¼ ë˜ëŠ” '.zip' 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”." +msgstr "'project.godot' íŒŒì¼ ë˜ëŠ” '.zip' 파ì¼ì„ ì„ íƒí•´ì£¼ì„¸ìš”." #: editor/project_manager.cpp msgid "Directory already contains a Godot project." @@ -9100,7 +9452,7 @@ msgstr "ì´ë¯¸ ì´ ê²½ë¡œì— ì´ ì´ë¦„ê³¼ ê°™ì€ í´ë”ê°€ 있어요." #: editor/project_manager.cpp msgid "It would be a good idea to name your project." -msgstr "프로ì 트 ì´ë¦„ì„ ì •í•˜ëŠ” 게 ì¢‹ì„ ê±°ì—ìš”." +msgstr "프로ì 트 ì´ë¦„ì„ ì •í•˜ëŠ” 게 ì¢‹ì„ ê±°ì˜ˆìš”." #: editor/project_manager.cpp msgid "Invalid project path (changed anything?)." @@ -9111,8 +9463,8 @@ msgid "" "Couldn't load project.godot in project path (error %d). It may be missing or " "corrupted." msgstr "" -"프로ì 트 경로ì—서 project.godotì„ ë¶ˆëŸ¬ì˜¬ 수 없어요 (오류 %d). 누ë½ë˜ê±°ë‚˜ ì†ìƒ" -"ë˜ì—ˆë‚˜ ë´ìš”." +"프로ì 트 경로ì—서 project.godotì„ ë¶ˆëŸ¬ì˜¬ 수 없어요 (error %d). 누ë½ë˜ê±°ë‚˜ ì†" +"ìƒëœ 모양ì´ì—ìš”." #: editor/project_manager.cpp msgid "Couldn't edit project.godot in project path." @@ -9152,7 +9504,7 @@ msgstr "프로ì 트 설치:" #: editor/project_manager.cpp msgid "Install & Edit" -msgstr "설치 & 편집하기" +msgstr "설치하기 & 편집하기" #: editor/project_manager.cpp msgid "Project Name:" @@ -9224,7 +9576,7 @@ msgstr "'%s'ì—서 프로ì 트를 ì—´ 수 없어요." #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" -msgstr "ë‘ ê°œ ì´ìƒì˜ 프로ì 트를 여는 건가요?" +msgstr "ë‘ ê°œ ì´ìƒì˜ 프로ì 트를 ì—´ 건가요?" #: editor/project_manager.cpp msgid "" @@ -9238,12 +9590,12 @@ msgid "" "Warning: You won't be able to open the project with previous versions of the " "engine anymore." msgstr "" -"ë‹¤ìŒ í”„ë¡œì 트 ì„¤ì • 파ì¼ì€ 현재 ë²„ì „ì˜ Godotì—서 ë§Œë“ ê²ƒì´ ì•„ë‹ˆë„¤ìš”.\n" +"ë‹¤ìŒ í”„ë¡œì 트 ì„¤ì • 파ì¼ì€ 현재 ë²„ì „ì˜ Godotì—서 ë§Œë“ ê²ƒì´ ì•„ë‹ˆì—ìš”.\n" "↵\n" "%s↵\n" "↵\n" -"íŒŒì¼ ì—´ê¸°ë¥¼ 계ì†í•œë‹¤ë©´, 현재 Godotì˜ êµ¬ì„± íŒŒì¼ í˜•ì‹ìœ¼ë¡œ 변환ë ê±°ì—ìš”.\n" -"ê²½ê³ : ë” ì´ìƒ ì´ í”„ë¡œì 트를 ì´ì „ ë²„ì „ì˜ ì—”ì§„ì—서 ì—´ 수 ì—†ì„ ê±°ì—ìš”." +"íŒŒì¼ ì—´ê¸°ë¥¼ 계ì†í•œë‹¤ë©´, 현재 Godotì˜ êµ¬ì„± íŒŒì¼ í˜•ì‹ìœ¼ë¡œ 변환ë 거예요.\n" +"ê²½ê³ : ë” ì´ìƒ ì´ í”„ë¡œì 트를 ì´ì „ ë²„ì „ì˜ ì—”ì§„ì—서 ì—´ 수 ì—†ì„ ê±°ì˜ˆìš”." #: editor/project_manager.cpp msgid "" @@ -9262,14 +9614,14 @@ msgstr "" "%s\n" "\n" "ë³€í™˜í• ê¹Œìš”?\n" -"ê²½ê³ : ë” ì´ìƒ ì´ í”„ë¡œì 트를 ì´ì „ ë²„ì „ì˜ ì—”ì§„ì—서 ì—´ 수 ì—†ì„ ê±°ì—ìš”." +"ê²½ê³ : ë” ì´ìƒ ì´ í”„ë¡œì 트를 ì´ì „ ë²„ì „ì˜ ì—”ì§„ì—서 ì—´ 수 ì—†ì„ ê±°ì˜ˆìš”." #: editor/project_manager.cpp msgid "" "The project settings were created by a newer engine version, whose settings " "are not compatible with this version." msgstr "" -"프로ì 트 ì„¤ì •ì´ ìƒˆ ë²„ì „ì— ë§žê²Œ 만들어졌어요, ì´ ë²„ì „ì—서는 호환하지 않아요." +"프로ì 트 ì„¤ì •ì´ ìƒˆ ë²„ì „ì— ë§žê²Œ 만들어졌어요. ì´ ë²„ì „ì—서는 호환하지 않아요." #: editor/project_manager.cpp msgid "" @@ -9291,7 +9643,7 @@ msgstr "" #: editor/project_manager.cpp msgid "Are you sure to run %d projects at once?" -msgstr "한 ë²ˆì— %dê°œì˜ í”„ë¡œì 트를 ì‹¤í–‰í• ê¹Œìš”?" +msgstr "한 ë²ˆì— %dê°œì˜ í”„ë¡œì 트를 ì‹¤í–‰í• ê±´ê°€ìš”?" #: editor/project_manager.cpp msgid "" @@ -9314,7 +9666,7 @@ msgid "" "Remove all missing projects from the list?\n" "The project folders' contents won't be modified." msgstr "" -"%dê°œì˜ í”„ë¡œì 트를 ì‚ì œí• ê¹Œìš”?\n" +"ëª¨ë“ ëˆ„ë½ëœ 프로ì 트를 ì‚ì œí• ê¹Œìš”?\n" "프로ì 트 í´ë”ì˜ ë‚´ìš©ì€ ìˆ˜ì •ë˜ì§€ 않아요." #: editor/project_manager.cpp @@ -9342,6 +9694,10 @@ msgid "Projects" msgstr "프로ì 트" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "마지막으로 ìˆ˜ì •ë¨" + +#: editor/project_manager.cpp msgid "Scan" msgstr "스캔" @@ -9363,18 +9719,18 @@ msgstr "템플릿" #: editor/project_manager.cpp msgid "Restart Now" -msgstr "지금 재시작" +msgstr "지금 다시 시작" #: editor/project_manager.cpp msgid "Can't run project" -msgstr "프로ì 트를 ì‹¤í–‰í• ìˆ˜ ì—†ìŒ" +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 "" -"현재 프로ì 트가 í•˜ë‚˜ë„ ì—†ë„¤ìš”.\n" +"현재 프로ì 트가 í•˜ë‚˜ë„ ì—†ì–´ìš”.\n" "ì• ì…‹ ë¼ì´ë¸ŒëŸ¬ë¦¬ì—서 ê³µì‹ ì˜ˆì œ 프로ì 트를 찾아볼까요?" #: editor/project_settings_editor.cpp @@ -9425,18 +9781,6 @@ msgid "Device" msgstr "기기" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "키를 눌러주세요..." @@ -9506,7 +9850,7 @@ msgstr "ì´ë²¤íЏ 추가하기" #: editor/project_settings_editor.cpp msgid "Button" -msgstr "Button" +msgstr "버튼" #: editor/project_settings_editor.cpp msgid "Left Button." @@ -9542,7 +9886,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" @@ -9601,7 +9945,7 @@ msgstr "리소스 리맵핑 ì‚ì œí•˜ê¸°" #: editor/project_settings_editor.cpp msgid "Remove Resource Remap Option" -msgstr "리소스 리맵핑 옵션 ì‚ì œí•˜ê¸°" +msgstr "리소스 리맵핑 ì„¤ì • ì‚ì œí•˜ê¸°" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter" @@ -9745,7 +10089,7 @@ msgstr "íŒŒì¼ ë¶ˆëŸ¬ì˜¤ê¸° 오류: 리소스가 아니ì—ìš”!" #: editor/property_editor.cpp msgid "Pick a Node" -msgstr "노드 ì„ íƒí•˜ê¸°" +msgstr "노드를 ì„ íƒí•˜ì„¸ìš”" #: editor/property_editor.cpp msgid "Bit %d, val %d." @@ -9813,11 +10157,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" @@ -9841,7 +10185,7 @@ msgid "" "Missing digits are padded with leading zeros." msgstr "" "ì¹´ìš´í„°ì˜ ìµœì†Œ ìžë¦¿ìˆ˜.\n" -"빈 ìžë¦¬ëŠ” 0으로 채워집니다." +"빈 ìžë¦¬ëŠ” 0으로 채워요." #: editor/rename_dialog.cpp msgid "Regular Expressions" @@ -9917,7 +10261,7 @@ msgstr "씬 실행 ì„¤ì •" #: editor/scene_tree_dock.cpp msgid "No parent to instance the scenes at." -msgstr "ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤í• ìˆ˜ 있는 부모가 없습니다." +msgstr "ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤í• ìˆ˜ 있는 부모가 없어요." #: editor/scene_tree_dock.cpp msgid "Error loading scene from %s" @@ -9931,7 +10275,7 @@ msgstr "한 ë…¸ë“œì— í˜„ìž¬ ì”¬ì´ ìžˆê¸° 때문ì—, '%s' ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤í• #: editor/scene_tree_dock.cpp msgid "Instance Scene(s)" -msgstr "씬 ì¸ìŠ¤í„´ìŠ¤" +msgstr "씬 ì¸ìŠ¤í„´ìŠ¤í•˜ê¸°" #: editor/scene_tree_dock.cpp msgid "Replace with Branch Scene" @@ -9939,7 +10283,7 @@ msgstr "분기 씬으로 êµì²´í•˜ê¸°" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" -msgstr "ìžì‹ 씬 추가하기" +msgstr "ìžì‹ 씬 ì¸ìŠ¤í„´ìŠ¤í•˜ê¸°" #: editor/scene_tree_dock.cpp msgid "Clear Script" @@ -9964,7 +10308,7 @@ 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." @@ -10004,7 +10348,7 @@ msgstr "ì´ ìž‘ì—…ì€ ì¸ìŠ¤í„´ìŠ¤ëœ ì”¬ì—서 í• ìˆ˜ 없어요." #: editor/scene_tree_dock.cpp msgid "Save New Scene As..." -msgstr "새 ì”¬ì„ ë‹¤ë¥¸ ì´ë¦„으로 ì €ìž¥..." +msgstr "새 ì”¬ì„ ë‹¤ë¥¸ ì´ë¦„으로 ì €ìž¥í•˜ê¸°..." #: editor/scene_tree_dock.cpp msgid "" @@ -10014,12 +10358,12 @@ msgstr "" "\"editable_instance\"를 ë„게 ë˜ë©´ ë…¸ë“œì˜ ëª¨ë“ ì†ì„±ì´ 기본 값으로 ë˜ëŒì•„와요." #: 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 "" -"\"editable_instance\"를 ë„게 ë˜ë©´ ë…¸ë“œì˜ ëª¨ë“ ì†ì„±ì´ 기본 값으로 ë˜ëŒì•„와요." +"\"ìžë¦¬ 표시ìžë¡œ 불러오기\"를 켜면 \"íŽ¸ì§‘í• ìˆ˜ 있는 ìžì‹\" ì„¤ì •ì´ êº¼ì§€ê³ , 그러" +"ë©´ ê·¸ ë…¸ë“œì˜ ëª¨ë“ ì†ì„±ì´ 기본값으로 ëŒì•„와요." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10082,11 +10426,11 @@ msgstr "씬 ì €ìž¥ 중 오류." #: editor/scene_tree_dock.cpp msgid "Error duplicating scene to save it." -msgstr "ì €ìž¥í•˜ê¸° 위해 ì”¬ì„ ë³µì œí•˜ëŠ” ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." +msgstr "ì €ìž¥í•˜ê¸° 위해 씬 ë³µì œ 중 오류." #: editor/scene_tree_dock.cpp msgid "Sub-Resources" -msgstr "하위-리소스" +msgstr "하위 리소스" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -10094,7 +10438,7 @@ msgstr "ìƒì† 지우기" #: editor/scene_tree_dock.cpp msgid "Editable Children" -msgstr "ìžì‹ë…¸ë“œ 편집 가능" +msgstr "íŽ¸ì§‘í• ìˆ˜ 있는 ìžì‹" #: editor/scene_tree_dock.cpp msgid "Load As Placeholder" @@ -10130,7 +10474,7 @@ msgstr "다른 씬ì—서 병합하기" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp msgid "Save Branch as Scene" -msgstr "분기를 다른 씬으로 ì €ìž¥" +msgstr "분기를 씬으로 ì €ìž¥í•˜ê¸°" #: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp msgid "Copy Node Path" @@ -10309,7 +10653,7 @@ msgstr "'%s' 스í¬ë¦½íЏ 불러오는 중 오류" #: editor/script_create_dialog.cpp msgid "Overrides" -msgstr "ìž¬ì •ì˜í•˜ê¸°" +msgstr "다시 ì •ì˜í•˜ê¸°" #: editor/script_create_dialog.cpp msgid "N/A" @@ -10325,7 +10669,7 @@ msgstr "스í¬ë¦½íЏ 열기" #: editor/script_create_dialog.cpp msgid "File exists, it will be reused." -msgstr "파ì¼ì´ 있어요, 다시 ì‚¬ìš©í• ê²Œìš”." +msgstr "파ì¼ì´ 있어요. 다시 ì‚¬ìš©í• ê±°ì˜ˆìš”." #: editor/script_create_dialog.cpp msgid "Invalid class name." @@ -10356,19 +10700,16 @@ msgid "Will load an existing script file." msgstr "기존 스í¬ë¦½íЏ 파ì¼ì„ 불러와요." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "í´ëž˜ìФ ì´ë¦„" +msgstr "í´ëž˜ìФ ì´ë¦„:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "템플릿" +msgstr "템플릿:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "내장 스í¬ë¦½íЏ" +msgstr "내장 스í¬ë¦½íЏ:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10388,7 +10729,7 @@ msgstr "ê²½ê³ :" #: editor/script_editor_debugger.cpp msgid "Error:" -msgstr "ì—러:" +msgstr "오류:" #: editor/script_editor_debugger.cpp msgid "C++ Error" @@ -10432,11 +10773,11 @@ msgstr "중단ì 넘기기" #: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" -msgstr "ì´ì „ ì¸ìŠ¤í„´ìŠ¤ 검사" +msgstr "ì´ì „ ì¸ìŠ¤í„´ìŠ¤ 검사하기" #: editor/script_editor_debugger.cpp msgid "Inspect Next Instance" -msgstr "ë‹¤ìŒ ì¸ìŠ¤í„´ìŠ¤ 검사" +msgstr "ë‹¤ìŒ ì¸ìŠ¤í„´ìŠ¤ 검사하기" #: editor/script_editor_debugger.cpp msgid "Stack Frames" @@ -10464,7 +10805,7 @@ msgstr "모니터" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." -msgstr "목ë¡ì—서 한 ê°œ ì´ìƒì˜ í•ëª©ì„ ì§‘ì–´ 그래프로 표시해요." +msgstr "목ë¡ì—서 한 ê°œ ì´ìƒì˜ í•ëª©ì„ ì§‘ì–´ 그래프로 표시하세요." #: editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" @@ -10608,19 +10949,19 @@ msgstr "ì›ê¸°ë‘¥ ë†’ì´ ë°”ê¾¸ê¸°" #: modules/csg/csg_gizmos.cpp msgid "Change Torus Inner Radius" -msgstr "í† ëŸ¬ìŠ¤ ë‚´ë¶€ 반지름 바꾸기" +msgstr "ë„ë„› ë‚´ë¶€ 반지름 바꾸기" #: modules/csg/csg_gizmos.cpp msgid "Change Torus Outer Radius" -msgstr "í† ëŸ¬ìŠ¤ 외부 반지름 바꾸기" +msgstr "ë„ë„› 외부 반지름 바꾸기" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "ì´ ì—”íŠ¸ë¦¬ì— ëŒ€í•œ 다ì´ë‚˜ë¯¹ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì„ íƒí•˜ê¸°" +msgstr "ì´ í•ëª©ì˜ ë™ì ë¼ì´ë¸ŒëŸ¬ë¦¬ ì„ íƒí•˜ê¸°" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "ì´ ì—”íŠ¸ë¦¬ì— ëŒ€í•œ ë¼ì´ë¸ŒëŸ¬ë¦¬ì˜ 종ì†ì„ ì„ íƒí•˜ê¸°" +msgstr "ì´ í•ëª©ì˜ ë™ì ë¼ì´ë¸ŒëŸ¬ë¦¬ì˜ ì¢…ì† ê´€ê³„ë¥¼ ì„ íƒí•˜ê¸°" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Remove current entry" @@ -10628,7 +10969,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:" @@ -10640,23 +10981,23 @@ msgstr "플랫í¼" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Dynamic Library" -msgstr "다ì´ë‚˜ë¯¹ ë¼ì´ë¸ŒëŸ¬ë¦¬" +msgstr "ë™ì ë¼ì´ë¸ŒëŸ¬ë¦¬" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "구조 엔트리를 추가" +msgstr "구조 í•ëª©ì„ ì¶”ê°€í•˜ê¸°" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "GDNativeLibrary" -msgstr "GD네ì´í‹°ë¸Œ ë¼ì´ë¸ŒëŸ¬ë¦¬" +msgstr "GDNative ë¼ì´ë¸ŒëŸ¬ë¦¬" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Enabled GDNative Singleton" -msgstr "í™œì„±í™”ëœ GDNative 싱글톤" +msgstr "켜진 GDNative 싱글톤" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Disabled GDNative Singleton" -msgstr "ë¹„í™œì„±í™”ëœ GDNative 싱글톤" +msgstr "꺼진 GDNative 싱글톤" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -10664,19 +11005,15 @@ msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Libraries: " -msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤: " +msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬: " #: modules/gdnative/register_types.cpp msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "길ì´ê°€ 1ì¸ ë¬¸ìžì—´ (문ìž)ì´ í•„ìš”í•´ìš”." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" -msgstr "ìŠ¤í… ì¸ìˆ˜ê°€ 0입니다!" +msgstr "ìŠ¤í… ì¸ìˆ˜ê°€ 0ì´ì—ìš”!" #: modules/gdscript/gdscript_functions.cpp msgid "Not a script with an instance" @@ -10708,7 +11045,7 @@ msgstr "ìž˜ëª»ëœ ì¸ìŠ¤í„´ìŠ¤ Dictionary (하위 í´ëž˜ìŠ¤ê°€ 올바르지 않ì #: modules/gdscript/gdscript_functions.cpp msgid "Object can't provide a length." -msgstr "오브ì 트는 길ì´ë¥¼ ì œê³µí• ìˆ˜ 없습니다." +msgstr "ê°ì²´ëŠ” 길ì´ë¥¼ ì œê³µí• ìˆ˜ 없어요." #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Next Plane" @@ -10736,11 +11073,11 @@ msgstr "층:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Delete Selection" -msgstr "그리드맵 ì„ íƒ ì‚ì œí•˜ê¸°" +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" @@ -10760,7 +11097,7 @@ msgstr "스냅 ë·°" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Disabled" -msgstr "í´ë¦½ 사용 안함" +msgstr "í´ë¦½ 꺼ì§" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Above" @@ -10811,12 +11148,17 @@ msgid "Cursor Clear Rotation" msgstr "커서 íšŒì „ 지우기" #: modules/gridmap/grid_map_editor_plugin.cpp -msgid "Clear Selection" +#, fuzzy +msgid "Paste Selects" msgstr "ì„ íƒ ì§€ìš°ê¸°" #: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clear Selection" +msgstr "ì„ íƒ í•목 지우기" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Fill Selection" -msgstr "채우기 ì„ íƒí•˜ê¸°" +msgstr "ì„ íƒ í•목 채우기" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Settings" @@ -10836,7 +11178,7 @@ msgstr "메시를 ì‚¬ìš©í•˜ë ¤ë©´ ì´ GridMapì— MeshLibrary 리소스를 주세 #: modules/mono/csharp_script.cpp msgid "Class name can't be a reserved keyword" -msgstr "í´ëž˜ìФ ì´ë¦„ì€ í‚¤ì›Œë“œê°€ ë 수 없습니다" +msgstr "í´ëž˜ìФ ì´ë¦„ì€ í‚¤ì›Œë“œê°€ ë 수 없어요" #: modules/mono/mono_gd/gd_mono_utils.cpp msgid "End of inner exception stack trace" @@ -10860,11 +11202,11 @@ msgstr "그리드 í¬ê¸° 계산 중..." #: modules/recast/navigation_mesh_generator.cpp msgid "Creating heightfield..." -msgstr "Heightfield ìƒì„± 중..." +msgstr "Heightfield 만드는 중..." #: modules/recast/navigation_mesh_generator.cpp msgid "Marking walkable triangles..." -msgstr "걷기 가능한 트ë¼ì´ì•µê¸€ 표시 중..." +msgstr "걷기 가능한 삼ê°í˜• 표시 중..." #: modules/recast/navigation_mesh_generator.cpp msgid "Constructing compact heightfield..." @@ -10876,15 +11218,15 @@ msgstr "걷기 가능한 ì˜ì— 계산 중..." #: modules/recast/navigation_mesh_generator.cpp msgid "Partitioning..." -msgstr "ë¶„í• ì¤‘..." +msgstr "파티션 중..." #: modules/recast/navigation_mesh_generator.cpp msgid "Creating contours..." -msgstr "ìœ¤ê³½ì„ ìƒì„± 중..." +msgstr "ìœ¤ê³½ì„ ë§Œë“œëŠ” 중..." #: modules/recast/navigation_mesh_generator.cpp msgid "Creating polymesh..." -msgstr "í´ë¦¬ 메시 ìƒì„± 중..." +msgstr "Polymesh 만드는 중..." #: modules/recast/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." @@ -10907,24 +11249,23 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" -"작업 메모리 ì—†ì´ ì£¼ì–´ì§„ 노드입니다, 문서ì—서 노드ì—게 ì ì ˆížˆ 주는 ë°©ë²•ì„ ì½ì–´" -"보세요!" +"작업 메모리 ì—†ì´ Yieldëœ ë…¸ë“œì´ì—ìš” 문서ì—서 노드ì—게 ì ì ˆížˆ Yield하는 방법" +"ì„ ì½ì–´ì£¼ì„¸ìš”!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" -"작업 메모리가 주어진 노드지만, 첫번째 작업 ë©”ëª¨ë¦¬ì˜ í•¨ìˆ˜ ìƒíƒœë¥¼ 반환하지 않았" -"습니다." +"노드가 Yieldë˜ì—ˆì§€ë§Œ, 첫번째 작업 ë©”ëª¨ë¦¬ì˜ í•¨ìˆ˜ ìƒíƒœë¥¼ 반환하지 않았어요." #: modules/visual_script/visual_script.cpp msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" -"ë°˜í™˜ëœ ê°’ì€ ë°˜ë“œì‹œ 노드 작업 ë©”ëª¨ë¦¬ì˜ ì²«ë²ˆì§¸ 요소로 í• ë‹¹í•´ì•¼ 합니다! 노드를 " -"ê³ ì³ì£¼ì„¸ìš”." +"반환 ê°’ì€ ë°˜ë“œì‹œ 노드 작업 ë©”ëª¨ë¦¬ì˜ ì²« 번째 요소로 ì§€ì •í•´ì•¼ í•´ìš”! 노드를 ê³ ì³" +"주세요." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " @@ -10932,8 +11273,7 @@ msgstr "ìž˜ëª»ëœ ì‹œí€€ìŠ¤ ì¶œë ¥ì„ ë°˜í™˜í•œ 노드: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" -msgstr "" -"시퀀스 비트를 발견했지만 ìŠ¤íƒ ì•ˆì˜ ë…¸ë“œì—는 없습니다, 버그 리í¬íŠ¸ë¥¼ 해주세요!" +msgstr "시퀀스 비트를 발견했지만 ìŠ¤íƒ ì•ˆì˜ ë…¸ë“œì—는 없어요. 버그를 ì‹ ê³ í•˜ì„¸ìš”!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " @@ -10960,12 +11300,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 "존재하는 내장 함수 다시 ì •ì˜í•˜ê¸°." +msgstr "존재하는 내장 함수를 다시 ì •ì˜í•´ìš”." #: modules/visual_script/visual_script_editor.cpp msgid "Create a new function." -msgstr "새 함수 만들기." +msgstr "새 함수를 만들어요." #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" @@ -10973,7 +11321,7 @@ msgstr "변수:" #: modules/visual_script/visual_script_editor.cpp msgid "Create a new variable." -msgstr "새 변수 만들기." +msgstr "새 변수를 만들어요." #: modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -10981,11 +11329,11 @@ 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:" -msgstr "ì´ë¦„ì´ ì˜¬ë°”ë¥¸ ì‹ë³„ìžê°€ 아닙니다:" +msgstr "ì´ë¦„ì´ ì˜¬ë°”ë¥¸ ì‹ë³„ìžê°€ 아님:" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" @@ -11008,7 +11356,6 @@ msgid "Add Function" msgstr "함수 추가하기" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "ìž…ë ¥ í¬íЏ ì‚ì œí•˜ê¸°" @@ -11021,22 +11368,10 @@ msgid "Add Signal" 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 "ìž…ë ¥ í¬íЏ ì‚ì œí•˜ê¸°" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" msgstr "ì¶œë ¥ í¬íЏ ì‚ì œí•˜ê¸°" @@ -11055,8 +11390,8 @@ msgstr "비주얼 스í¬ë¦½íЏ 노드 ë³µì œí•˜ê¸°" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." msgstr "" -"%sì„(를) ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ Getter를 드ë¡í•´ìš”. Shiftì„(를) ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ ì¼ë°˜ì ì¸ " -"시그니처를 드ë¡í•´ìš”." +"%sì„(를) ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ Getter를 드ë¡í•´ìš”. Shift를 ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ ì¼ë°˜ì ì¸ ì‹œê·¸" +"니처를 드ë¡í•´ìš”." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." @@ -11085,10 +11420,6 @@ msgid "Add Preload Node" msgstr "Preload 노드 추가하기" #: 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 "트리ì—서 노드 추가하기" @@ -11097,6 +11428,8 @@ msgid "" "Can't drop properties because script '%s' is not used in this scene.\n" "Drop holding 'Shift' to just copy the signature." msgstr "" +"스í¬ë¦½íЏ '%s'ì´(ê°€) ì´ ì”¬ì—서 사용ë˜ì§€ ì•Šê³ ìžˆì–´ì„œ ì†ì„±ì„ 드ë¡í• 수 없어요.\n" +"'Shift' 키를 누른 채로 드ë¡í•˜ë©´ 시그니처를 복사해요." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11123,9 +11456,8 @@ msgid "Connect Nodes" msgstr "노드 연결하기" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "그래프 노드 ì—°ê²° í•´ì œ" +msgstr "그래프 노드 ì—°ê²° 풀기" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11160,26 +11492,24 @@ msgid "Paste VisualScript Nodes" msgstr "비주얼 스í¬ë¦½íЏ 노드 붙여넣기" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "함수 노드를 ë³µì‚¬í• ìˆ˜ 없어요." +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 atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +msgstr "Sequence í¬íЏì—서 ì ì–´ë„ í•˜ë‚˜ì˜ ë…¸ë“œë¥¼ ì„ íƒí•˜ì„¸ìš”." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "ì„ íƒ í•목ì—서 Sequence ìž…ë ¥ì´ í•˜ë‚˜ë§Œ 있ë„ë¡ í•˜ì„¸ìš”." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "함수명 바꾸기" +msgstr "함수 만들기" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11210,13 +11540,24 @@ 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 "함수:" +msgstr "function_name" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." -msgstr "그래프를 편집하기 위한 함수를 ì„ íƒí•˜ê±°ë‚˜ 만들어요." +msgstr "그래프를 편집하기 위한 함수를 ì„ íƒí•˜ê±°ë‚˜ 만드세요." #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" @@ -11235,14 +11576,12 @@ msgid "Cut Nodes" msgstr "노드 잘ë¼ë‚´ê¸°" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "함수명 바꾸기" +msgstr "함수 만들기" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "ìƒˆë¡œê³ ì¹¨" +msgstr "그래프 ìƒˆë¡œê³ ì¹¨" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11254,11 +11593,11 @@ msgstr "ë°˜ë³µí• ìˆ˜ 없는 ìž…ë ¥ ìœ í˜•: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "반복ìžê°€ 잘못ë˜ì—ˆì–´ìš”" +msgstr "Iteratorê°€ 잘못ëì–´ìš”" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "반복ìžê°€ 잘못ë¨: " +msgstr "Iteratorê°€ 잘못ë¨: " #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name." @@ -11266,7 +11605,7 @@ msgstr "ìž˜ëª»ëœ ì¸ë±ìФ ì†ì„± ì´ë¦„." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "기본 ê°ì²´ëŠ” 노드가 아닙니다!" +msgstr "기본 ê°ì²´ëŠ” 노드가 아니ì—ìš”!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" @@ -11274,7 +11613,7 @@ msgstr "노드를 ì§€ì •í•˜ëŠ” 경로가 아니ì—ìš”!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "노드 %s ì•ˆì— ì¸ë±ìФ ì†ì„± ì´ë¦„ '%s'ì´(ê°€) 잘못ë¬ì–´ìš”." +msgstr "노드 %s ì•ˆì— ì¸ë±ìФ ì†ì„± ì´ë¦„ '%s'ì´(ê°€) 잘못ëì–´ìš”." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " @@ -11294,14 +11633,14 @@ msgstr "VariableSetì„ ìŠ¤í¬ë¦½íЏì—서 ì°¾ì„ ìˆ˜ ì—†ìŒ: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." -msgstr "맞춤 ë…¸ë“œì— _step() 메서드가 없어요, 그래프를 ì²˜ë¦¬í• ìˆ˜ 없어요." +msgstr "맞춤 ë…¸ë“œì— _step() 메서드가 없어요. 그래프를 ì²˜ë¦¬í• ìˆ˜ 없어요." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" -"_step()ì—서 ìž˜ëª»ëœ ë°˜í™˜ ê°’ì´ì—ìš”, ì •ìˆ˜ (seq out), ë˜ëŠ” 문ìžì—´ (error)ì´ì–´ì•¼ " +"_step()ì—서 ìž˜ëª»ëœ ë°˜í™˜ ê°’ì´ì—ìš”. ì •ìˆ˜ (seq out), ë˜ëŠ” 문ìžì—´ (error)ì´ì–´ì•¼ " "í•´ìš”." #: modules/visual_script/visual_script_property_selector.cpp @@ -11342,7 +11681,7 @@ msgstr "패키지는 ì ì–´ë„ í•˜ë‚˜ì˜ '.' 분리 기호가 있어야 í•´ìš”." #: platform/android/export/export.cpp msgid "Select device from the list" -msgstr "목ë¡ì—서 기기를 ì„ íƒí•˜ì„¸ìš”" +msgstr "목ë¡ì—서 기기 ì„ íƒí•˜ê¸°" #: platform/android/export/export.cpp msgid "ADB executable not configured in the Editor Settings." @@ -11374,7 +11713,7 @@ msgstr "" #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." -msgstr "APK í™•ìž¥ì— ìž˜ëª»ëœ ê³µê°œ 키ì´ì—ìš”." +msgstr "APK í™•ìž¥ì— ìž˜ëª»ëœ ê³µê°œ 키ì—ìš”." #: platform/android/export/export.cpp msgid "Invalid package name:" @@ -11421,27 +11760,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를 ì§€ì •í•˜ì§€ 않았어요 - 프로ì 트를 êµ¬ì„±í• ìˆ˜ 없어요." @@ -11455,7 +11777,7 @@ msgstr "요구하는 ì•„ì´ì½˜ì„ 프리셋ì—서 ì§€ì •í•˜ì§€ 않았어요." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "HTTP 서버 멈추기" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11463,7 +11785,7 @@ msgstr "브ë¼ìš°ì €ì—서 실행하기" #: platform/javascript/export/export.cpp msgid "Run exported HTML in the system's default browser." -msgstr "내보낸 HTMLì„ ì‹œìŠ¤í…œì˜ ê¸°ë³¸ 브ë¼ìš°ì €ë¥¼ 사용하여 실행하기." +msgstr "내보낸 HTMLì„ ì‹œìŠ¤í…œì˜ ê¸°ë³¸ 브ë¼ìš°ì €ë¥¼ 사용하여 실행해요." #: platform/javascript/export/export.cpp msgid "Could not write file:" @@ -11490,10 +11812,18 @@ 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 "ìž˜ëª»ëœ ì œí’ˆ GUID." @@ -11555,7 +11885,7 @@ msgid "" "Consider adding a CollisionShape2D or CollisionPolygon2D as a child to " "define its shape." msgstr "" -"ì´ ë…¸ë“œëŠ” Shapeê°€ 없어요, 다른 물체와 ì¶©ëŒí•˜ê±°ë‚˜ ìƒí˜¸ìž‘ìš©í• ìˆ˜ 없어요.\n" +"ì´ ë…¸ë“œëŠ” Shapeê°€ 없어요, 다른 물체와 ì¶©ëŒí•˜ê±°ë‚˜ ìƒí˜¸ ìž‘ìš©í• ìˆ˜ 없어요.\n" "CollisionShape2D ë˜ëŠ” CollisionPolygon2D를 ìžì‹ 노드로 추가하여 Shape를 ì •ì˜" "하세요." @@ -11565,7 +11895,7 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionPolygon2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë˜" +"CollisionPolygon2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ëŠ” ìš©ë„로만 사용ë¼" "ìš”. Shape를 ì •ì˜í•´ì•¼ 하는 Area2D, StaticBody2D, RigidBody2D, KinematicBody2D " "ë“±ì˜ ìžì‹ìœ¼ë¡œë§Œ 사용해주세요." @@ -11579,7 +11909,7 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionShape2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë˜" +"CollisionShape2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ëŠ” ìš©ë„로만 사용ë¼" "ìš”. Shape를 ì •ì˜í•´ì•¼ 하는 Area2D, StaticBody2D, RigidBody2D, KinematicBody2D " "ë“±ì˜ ìžì‹ìœ¼ë¡œë§Œ 사용해주세요." @@ -11609,7 +11939,7 @@ msgstr "ì¡°ëª…ì˜ ëª¨ì–‘ì„ ë‚˜íƒ€ë‚¼ í…스처를 \"Texture\" ì†ì„±ì— ì§€ì •í msgid "" "An occluder polygon must be set (or drawn) for this occluder to take effect." msgstr "" -"ì´ Occluderê°€ ì˜í–¥ì„ 주게 í•˜ë ¤ë©´ Occluder í´ë¦¬ê³¤ì„ ì„¤ì •í•´ì•¼ (í˜¹ì€ ê·¸ë ¤ì•¼)í•´" +"ì´ Occluderê°€ ì˜í–¥ì„ 주게 í•˜ë ¤ë©´ Occluder í´ë¦¬ê³¤ì„ ì„¤ì •í•´ì•¼ (í˜¹ì€ ê·¸ë ¤ì•¼) í•´" "ìš”." #: scene/2d/light_occluder_2d.cpp @@ -11645,15 +11975,15 @@ msgid "" "CPUParticles\" option for this purpose." msgstr "" "GPU 기반 파티í´ì€ GLES2 비디오 드ë¼ì´ë²„ì—서 ì§€ì›í•˜ì§€ 않아요.\n" -"ëŒ€ì‹ CPUParticles2D 노드를 사용하세요. ì´ ê²½ìš° \"CPU파티í´ë¡œ 변환\" ì˜µì…˜ì„ ì‚¬" -"ìš©í• ìˆ˜ 있어요." +"ëŒ€ì‹ CPUParticles2D 노드를 사용하세요. ì´ ê²½ìš° \"CPU파티í´ë¡œ 변환하기\" 옵션" +"ì„ ì‚¬ìš©í• ìˆ˜ 있어요." #: 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 "" @@ -11674,7 +12004,7 @@ msgid "" "Change the size in children collision shapes instead." msgstr "" "(ìºë¦í„°ë‚˜ 리지드 모드ì—서) RigidBody2Dì˜ í¬ê¸° ë³€ê²½ì€ ë¬¼ë¦¬ ì—”ì§„ì´ ìž‘ë™í•˜ëŠ” ë™" -"안 í° ë¶€ë‹´ì´ ë˜ìš”.\n" +"안 í° ë¶€ë‹´ì´ ë¼ìš”.\n" "ëŒ€ì‹ ìžì‹ ì¶©ëŒ í˜•íƒœì˜ í¬ê¸°ë¥¼ 변경해보세요." #: scene/2d/remote_transform_2d.cpp @@ -11693,8 +12023,8 @@ msgstr "Bone2D는 Skeleton2D나 다른 Bone2Dê°€ 부모 노드로 있어야만 ì msgid "" "This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." msgstr "" -"ì´ ë³¸ì— ì ì ˆí•œ 대기 ìžì„¸ê°€ 없습니다. Skeleton2D 노드로 가서 대기 ìžì„¸ë¥¼ ì„¤ì •" -"하세요." +"ì´ ë³¸ì— ì ì ˆí•œ 대기 ìžì„¸ê°€ 없어요. Skeleton2D 노드로 가서 대기 ìžì„¸ë¥¼ ì„¤ì •í•˜" +"세요." #: scene/2d/tile_map.cpp msgid "" @@ -11702,9 +12032,9 @@ msgid "" "to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, " "KinematicBody2D, etc. to give them a shape." msgstr "" -"Use Parentê°€ 켜진 TileMapì€ í˜•íƒœë¥¼ 주기 위한 부모 CollisionObject2Dê°€ 필요합" -"니다. 형태를 주기 위해 Area2D, StaticBody2D, RigidBody2D, KinematicBody2D 등" -"ì„ ìžì‹ 노드로 사용해주세요." +"Use Parentê°€ 켜진 TileMapì€ í˜•íƒœë¥¼ 주는 부모 CollisionObject2Dê°€ 필요해요. 형" +"태를 주기 위해 Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì„ ìžì‹ " +"노드로 사용해주세요." #: scene/2d/visibility_notifier_2d.cpp msgid "" @@ -11749,15 +12079,15 @@ msgstr "%d%%" #: scene/3d/baked_lightmap.cpp msgid "(Time Left: %d:%02d s)" -msgstr "(ë‚¨ì€ ì‹œê°„: %d:%02d s)" +msgstr "(ë‚¨ì€ ì‹œê°„: %d:%02d ì´ˆ)" #: scene/3d/baked_lightmap.cpp msgid "Plotting Meshes: " -msgstr "메시 구분 중: " +msgstr "구분하는 메시: " #: scene/3d/baked_lightmap.cpp msgid "Plotting Lights:" -msgstr "조명 구분 중:" +msgstr "구분하는 조명:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" @@ -11765,7 +12095,7 @@ msgstr "구분 ë남" #: scene/3d/baked_lightmap.cpp msgid "Lighting Meshes: " -msgstr "ë©”ì‹œì— ì¡°ëª… 중: " +msgstr "조명 메시: " #: scene/3d/collision_object.cpp msgid "" @@ -11773,7 +12103,7 @@ msgid "" "Consider adding a CollisionShape or CollisionPolygon as a child to define " "its shape." msgstr "" -"ì´ ë…¸ë“œëŠ” Shapeê°€ 없어요, 다른 물체와 ì¶©ëŒí•˜ê±°ë‚˜ ìƒí˜¸ìž‘ìš©í• ìˆ˜ 없어요.\n" +"ì´ ë…¸ë“œëŠ” Shapeê°€ 없어요. 다른 물체와 ì¶©ëŒí•˜ê±°ë‚˜ ìƒí˜¸ ìž‘ìš©í• ìˆ˜ 없어요.\n" "CollisionShape ë˜ëŠ” CollisionPolygonì„ ìžì‹ 노드로 추가해서 Shapeì„ ì •ì˜í•´ë³´" "세요." @@ -11783,7 +12113,7 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" -"CollisionPolygonì€ CollisionObjectì— ì¶©ëŒ Shapeì„ ì§€ì •í•˜ê¸° 위해서만 사용ë¼" +"CollisionPolygonì€ CollisionObjectì— ì¶©ëŒ Shape를 ì§€ì •í•˜ëŠ” ìš©ë„로만 사용ë¼" "ìš”. Area, StaticBody, RigidBody, KinematicBody ë“±ì— ìžì‹ 노드로 추가해서 사용" "해주세요." @@ -11797,7 +12127,7 @@ msgid "" "derived node. Please only use it as a child of Area, StaticBody, RigidBody, " "KinematicBody, etc. to give them a shape." msgstr "" -"CollisionShapeì€ CollisionObjectì— ì¶©ëŒ Shapeì„ ì§€ì •í•˜ê¸° 위해서만 사용ë¼ìš”. " +"CollisionShapeì€ CollisionObjectì— ì¶©ëŒ Shape를 ì§€ì •í•˜ëŠ” ìš©ë„로만 사용ë¼ìš”. " "Area, StaticBody, RigidBody, KinematicBody ë“±ì— ìžì‹ 노드로 추가해서 사용해주" "세요." @@ -11831,7 +12161,7 @@ msgstr "" #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" -msgstr "메시 구분 중" +msgstr "메시 구분하기" #: scene/3d/gi_probe.cpp msgid "" @@ -11854,8 +12184,8 @@ msgid "" "NavigationMeshInstance must be a child or grandchild to a Navigation node. " "It only provides navigation data." msgstr "" -"NavigationMeshInstance는 Navigation ë…¸ë“œì˜ ìžì‹ì´ë‚˜ ê·¸ ì•„ëž˜ì— ìžˆì–´ì•¼ í•´ìš”. ì´" -"ê²ƒì€ ë‚´ë¹„ê²Œì´ì…˜ ë°ì´í„°ë§Œì„ ì œê³µí•´ìš”." +"NavigationMeshInstance는 Navigation ë…¸ë“œì˜ ìžì‹ì´ë‚˜ ë” í•˜ìœ„ì— ìžˆì–´ì•¼ í•´ìš”. ì´" +"ê²ƒì€ ë‚´ë¹„ê²Œì´ì…˜ ë°ì´í„°ë§Œ ì œê³µí•´ìš”." #: scene/3d/particles.cpp msgid "" @@ -11864,13 +12194,13 @@ msgid "" "\" option for this purpose." msgstr "" "GPU 기반 파티í´ì€ GLES2 비디오 드ë¼ì´ë²„ì—서 ì§€ì›í•˜ì§€ 않아요.\n" -"ëŒ€ì‹ CPUParticles 노드를 사용하세요. ì´ ê²½ìš° \"CPU파티í´ë¡œ 변환\" ì„¤ì •ì„ ì‚¬ìš©" -"í• ìˆ˜ 있어요." +"ëŒ€ì‹ CPUParticles 노드를 사용하세요. ì´ ê²½ìš° \"CPU파티í´ë¡œ 변환하기\" ì„¤ì •ì„ " +"ì‚¬ìš©í• ìˆ˜ 있어요." #: scene/3d/particles.cpp msgid "" "Nothing is visible because meshes have not been assigned to draw passes." -msgstr "ë©”ì‹œë“¤ì„ íŒ¨ìŠ¤ë¥¼ 그리ë„ë¡ ì§€ì •í•˜ì§€ 않아서, 아무 ê²ƒë„ ë³´ì´ì§€ 않아요." +msgstr "메시가 패스를 그리ë„ë¡ ì§€ì •í•˜ì§€ 않아서, 아무 ê²ƒë„ ë³´ì´ì§€ 않아요." #: scene/3d/particles.cpp msgid "" @@ -11900,7 +12230,7 @@ msgid "" msgstr "" "(ìºë¦í„°ë‚˜ 리지드 모드ì—서) RigidBodyì˜ í¬ê¸° ë³€ê²½ì€ ë¬¼ë¦¬ ì—”ì§„ì´ ìž‘ë™í•˜ëŠ” ë™ì•ˆ " "í° ë¶€ë‹´ì´ ë¼ìš”.\n" -"ëŒ€ì‹ ìžì‹ ì¶©ëŒ í˜•íƒœì˜ í¬ê¸°ë¥¼ 변경해보세요." +"ëŒ€ì‹ ìžì‹ ì¶©ëŒ ëª¨ì–‘ì˜ í¬ê¸°ë¥¼ 변경하세요." #: scene/3d/remote_transform.cpp msgid "" @@ -11951,7 +12281,7 @@ msgstr "" msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." msgstr "" -"씬마다 (í˜¹ì€ ì¸ìŠ¤í„´ìŠ¤ëœ ì”¬ 묶ìŒë§ˆë‹¤) WorldEnvironment는 하나만 허용ë˜ìš”." +"씬마다 (í˜¹ì€ ì¸ìŠ¤í„´ìŠ¤ëœ ì”¬ 세트마다) WorldEnvironment는 하나만 허용ë¼ìš”." #: scene/3d/world_environment.cpp msgid "" @@ -11979,7 +12309,7 @@ msgstr "ìž˜ëª»ëœ ì• ë‹ˆë©”ì´ì…˜: '%s'." #: scene/animation/animation_tree.cpp msgid "Nothing connected to input '%s' of node '%s'." -msgstr "노드 '%s'ì˜ '%s' ìž…ë ¥ì— ì•„ë¬´ê²ƒë„ ì—°ê²°ë˜ì§€ 않ìŒ." +msgstr "노드 '%s'ì˜ '%s' ìž…ë ¥ì— ì•„ë¬´ê²ƒë„ ì—°ê²°ë˜ì§€ 않았어요." #: scene/animation/animation_tree.cpp msgid "No root AnimationNode for the graph is set." @@ -12030,7 +12360,7 @@ msgid "" "If you don't intend to add a script, use a plain Control node instead." msgstr "" "Container ìžì²´ëŠ” ìžì‹ 배치 ìž‘ì—…ì„ êµ¬ì„±í•˜ëŠ” 스í¬ë¦½íЏ 외ì—는 목ì ì´ ì—†ì–´ìš”.\n" -"스í¬ë¦½íŠ¸ë¥¼ 추가하지 않는 경우, 순수한 Control 노드를 사용해주세요." +"스í¬ë¦½íŠ¸ë¥¼ 추가하는 ì˜ë„ê°€ 없으면, 순수한 Control 노드를 사용해주세요." #: scene/gui/control.cpp msgid "" @@ -12038,7 +12368,7 @@ msgid "" "\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"." msgstr "" "Hint Tooltipì€ Controlì˜ Mouse Filterê°€ \"Ignore\"으로 ì„¤ì •ë˜ì–´ 있기 ë•Œë¬¸ì— " -"ë³´ì´ì§€ 않아요. í•´ê²°í•˜ë ¤ë©´, Mouse Filter를 \"Stop\"ì´ë‚˜ \"Pass\"로 ì„¤ì •í•˜ì„¸ìš”." +"ë³´ì´ì§€ 않아요. í•´ê²°í•˜ë ¤ë©´ Mouse Filter를 \"Stop\"ì´ë‚˜ \"Pass\"로 ì„¤ì •í•˜ì„¸ìš”." #: scene/gui/dialogs.cpp msgid "Alert!" @@ -12068,8 +12398,8 @@ msgid "" "minimum size manually." msgstr "" "ScrollContainer는 ë‹¨ì¼ ìžì‹ Controlì„ ìž‘ì—…í•˜ê¸° 위한 것ì´ì—ìš”.\n" -"컨테ì´ë„ˆë¥¼ ìžì‹ìœ¼ë¡œ 사용하거나 (VBox, HBox 등), Controlì„ ì‚¬ìš©í•˜ê³ ë§žì¶¤ 최소 " -"수치를 수ë™ìœ¼ë¡œ ì„¤ì •í•˜ì„¸ì˜¤." +"(VBox, HBox 등) 컨테ì´ë„ˆë¥¼ ìžì‹ìœ¼ë¡œ 사용하거나, Controlì„ ì‚¬ìš©í•˜ê³ ë§žì¶¤ 최소 " +"수치를 수ë™ìœ¼ë¡œ ì„¤ì •í•˜ì„¸ìš”." #: scene/gui/tree.cpp msgid "(Other)" @@ -12081,7 +12411,7 @@ msgid "" "Environment -> Default Environment) could not be loaded." msgstr "" "프로ì 트 ì„¤ì • (Rendering -> Environment -> Default Environment)ì— ì§€ì •í•œ 기" -"본 í™˜ê²½ì€ ë¶ˆëŸ¬ì˜¬ 수 없어요." +"본 í™˜ê²½ì„ ë¶ˆëŸ¬ì˜¬ 수 없어요." #: scene/main/viewport.cpp msgid "" @@ -12091,8 +12421,8 @@ msgid "" "texture to some node for display." msgstr "" "ë·°í¬íŠ¸ë¥¼ ë Œë” ëŒ€ìƒìœ¼ë¡œ ì„¤ì •í•˜ì§€ 않았어요. ë·°í¬íŠ¸ì˜ ë‚´ìš©ì„ í™”ë©´ì— ì§ì ‘ 표시하" -"ë ¤ë©´, í¬ê¸°ë¥¼ 얻기 위해서 Controlì˜ ìžì‹ 노드로 만들어야 í•´ìš”. ê·¸ë ‡ì§€ ì•Šì„ ê²½" -"ìš°, í™”ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 RenderTarget으로 ì„¤ì •í•˜ê³ ë‚´ë¶€ì ì¸ í…스처를 다" +"ë ¤ë©´, Controlì˜ ìžì‹ 노드로 만들어서 í¬ê¸°ë¥¼ 얻어야 í•´ìš”. ê·¸ë ‡ì§€ ì•Šì„ ê²½ìš°, í™”" +"ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 ë·°í¬íŠ¸ë¥¼ RenderTarget으로 ë§Œë“¤ê³ ë‚´ë¶€ì ì¸ í…스처를 다" "른 ë…¸ë“œì— ì§€ì •í•´ì•¼ í•´ìš”." #: scene/resources/visual_shader_nodes.cpp @@ -12109,20 +12439,45 @@ msgstr "해당 ìœ í˜•ì— ìž˜ëª»ëœ ë¹„êµ í•¨ìˆ˜." #: servers/visual/shader_language.cpp msgid "Assignment to function." -msgstr "í•¨ìˆ˜ì— ë°°ì¹˜í•¨." +msgstr "í•¨ìˆ˜ì— ëŒ€ìž…." #: servers/visual/shader_language.cpp msgid "Assignment to uniform." -msgstr "ìœ ë‹ˆí¼ì— 배치함." +msgstr "Uniformì— ëŒ€ìž…." #: servers/visual/shader_language.cpp msgid "Varyings can only be assigned in vertex function." -msgstr "Varyings는 ì˜¤ì§ ê¼ì§“ì 함수ì—서만 ì§€ì •í• ìˆ˜ 있어요." +msgstr "Varyingì€ ê¼ì§“ì 함수ì—ë§Œ ì§€ì •í• ìˆ˜ 있어요." #: servers/visual/shader_language.cpp 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 "씬 ì¼ì‹œ ì •ì§€" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "격ìžì— 스냅" @@ -12761,9 +13116,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Rotate 270 degrees" #~ msgstr "270ë„ íšŒì „" -#~ msgid "Warning" -#~ msgstr "ê²½ê³ " - #~ msgid "Variable" #~ msgstr "변수" @@ -12890,9 +13242,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Out-In" #~ msgstr "ë°–-안" -#~ msgid "Transitions" -#~ msgstr "ì „í™˜" - #~ msgid "Change Anim Len" #~ msgstr "ì• ë‹ˆë©”ì´ì…˜ ê¸¸ì´ ë³€ê²½" @@ -13104,9 +13453,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Replace By" #~ msgstr "으로 바꿈" -#~ msgid "Case Sensitive" -#~ msgstr "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„" - #~ msgid "Backwards" #~ msgstr "뒤로" @@ -13243,9 +13589,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Re-Import Changed Resources" #~ msgstr "ë³€ê²½ëœ ë¦¬ì†ŒìŠ¤ 다시 ê°€ì ¸ì˜¤ê¸°" -#~ msgid "Loading Export Templates" -#~ msgstr "내보내기 템플릿 로딩 중" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13544,9 +13887,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Loading Image:" #~ msgstr "ì´ë¯¸ì§€ 로딩:" -#~ msgid "Couldn't load image:" -#~ msgstr "ì´ë¯¸ì§€ë¥¼ ë¡œë“œí• ìˆ˜ ì—†ìŒ:" - #~ msgid "Converting Images" #~ msgstr "ì´ë¯¸ì§€ 변환 중" @@ -13722,9 +14062,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ "correct?" #~ msgstr "ì¸ì¦ì„œ 파ì¼ì„ ì½ì„ 수 없습니다. 경로와 비밀번호가 ì •í™•í•©ë‹ˆê¹Œ?" -#~ msgid "Error creating the signature object." -#~ msgstr "서명 오브ì 트 ìƒì„±ì¤‘ ì—러." - #~ msgid "Error creating the package signature." #~ msgstr "패키지 ì„œëª…ì„ ìƒì„±í•˜ëŠ” 중 ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." @@ -13824,9 +14161,6 @@ msgstr "ìƒìˆ˜ëŠ” ìˆ˜ì •í• ìˆ˜ 없어요." #~ msgid "Create Android keystore" #~ msgstr "안드로ì´ë“œ í‚¤ìŠ¤í† ì–´ 만들기" -#~ msgid "Full name" -#~ msgstr "성명" - #~ msgid "Organization" #~ msgstr "ì¡°ì§" @@ -13905,9 +14239,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 3d9a7bdd68..b202cd2beb 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -1,6 +1,6 @@ # Lithuanian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Ignas Kiela <ignaskiela@super.lt>, 2017. # Kornelijus <kornelijus.github@gmail.com>, 2017, 2018. @@ -26,6 +26,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -430,6 +434,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Animacija: PridÄ—ti Takelį" @@ -538,8 +546,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 +738,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 +825,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 +1007,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 +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 "" @@ -1708,6 +1727,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 "" @@ -1983,6 +2006,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -2020,6 +2051,27 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Signalai" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Konstanta" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2636,7 +2688,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 "" @@ -2847,7 +2900,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2950,6 +3003,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 +3063,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 "" @@ -3326,6 +3387,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3450,6 +3519,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 "" @@ -3531,6 +3604,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp #, fuzzy msgid "Open Scenes" msgstr "Atidaryti Skriptų Editorių" @@ -4269,6 +4346,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Animacija: PridÄ—ti Takelį" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "(Esama)" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4507,6 +4598,11 @@ msgstr "Mix Nodas" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Transition Nodas" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Transition Nodas" @@ -4592,6 +4688,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 @@ -4852,6 +4953,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" @@ -4959,6 +5084,14 @@ 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 "" @@ -4967,6 +5100,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "SkalÄ—:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -5039,6 +5177,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 "" @@ -5052,6 +5258,20 @@ 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 "" @@ -5193,6 +5413,10 @@ 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 "" @@ -5332,7 +5556,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5678,11 +5902,26 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#, 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 "" @@ -6324,6 +6563,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 "" @@ -6455,10 +6711,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 "" @@ -6550,11 +6802,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Signalai" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6582,6 +6829,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7222,20 +7474,39 @@ msgstr "Sukurti NaujÄ…" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Atnaujinti" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Keisti Poligono SkalÄ™" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Keisti Poligono SkalÄ™" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Keisti Poligono SkalÄ™" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Sukurti" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Sukurti" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7315,6 +7586,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7598,6 +7873,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7614,8 +7890,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Konstanta" +#, fuzzy +msgid "Theme File" +msgstr "Atidaryti" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7730,6 +8007,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 "" @@ -7747,6 +8036,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" @@ -7976,6 +8298,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Keisti Poligono SkalÄ™" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Keisti Poligono SkalÄ™" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Keisti Poligono SkalÄ™" @@ -8255,7 +8587,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8848,9 +9180,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8915,6 +9248,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 "" @@ -8960,6 +9302,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "Importuoti iÅ¡ Nodo:" @@ -9009,6 +9357,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9063,6 +9415,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 "" @@ -9324,6 +9684,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9405,18 +9769,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10650,10 +11002,6 @@ 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 "" @@ -10792,6 +11140,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Visas Pasirinkimas" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Panaikinti pasirinkimÄ…" @@ -10936,6 +11289,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 "" @@ -11001,16 +11364,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Ä…" @@ -11060,10 +11413,6 @@ 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 "" @@ -11145,7 +11494,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11186,6 +11535,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 "" @@ -11385,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 "" @@ -11456,11 +11802,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Netinkamas Å¡rifto dydis." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Netinkamas Å¡rifto dydis." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Netinkamas Å¡rifto dydis." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Netinkamas Å¡rifto dydis." diff --git a/editor/translations/lv.po b/editor/translations/lv.po index 26a3d6d7d1..05a0656c15 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -1,6 +1,6 @@ # Latvian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Gustavs Porietis (pg829-) <porietisgustavs@gmail.com>, 2018. # Martch Zagorski <martchzagorski@gmail.com>, 2018. @@ -26,6 +26,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -422,6 +426,10 @@ msgid "Not possible to add a new track without a root" msgstr "Nevar izveidot jaunu celiņu bez saknes" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Pievienot celiņu" @@ -529,8 +537,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 +729,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 +812,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 +993,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 +1481,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 +1730,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 "" @@ -1987,6 +2009,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -2023,6 +2053,27 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "SignÄli" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2638,7 +2689,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 "" @@ -2847,7 +2899,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2951,6 +3003,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 +3063,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 "" @@ -3318,6 +3378,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3443,6 +3511,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 "" @@ -3521,6 +3593,11 @@ msgstr "" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "SaglabÄt KÄ" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Atjaunina Ainu" @@ -4258,6 +4335,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "AnimÄcijas klipi:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Audio klipi:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funkcijas:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4492,6 +4584,11 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Pievienot celiņu" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Pievienot celiņu" @@ -4575,6 +4672,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" @@ -4831,6 +4933,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 "" @@ -4935,6 +5063,14 @@ 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 "" @@ -4943,6 +5079,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "MÄ“roga AttiecÄ«ba:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -5015,6 +5156,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 "" @@ -5028,6 +5240,20 @@ 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 "" @@ -5168,6 +5394,10 @@ 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 "" @@ -5307,7 +5537,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5657,11 +5887,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6298,6 +6542,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 "" @@ -6425,10 +6686,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 "" @@ -6521,11 +6778,6 @@ msgid "Source" msgstr "Resurs" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "SignÄli" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6554,6 +6806,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7198,21 +7455,39 @@ msgid "Create Mesh2D" msgstr "Izveidot Jaunu %s" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "Izveidot" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Izveidot" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Izveidot" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Izveidot" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Izveidot" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7292,6 +7567,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7572,6 +7851,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7588,8 +7868,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "" +#, fuzzy +msgid "Theme File" +msgstr "AtvÄ“rt" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7702,6 +7983,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 "" @@ -7719,6 +8012,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" @@ -7946,6 +8271,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Izveidot" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Izveidot" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Izveidot" @@ -8228,7 +8563,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8820,9 +9155,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8886,6 +9222,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 "" @@ -8931,6 +9276,12 @@ 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 "" @@ -8979,6 +9330,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9030,6 +9385,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 "" @@ -9288,6 +9651,10 @@ msgid "Projects" msgstr "Projekta DibinÄtÄji" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9369,18 +9736,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10613,10 +10968,6 @@ 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 "" @@ -10755,6 +11106,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Visa IzvÄ“le" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10899,6 +11255,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 " @@ -10966,16 +11332,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" @@ -11025,10 +11381,6 @@ 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 "" @@ -11108,7 +11460,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11150,6 +11502,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:" @@ -11348,27 +11715,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 "" @@ -11419,11 +11769,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "NederÄ«gs nosaukums." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "NederÄ«gs nosaukums." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "NederÄ«gs nosaukums." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "NederÄ«gs nosaukums." diff --git a/editor/translations/mi.po b/editor/translations/mi.po index f78d6f5259..af8caa70cc 100644 --- a/editor/translations/mi.po +++ b/editor/translations/mi.po @@ -1,6 +1,6 @@ # LANGUAGE translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # follower <follower@rancidbacon.com>, 2019. msgid "" @@ -16,6 +16,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -398,6 +402,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -499,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 "" @@ -686,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 @@ -762,6 +775,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -933,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 "" @@ -1398,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 "" @@ -1638,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 "" @@ -1904,6 +1926,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1939,6 +1969,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2546,7 +2596,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 "" @@ -2754,7 +2805,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2857,6 +2908,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 +2968,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 "" @@ -3221,6 +3280,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3343,6 +3410,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 "" @@ -3419,6 +3490,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4128,6 +4203,18 @@ msgid "" 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 "" @@ -4358,6 +4445,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4437,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" @@ -4691,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 "" @@ -4794,6 +4913,14 @@ 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 "" @@ -4802,6 +4929,10 @@ 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 "" @@ -4870,6 +5001,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 "" @@ -4883,6 +5082,20 @@ 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 "" @@ -5017,6 +5230,10 @@ 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 "" @@ -5156,7 +5373,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5496,11 +5713,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6126,6 +6357,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 "" @@ -6252,10 +6500,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 "" @@ -6346,10 +6590,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6375,6 +6615,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7009,18 +7254,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7097,6 +7358,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7370,6 +7635,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7386,7 +7652,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7497,6 +7763,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 "" @@ -7513,6 +7791,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 "" @@ -7721,6 +8027,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -7983,7 +8297,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8570,9 +8884,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8636,6 +8951,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 "" @@ -8681,6 +9004,12 @@ 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 "" @@ -8729,6 +9058,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8780,6 +9113,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 "" @@ -9037,6 +9378,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9117,18 +9462,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10337,10 +10670,6 @@ 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 "" @@ -10477,6 +10806,10 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10619,6 +10952,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 "" @@ -10679,14 +11020,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 "" @@ -10735,10 +11068,6 @@ 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 "" @@ -10817,7 +11146,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10857,6 +11186,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 "" @@ -11053,27 +11394,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 "" @@ -11122,10 +11446,18 @@ 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 "" diff --git a/editor/translations/ml.po b/editor/translations/ml.po index d4b49c12cc..e5420f6ac2 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -1,15 +1,16 @@ # Malayalam translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # christy james <jkuttu@gmail.com>, 2018. # Lakshmi-Jayakumar <lakshmi.jayakumar.tkm@gmail.com>, 2019. +# Anvar Nazar <anvarnasar@ymail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-17 04:52+0000\n" -"Last-Translator: Lakshmi-Jayakumar <lakshmi.jayakumar.tkm@gmail.com>\n" +"PO-Revision-Date: 2019-11-09 22:04+0000\n" +"Last-Translator: Anvar Nazar <anvarnasar@ymail.com>\n" "Language-Team: Malayalam <https://hosted.weblate.org/projects/godot-engine/" "godot/ml/>\n" "Language: ml\n" @@ -17,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\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,6 +26,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "ആർഗàµà´¯àµà´®àµ†à´¨àµà´±àµ ടൈപàµà´ªàµ അസാധàµà´µà´¾à´£àµ മാറàµà´±à´‚വരàµà´¤àµà´¤à´¾àµ»(), TYPE_ * à´¸àµà´¥à´¿à´°à´¾à´™àµà´•à´™àµà´™àµ¾ ഉപയോഗികàµà´•àµà´•." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -48,201 +53,201 @@ msgstr "à´…à´Ÿà´¿à´¸àµà´¥à´¾à´¨ തരം% sഇനൠഅസാധàµà´µà´¾à´¯ #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "" +msgstr "'%s' à´…à´Ÿà´¿à´¸àµà´¥à´¾à´¨ തരതàµà´¤à´¿àµ»à´±àµ† '%s' à´Žà´¨àµà´¨ സൂചിക ശരിയലàµà´²" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr "" +msgstr "'%s' നിർമികàµà´•àµà´µà´¾àµ» à´•à´¿à´Ÿàµà´Ÿà´¿à´¯ വിവരങàµà´™àµ¾ തെറàµà´±à´¾à´£àµ" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "" +msgstr "'%s' വിളിചàµà´šà´ªàµà´ªàµ‹àµ¾:" #: core/ustring.cpp msgid "B" -msgstr "" +msgstr "ബൈറàµà´±àµ" #: core/ustring.cpp msgid "KiB" -msgstr "" +msgstr "കിലോബൈറàµà´±àµ" #: core/ustring.cpp msgid "MiB" -msgstr "" +msgstr "മെഗാബൈറàµà´±àµ" #: core/ustring.cpp msgid "GiB" -msgstr "" +msgstr "ജിഗാബൈറàµà´±àµ" #: core/ustring.cpp msgid "TiB" -msgstr "" +msgstr "ടെറാബൈറàµà´±àµ" #: core/ustring.cpp msgid "PiB" -msgstr "" +msgstr "പീറàµà´±à´¾à´¬àµˆà´±àµà´±àµ" #: core/ustring.cpp msgid "EiB" -msgstr "" +msgstr "à´Žà´•àµà´¸à´¿à´¬àµˆà´±àµà´±àµ" #: editor/animation_bezier_editor.cpp msgid "Free" -msgstr "" +msgstr "സൗജനàµà´¯à´‚" #: editor/animation_bezier_editor.cpp msgid "Balanced" -msgstr "" +msgstr "സമതàµà´²à´¿à´¤à´‚" #: editor/animation_bezier_editor.cpp msgid "Mirror" -msgstr "" +msgstr "à´•à´£àµà´£à´¾à´Ÿà´¿" #: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp msgid "Time:" -msgstr "" +msgstr "സമയം:" #: editor/animation_bezier_editor.cpp msgid "Value:" -msgstr "" +msgstr "വില:" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" -msgstr "" +msgstr "സൂചിക ഇവിടെയിടàµà´•" #: editor/animation_bezier_editor.cpp msgid "Duplicate Selected Key(s)" -msgstr "" +msgstr "സൂചികകളàµà´Ÿàµ† പകർപàµà´ªàµ†à´Ÿàµà´•àµà´•àµà´•" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" -msgstr "" +msgstr "സൂചികകൾ നീകàµà´•à´‚ ചെയàµà´¯àµà´•" #: editor/animation_bezier_editor.cpp msgid "Add Bezier Point" -msgstr "" +msgstr "ബെസിയർ ബിനàµà´¦àµ ചേർകàµà´•àµà´•" #: editor/animation_bezier_editor.cpp msgid "Move Bezier Points" -msgstr "" +msgstr "ബെസിയർ ബിനàµà´¦àµ നീകàµà´•àµà´•" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "" +msgstr "ചലനസൂചികകൾ പകർതàµà´¤àµà´•" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" -msgstr "" +msgstr "ചലനസൂചികകൾ കളയàµà´•" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "" +msgstr "ചലനസൂചികയàµà´Ÿàµ† സമയം മാറàµà´±àµà´•" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" -msgstr "" +msgstr "സംകàµà´°à´®à´£à´‚ ചലിപàµà´ªà´¿à´•àµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" -msgstr "" +msgstr "പരിവർതàµà´¤à´¨à´‚ ചലിപàµà´ªà´¿à´•àµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "" +msgstr "ചലന തിരസൂചനയàµà´Ÿàµ† വില മാറàµà´±àµà´•" #: editor/animation_track_editor.cpp msgid "Anim Change Call" -msgstr "" +msgstr "മാറàµà´±à´‚ വിളി ചലിപàµà´ªà´¿à´•àµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Time" -msgstr "" +msgstr "പല മാറàµà´±à´‚ തിരസൂചനയàµà´Ÿàµ† സമയം ചലിപàµà´ªà´¿à´•àµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transition" -msgstr "" +msgstr "പലമാറàµà´± സംകàµà´°à´®à´£à´‚ ചലിപàµà´ªà´¿à´•àµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transform" -msgstr "" +msgstr "പലമാറàµà´± പരിവർതàµà´¤à´¨à´‚ ചലിപàµà´ªà´¿à´•àµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Value" -msgstr "" +msgstr "പലമാറàµà´± ചാവിതàµà´¤à´¿à´°à´¯àµà´Ÿàµ† വില ചലിപàµà´ªà´¿à´•àµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Call" -msgstr "" +msgstr "പലമാറàµà´± വിളി ചലിപàµà´ªà´¿à´•àµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Change Animation Length" -msgstr "" +msgstr "ചലനതàµà´¤à´¿àµ»à´±àµ† നേരം മാറàµà´±àµà´•" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "" +msgstr "ചലനാവർതàµà´¤à´¨à´‚ മാറàµà´±àµà´•" #: editor/animation_track_editor.cpp msgid "Property Track" -msgstr "" +msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "3D Transform Track" -msgstr "" +msgstr "à´¤àµà´°à´¿à´®à´¾à´¨ പരിവർതàµà´¤à´¨à´‚ നോകàµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Call Method Track" -msgstr "" +msgstr "വിളി രീതി നോകàµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" -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)" -msgstr "" +msgstr "ചലന നേരം (തിരകൾ)" #: editor/animation_track_editor.cpp msgid "Animation length (seconds)" -msgstr "" +msgstr "ചലന നേരം (ഞൊടികൾ)" #: editor/animation_track_editor.cpp msgid "Add Track" -msgstr "" +msgstr "വഴി ചേർകàµà´•àµà´•" #: editor/animation_track_editor.cpp msgid "Animation Looping" -msgstr "" +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:" -msgstr "" +msgstr "à´¶à´¬àµà´¦à´°àµ‡à´–കൾ:" #: editor/animation_track_editor.cpp msgid "Anim Clips:" -msgstr "" +msgstr "ചലനരേഖകൾ:" #: editor/animation_track_editor.cpp msgid "Change Track Path" -msgstr "" +msgstr "നോകàµà´•ലിൻറെ വഴി മാറàµà´±àµà´•" #: editor/animation_track_editor.cpp msgid "Toggle this track on/off." -msgstr "" +msgstr "à´ˆ വഴി à´“(ണോ/ഫോ) ആകàµà´•àµà´•." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" @@ -407,6 +412,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -508,8 +517,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 "" @@ -695,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 @@ -771,6 +785,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -942,7 +960,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 "" @@ -1407,7 +1425,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 "" @@ -1647,6 +1666,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 "" @@ -1913,6 +1936,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1948,6 +1979,27 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2555,7 +2607,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 "" @@ -2763,7 +2816,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2866,6 +2919,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 +2979,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 "" @@ -3230,6 +3291,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3352,6 +3421,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 "" @@ -3428,6 +3501,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4137,6 +4214,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "ചലനരേഖകൾ:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "à´¶à´¬àµà´¦à´°àµ‡à´–കൾ:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4367,6 +4459,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4446,6 +4542,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" @@ -4700,6 +4800,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 "" @@ -4803,6 +4927,14 @@ 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 "" @@ -4811,6 +4943,10 @@ 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 "" @@ -4879,6 +5015,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 "" @@ -4892,6 +5096,20 @@ 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 "" @@ -5026,6 +5244,10 @@ 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 "" @@ -5165,7 +5387,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5505,11 +5727,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6135,6 +6371,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 "" @@ -6261,10 +6514,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 "" @@ -6355,10 +6604,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6384,6 +6629,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7018,18 +7268,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7106,6 +7372,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7379,6 +7649,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7395,7 +7666,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7506,6 +7777,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 "" @@ -7522,6 +7805,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 "" @@ -7730,6 +8041,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -7992,7 +8311,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8579,9 +8898,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8645,6 +8965,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 "" @@ -8690,6 +9018,12 @@ 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 "" @@ -8738,6 +9072,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8789,6 +9127,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 "" @@ -9046,6 +9392,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9126,18 +9476,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10346,10 +10684,6 @@ 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 "" @@ -10486,6 +10820,10 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10628,6 +10966,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 "" @@ -10688,14 +11034,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 "" @@ -10744,10 +11082,6 @@ 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 "" @@ -10826,7 +11160,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10866,6 +11200,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 "" @@ -11062,27 +11409,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 "" @@ -11131,10 +11461,18 @@ 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 "" diff --git a/editor/translations/mr.po b/editor/translations/mr.po new file mode 100644 index 0000000000..84f35123bc --- /dev/null +++ b/editor/translations/mr.po @@ -0,0 +1,11994 @@ +# Marathi translation of the Godot Engine editor +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 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 +msgid "Expected a string of length 1 (a character)." +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 "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Bezier Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a key." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track is not of type Spatial, can't insert key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Transform Track Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Track Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a method key." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Method Track Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Method not found in object: " +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +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 "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Display All" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Classes Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Methods Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Signals Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Constants Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Properties Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Properties Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Member Type" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Class" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + +#: editor/editor_inspector.cpp editor/project_settings_editor.cpp +msgid "Property:" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "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 "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +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 "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Add Transition" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "End" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Immediate" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Sync" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "At End" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Travel" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Start and end nodes are needed for a sub-transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "No playback resource set at path: %s." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Node Removed" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition Removed" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Set Start Node (Autoplay)" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "" +"Select and move nodes.\n" +"RMB to add new nodes.\n" +"Shift+LMB to create connections." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Create new nodes." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Connect nodes." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Remove selected node or transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Toggle autoplay this animation on start, restart or seek to zero." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Set the end animation. This is useful for sub-transitions." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition: " +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Input" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Import Animations..." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Filters..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Contents:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "View Files" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "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_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#: 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 "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 +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Lookup Symbol" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Convert Case" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Uppercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Lowercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Capitalize" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Syntax Highlighter" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +msgid "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 "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite is empty!" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Can't convert a sprite using animation frames to mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't replace by mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Mesh2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to Polygon2D" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create collision polygon." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create CollisionPolygon2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't create light occluder." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create LightOccluder2D Sibling" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Simplification: " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Shrink (Pixels): " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Grow (Pixels): " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Update Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Settings:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "No Frames Selected" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add %d Frame(s)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Move Frame" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (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 "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 "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "This property can't be changed." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "TileSet" +msgstr "" + +#: editor/plugins/version_control_editor_plugin.cpp +msgid "No VCS 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 "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 "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clear Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Fill Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Settings" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Pick Distance:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Filter meshes" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Give a MeshLibrary resource to this GridMap to use its meshes." +msgstr "" + +#: modules/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 "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 74ade07fc8..dc75443acb 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -1,6 +1,6 @@ # Malay translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Sam Vanguard <syafz119@gmail.com>, 2018. # Shaqir Rafiq <moshamoradev@gmail.com>, 2018. @@ -27,6 +27,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -420,6 +424,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Anim Tambah Trek" @@ -524,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 "" @@ -714,6 +723,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 +803,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -961,7 +978,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 +1443,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 +1685,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 "" @@ -1933,6 +1955,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1968,6 +1998,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2577,7 +2627,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 "" @@ -2786,7 +2837,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2889,6 +2940,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 +3000,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 "" @@ -3253,6 +3312,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3375,6 +3442,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 "" @@ -3451,6 +3522,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4165,6 +4240,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Anim Tambah Trek" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Semua Pilihan" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4397,6 +4486,11 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Set Peralihan ke:" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Set Peralihan ke:" @@ -4478,6 +4572,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" @@ -4732,6 +4830,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 "" @@ -4835,6 +4959,14 @@ 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 "" @@ -4843,6 +4975,10 @@ 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 "" @@ -4912,6 +5048,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 "" @@ -4925,6 +5129,20 @@ 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 "" @@ -5063,6 +5281,10 @@ 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 "" @@ -5202,7 +5424,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5544,11 +5766,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6174,6 +6410,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 +6553,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 "" @@ -6394,10 +6643,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6423,6 +6668,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7058,19 +7308,35 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "Semua Pilihan" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7147,6 +7413,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7424,6 +7694,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7440,7 +7711,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7553,6 +7824,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 "" @@ -7569,6 +7852,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 "" @@ -7779,6 +8090,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -8048,7 +8367,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8637,9 +8956,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8703,6 +9023,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 "" @@ -8748,6 +9076,12 @@ 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 "" @@ -8796,6 +9130,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8847,6 +9185,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 "" @@ -9104,6 +9450,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9184,18 +9534,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10409,10 +10747,6 @@ 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 "" @@ -10551,6 +10885,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Semua Pilihan" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10694,6 +11033,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 "" @@ -10756,15 +11104,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" @@ -10814,10 +11153,6 @@ 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 "" @@ -10897,7 +11232,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10937,6 +11272,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 "" @@ -11133,27 +11481,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 "" @@ -11202,10 +11533,18 @@ 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 "" diff --git a/editor/translations/nb.po b/editor/translations/nb.po index d7a63a7f8c..e05c2e5ec8 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -1,6 +1,6 @@ # Norwegian BokmÃ¥l translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Allan Nordhøy <epost@anotheragency.no>, 2017-2018, 2019. # Anonymous <GentleSaucepan@protonmail.com>, 2017. @@ -36,6 +36,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Ugyldig argumenttype til convert(), bruk TYPE_*-konstantene." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -444,6 +448,10 @@ msgid "Not possible to add a new track without a root" msgstr "Ikke mulig Ã¥ legge til et nytt spor uten en rot" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Anim Legg til Spor" @@ -559,8 +567,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 +765,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 +853,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 +1045,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 +1536,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 +1811,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" @@ -2082,6 +2106,15 @@ msgid "Search Help" msgstr "Søk hjelp" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Forskjell pÃ¥ smÃ¥ og store bokstaver" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Vis hjelpere" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "Erstatt Alle" @@ -2126,6 +2159,30 @@ msgstr "Medlemmer" msgid "Class" msgstr "Klasse:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metoder" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Signaler" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Konstant" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Egenskap:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Egenskaper" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Egenskap:" @@ -2796,7 +2853,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" @@ -3041,8 +3099,8 @@ msgid "Play" msgstr "Spill" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pause scenen" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3152,6 +3210,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 +3272,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." @@ -3543,6 +3611,14 @@ msgid "Importing:" msgstr "Importerer:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3678,6 +3754,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" @@ -3770,6 +3851,11 @@ msgstr "Ny Arvet Scene..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Velg en HovedScene" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Ã…pne Scene" @@ -4565,6 +4651,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Anim-klipp:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Lydklipp:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funksjoner:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4814,6 +4915,11 @@ msgstr "Flytt Modus" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Overgang" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Overgang" @@ -4900,6 +5006,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 @@ -5172,6 +5283,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" @@ -5281,6 +5418,15 @@ msgid "Grid Step:" msgstr "Rutenett Steg:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 steg" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Rotasjon Offset:" @@ -5290,6 +5436,11 @@ msgstr "Rotasjon Steg:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "Skala:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "Flytt vertikal veileder" @@ -5370,6 +5521,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" @@ -5383,6 +5615,20 @@ msgstr "Endre Anker" #: 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 #, fuzzy msgid "Lock Selected" msgstr "Slett Valgte" @@ -5536,6 +5782,11 @@ msgid "Use Rotation Snap" msgstr "Bruk Rotasjons-Snap" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "Bruk Snap" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Snap Relativt" @@ -5689,7 +5940,7 @@ msgstr "Sett inn Nøkkel (Eksisterende Spor)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -6050,11 +6301,27 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Fjern element %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Oppdater fra Scene" + +#: 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" @@ -6722,6 +6989,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" @@ -6855,10 +7139,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" @@ -6955,11 +7235,6 @@ msgid "Source" msgstr "Ressurs" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Signaler" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6988,6 +7263,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7655,20 +7935,39 @@ msgstr "Lag ny %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Lager ForhÃ¥ndsvisning av Mesh" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Lag Poly" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Lag Poly" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Lag Poly" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Lag mappe" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Lag mappe" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7751,6 +8050,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Kunne ikke laste ressurs." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -8044,6 +8348,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikon" @@ -8060,8 +8365,9 @@ msgid "Color" msgstr "Farge" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Konstant" +#, fuzzy +msgid "Theme File" +msgstr "Tema" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -8182,6 +8488,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" @@ -8201,6 +8521,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" @@ -8441,6 +8796,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Flytt Polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Flytt Polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Lag Poly" @@ -8739,7 +9104,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9335,9 +9700,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9403,6 +9769,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 "" @@ -9449,6 +9824,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "Eksporter Prosjekt" @@ -9498,6 +9879,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Filer" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9553,6 +9939,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 "" @@ -9831,6 +10226,10 @@ msgid "Projects" msgstr "Prosjekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Skann" @@ -9914,18 +10313,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -11217,10 +11604,6 @@ 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 "" @@ -11364,6 +11747,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "Fjern Utvalg" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "Fjern Utvalg" @@ -11513,6 +11901,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." @@ -11580,16 +11978,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" @@ -11644,10 +12032,6 @@ 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 "Legg til node(r) fra tre" @@ -11734,7 +12118,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11777,6 +12161,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:" @@ -11980,28 +12379,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 "" @@ -12056,11 +12438,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Ugyldig navn." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Ugyldig navn." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Ugyldig navn." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Prosjektnavn:" @@ -12599,6 +12991,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstanter kan ikke endres." +#~ msgid "Pause the scene" +#~ msgstr "Pause scenen" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "Snap til rutenett" @@ -12876,10 +13271,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" @@ -13139,9 +13530,6 @@ msgstr "Konstanter kan ikke endres." #~ msgid "Replace By" #~ msgstr "Erstatt Med" -#~ msgid "Case Sensitive" -#~ msgstr "Forskjell pÃ¥ smÃ¥ og store bokstaver" - #~ msgid "Backwards" #~ msgstr "Baklengs" diff --git a/editor/translations/nl.po b/editor/translations/nl.po index 950e7f4573..1e3bd204af 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -1,6 +1,6 @@ # Dutch translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # aelspire <aelspire@gmail.com>, 2017. # Aram Nap <xyphex.aram@gmail.com>, 2017. @@ -37,12 +37,15 @@ # Hector Peeters <hector.peeters@gmail.com>, 2019. # Shawn Gyina <gyina.shawn@gmail.com>, 2019. # 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-10-18 18:02+0000\n" -"Last-Translator: ebbe <ebbesteenhoudt@gmail.com>\n" +"PO-Revision-Date: 2019-12-27 15:52+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" @@ -50,12 +53,16 @@ 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.1-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 "Ongeldig argumenttype aan convert(), gebruik TYPE_* constanten." +msgstr "Ongeldig argumenttype voor convert(), gebruik TYPE_* constanten." + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Tekenreeks met lengte 1 verwacht (één karakter)." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp @@ -70,11 +77,12 @@ msgstr "Ongeldige invoer %i (niet doorgegeven) in expressie" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" msgstr "" -"self kan niet gebruikt worden omdat de instantie null is (niet doorgegeven)" +"'self' kan niet gebruikt worden omdat de instantie 'null' is (niet " +"doorgegeven)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "Ongeldige operand voor operator %s, %s en %s." +msgstr "Ongeldige operanden %s en %s voor operator %s." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" @@ -146,7 +154,7 @@ msgstr "Hier Key invoegen" #: editor/animation_bezier_editor.cpp msgid "Duplicate Selected Key(s)" -msgstr "Kopieer Geselecteerde Key(s)" +msgstr "Geselecteerde sleutel(s) dupliceren" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" @@ -162,7 +170,7 @@ msgstr "Beweeg Bézierpunten" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Anim Dupliceer Keys" +msgstr "Animatiesleutels dupliceren" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" @@ -189,29 +197,24 @@ msgid "Anim Change Call" msgstr "Anim Wijzig Aanroep" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Time" -msgstr "Anim Wijzig Keyframe Waarde" +msgstr "Anim Wijzig Meerdere Keyframe Waarden" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "Anim Wijzig Overgang" +msgstr "anim-multi-change overgang" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "Anim Wijzig Transform" +msgstr "Anim-multi-change transformatie" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Value" -msgstr "Anim Wijzig Keyframe Waarde" +msgstr "Anim-Multi-Change keyframe waarde" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Call" -msgstr "Anim Wijzig Aanroep" +msgstr "Anim-Multi-Change aanroep" #: editor/animation_track_editor.cpp msgid "Change Animation Length" @@ -220,7 +223,7 @@ msgstr "Verander Animatielengte" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "Verander Animatie Lus" +msgstr "Animatielus veranderen" #: editor/animation_track_editor.cpp msgid "Property Track" @@ -248,12 +251,11 @@ 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 -#, fuzzy msgid "Animation length (seconds)" -msgstr "Animatielengte (in seconden)" +msgstr "Animatielengte (seconden)" #: editor/animation_track_editor.cpp msgid "Add Track" @@ -261,7 +263,7 @@ msgstr "Track Toevoegen" #: editor/animation_track_editor.cpp msgid "Animation Looping" -msgstr "Animatie Loopen" +msgstr "Animatie herhalen" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -307,7 +309,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" @@ -340,11 +342,11 @@ msgstr "Kubiek" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" -msgstr "Klem loop interpolatie" +msgstr "Klem lusinterpolatie" #: editor/animation_track_editor.cpp msgid "Wrap Loop Interp" -msgstr "Loop Interpolatie Terug" +msgstr "Naadloze lusinterpolatie" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp @@ -353,7 +355,7 @@ msgstr "Voer Sleutel in" #: editor/animation_track_editor.cpp msgid "Duplicate Key(s)" -msgstr "Dupliceer Sleutel(s)" +msgstr "Sleutel(s) dupliceren" #: editor/animation_track_editor.cpp msgid "Delete Key(s)" @@ -369,7 +371,7 @@ msgstr "Verander Animatie Interpolatiemodus" #: editor/animation_track_editor.cpp msgid "Change Animation Loop Mode" -msgstr "Verander Animatie lus Modus" +msgstr "Animatielusmodus veranderen" #: editor/animation_track_editor.cpp msgid "Remove Anim Track" @@ -425,9 +427,7 @@ msgstr "Herschik Tracks" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." -msgstr "" -"Transformatie tracks zijn alleen te gebruiken met nodes die een dimensionale " -"oriëntatie hebben." +msgstr "Transformatiesporen gelden alleen voor op Spatial-gebaseerde knopen." #: editor/animation_track_editor.cpp msgid "" @@ -436,14 +436,14 @@ msgid "" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" msgstr "" -"Audio tracks kunnen enkel verwijzen naar nodes van het type:\n" +"Audiosporen kunnen alleen verwijzen naar de volgende knopen:\n" "-AudioStreamPlayer\n" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "Animatie tracks kunnen enkel verwijzen naar AnimatiePlayer nodes." +msgstr "Animatiesporen kunnen alleen verwijzen naar AnimatiePlayer-knopen." #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." @@ -454,6 +454,10 @@ msgid "Not possible to add a new track without a root" msgstr "Niet mogelijk om een nieuwe track toe te voegen zonder een root" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Voeg Bézierbaan Toe" @@ -478,13 +482,12 @@ msgid "Track path is invalid, so can't add a method key." msgstr "Track path is niet geldig, dus kan geen methode key toevoegen." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Method Track Key" 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" @@ -523,36 +526,33 @@ msgid "" msgstr "" "Deze animatie behoort tot een geïmporteerde scène, dus veranderingen aan " "geïmporteerde tracks zullen niet worden opgeslagen.\n" -"\n" -"Om aangepaste tracks toe te voegen, navigeert u naar de importinstellingen " -"van de scène en stelt u deze in\n" -"\"Animation > Storage\" naar \"Files\", schakel \"Animation > Keep Custom " -"Tracks\" in, dan herimporteren.\n" -"U kunt ook een importvoorinstelling gebruiken die animaties importeert om " -"bestanden te scheiden." +"Om aangepaste tracks toe te kunnen voegen, moet in de importinstellingen van " +"de scène en de \"Animation→Storage\" naar \"Files\" zetten en " +"\"Animation→Keep Custom Tracks\" inschakelen. Importeer de scène dan " +"opnieuw.\n" +"Anders kan je een importvoorinstelling gebruiken die animaties importeert en " +"in verschillende bestanden opslaat." #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" -msgstr "Waarschuwing: Geïmporteerde animatie bewerken" +msgstr "Waarschuwing: Er wordt een geïmporteerde animatie bewerkt" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select an AnimationPlayer node to create and edit animations." msgstr "" "Selecteer een AnimationPlayer uit de Scene Tree om animaties te wijzigen." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." -msgstr "Toon alleen sporen die horen bij de geselecteerde node in de boom." +msgstr "Alleen sporen van geselecteerde knopen tonen." #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "Sporen weergeven op basis van nodes of als lijst." +msgstr "Sporen groeperen op knoop of als een normale lijst tonen." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Snap:" -msgstr "Snap:" +msgstr "Uitlijnen:" #: editor/animation_track_editor.cpp msgid "Animation step value." @@ -570,8 +570,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" @@ -593,7 +594,7 @@ msgstr "Schaal Vanaf Cursor" #: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "Dupliceer Selectie" +msgstr "Selectie dupliceren" #: editor/animation_track_editor.cpp msgid "Duplicate Transposed" @@ -621,7 +622,7 @@ msgstr "Animatie Opschonen" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" -msgstr "Kies de node die geanimeerd zal worden:" +msgstr "Kies de knoop die geanimeerd zal worden:" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" @@ -672,9 +673,8 @@ msgid "Scale Ratio:" msgstr "Schaal Ratio:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Selecteer sporen om te kopieren:" +msgstr "Selecteer sporen om te kopieren" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -686,9 +686,8 @@ msgid "Copy" msgstr "Kopiëren" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Niets Selecteren" +msgstr "Alles/niets selecteren" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -727,12 +726,10 @@ msgid "Replaced %d occurrence(s)." msgstr "%d voorgekomen waarde(s) vervangen." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d match." msgstr "%d overeenkomst(en) gevonden." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d matches." msgstr "%d overeenkomst(en) gevonden." @@ -742,7 +739,7 @@ msgstr "Hoofdlettergevoelig" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Whole Words" -msgstr "Hele Woorden" +msgstr "Hele woorden" #: editor/code_editor.cpp editor/rename_dialog.cpp msgid "Replace" @@ -754,13 +751,17 @@ msgstr "Alle Vervangen" #: editor/code_editor.cpp msgid "Selection Only" -msgstr "Alleen Selectie" +msgstr "Alleen selectie" #: editor/code_editor.cpp editor/plugins/script_text_editor.cpp #: editor/plugins/text_editor.cpp 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 @@ -787,35 +788,31 @@ msgstr "Regel- en kolomnummers." #: editor/connections_dialog.cpp msgid "Method in target node must be specified." -msgstr "Methode in doel Node moet gespecificeerd worden." +msgstr "Methode in doelknoop moet gespecificeerd worden." #: editor/connections_dialog.cpp msgid "" "Target method not found. Specify a valid method or attach a script to the " "target node." msgstr "" -"Doel methode niet gevonden. Specificeer een geldige methode of koppel een " -"script aan de doel Node." +"Doelmethode niet gevonden. Specificeer een geldige methode of koppel een " +"script aan de doelknoop." #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect to Node:" -msgstr "Verbind Aan Node:" +msgstr "Aan knoop verbinden:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Connect to Script:" -msgstr "Kan niet verbinden met host:" +msgstr "Met script verbinden:" #: editor/connections_dialog.cpp -#, fuzzy msgid "From Signal:" -msgstr "Signalen:" +msgstr "Vanuit signaal:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Scene does not contain any script." -msgstr "Node bevat geen geometrie." +msgstr "Scene bevat geen script." #: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp @@ -836,16 +833,19 @@ msgstr "Verwijderen" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "Extra Aanroep Argument Toevoegen:" +msgstr "Aanvullende aanroepparameter toevoegen:" #: editor/connections_dialog.cpp msgid "Extra Call Arguments:" -msgstr "Extra Aanroep Argumenten:" +msgstr "Aanroepparameters:" + +#: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Ontvangende methode:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Advanced" -msgstr "Uitlijnen opties" +msgstr "Geavanceerd" #: editor/connections_dialog.cpp msgid "Deferred" @@ -855,14 +855,16 @@ msgstr "Uitgesteld" msgid "" "Defers the signal, storing it in a queue and only firing it at idle time." msgstr "" +"Stelt het signaal uit, bewaart het in een wachtrij en activeert het pas op " +"een dood moment." #: editor/connections_dialog.cpp msgid "Oneshot" -msgstr "Eénschots" +msgstr "Eenmalig" #: editor/connections_dialog.cpp msgid "Disconnects the signal after its first emission." -msgstr "" +msgstr "Koppelt het signaal automatisch los na de eerste uitzending." #: editor/connections_dialog.cpp msgid "Cannot connect signal" @@ -897,29 +899,28 @@ msgstr "Verbind '%s' met '%s'" #: editor/connections_dialog.cpp msgid "Disconnect '%s' from '%s'" -msgstr "Ontkoppel '%s' van '%s'" +msgstr "'%s' loskoppelen van '%s'" #: editor/connections_dialog.cpp msgid "Disconnect all from signal: '%s'" -msgstr "Ontkoppel alles van signaal: '%s'" +msgstr "Alles van signaal '%s' loskoppelen" #: editor/connections_dialog.cpp msgid "Connect..." -msgstr "Verbind..." +msgstr "Verbinden..." #: editor/connections_dialog.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Disconnect" -msgstr "Losmaken" +msgstr "Loskoppelen" #: editor/connections_dialog.cpp msgid "Connect a Signal to a Method" -msgstr "Verbind een Signaal met een Methode" +msgstr "Verbind een signaal met een methode" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit Connection:" -msgstr "Verbinding bewerken: " +msgstr "Verbinding bewerken:" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" @@ -937,7 +938,7 @@ msgstr "" #: editor/connections_dialog.cpp msgid "Disconnect All" -msgstr "Ontkoppel Alles" +msgstr "Alles loskoppelen" #: editor/connections_dialog.cpp msgid "Edit..." @@ -945,7 +946,7 @@ msgstr "Bewerken..." #: editor/connections_dialog.cpp msgid "Go To Method" -msgstr "Ga Naar Methode" +msgstr "Naar methode springen" #: editor/create_dialog.cpp msgid "Change %s Type" @@ -957,7 +958,7 @@ msgstr "Wijzig" #: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Maak Nieuwe %s" +msgstr "%s opstellen" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -966,7 +967,7 @@ msgstr "Favorieten:" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp msgid "Recent:" -msgstr "Recente:" +msgstr "Onlangs:" #: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp #: editor/property_selector.cpp editor/quick_open.cpp @@ -990,29 +991,27 @@ msgstr "Omschrijving:" #: editor/dependency_editor.cpp msgid "Search Replacement For:" -msgstr "Zoek Vervanging Voor:" +msgstr "Vervanging zoeken voor:" #: editor/dependency_editor.cpp msgid "Dependencies For:" -msgstr "Afhankelijkheden Voor:" +msgstr "Afhankelijkheden voor:" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Scene '%s' is currently being edited.\n" "Changes will only take effect when reloaded." msgstr "" -"Scene '%s' wordt op dit moment gewijzigd.\n" -"Wijzigingen hebben geen effect tenzij de scene herladen worden." +"Scène '%s' wordt momenteel bewerkt.\n" +"Wijzigingen hebben pas na herladen effect." #: editor/dependency_editor.cpp -#, fuzzy msgid "" "Resource '%s' is in use.\n" "Changes will only take effect when reloaded." msgstr "" -"Resource '%s' is in gebruik.\n" -"Wijzigingen zullen effect hebben wanneer herladen." +"Bron '%s' is in gebruik.\n" +"Wijzigingen hebben pas na herladen effect." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -1024,7 +1023,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" @@ -1038,11 +1037,11 @@ msgstr "Repareer defecten" #: editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "Afhankelijkheden Editor" +msgstr "Afhankelijkhedeneditor" #: editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "Zoek Vervangende Resource:" +msgstr "Bronvervanging zoeken:" #: editor/dependency_editor.cpp editor/editor_file_dialog.cpp #: editor/editor_help_search.cpp editor/editor_node.cpp @@ -1056,14 +1055,13 @@ msgstr "Openen" #: editor/dependency_editor.cpp msgid "Owners Of:" -msgstr "Eigenaren Van:" +msgstr "Eigenaren van:" #: editor/dependency_editor.cpp -#, fuzzy msgid "Remove selected files from the project? (Can't be restored)" msgstr "" -"Verwijder geselecteerde bestanden van het project? (Kan niet ongedaan " -"worden.)" +"Geselecteerde bestanden uit het project verwijderen? (Kan niet ongedaan " +"gemaakt worden)" #: editor/dependency_editor.cpp msgid "" @@ -1071,25 +1069,25 @@ msgid "" "work.\n" "Remove them anyway? (no undo)" msgstr "" -"De bestanden die verwijderd worden zijn vereist door andere resources om ze " -"te laten werken.\n" -"Toch verwijderen? (Kan niet ongedaan worden.)" +"De bestanden die verwijderd worden zijn nodig om andere bronnen te laten " +"werken.\n" +"Toch verwijderen? (Kan niet ongedaan worden)" #: editor/dependency_editor.cpp msgid "Cannot remove:" -msgstr "Niet te verwijderen:" +msgstr "Kan niet verwijderd worden:" #: editor/dependency_editor.cpp msgid "Error loading:" -msgstr "Error bij het laden van:" +msgstr "Fout 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" -msgstr "Toch Openen" +msgstr "Toch openen" #: editor/dependency_editor.cpp msgid "Which action should be taken?" @@ -1097,24 +1095,23 @@ msgstr "Welke actie moet ondernomen worden?" #: editor/dependency_editor.cpp msgid "Fix Dependencies" -msgstr "Repareer Afhankelijkheden" +msgstr "Afhankelijkheden repareren" #: editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "Errors bij het laden!" +msgstr "Fouten bij het laden!" #: editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" -msgstr "%d item(s) permanent verwijderen? (Kan niet ongedaan worden!)" +msgstr "%d bestand(en) voorgoed verwijderen? (Kan niet ongedaan worden!)" #: editor/dependency_editor.cpp -#, fuzzy msgid "Show Dependencies" -msgstr "Afhankelijkheden" +msgstr "Afhankelijkheden tonen" #: editor/dependency_editor.cpp msgid "Orphan Resource Explorer" -msgstr "Wees Resource Verkenner" +msgstr "Weesbronnen bekijken" #: editor/dependency_editor.cpp editor/editor_audio_buses.cpp #: editor/editor_file_dialog.cpp editor/editor_node.cpp @@ -1126,19 +1123,19 @@ msgstr "Verwijder" #: editor/dependency_editor.cpp msgid "Owns" -msgstr "Eigenaar Van" +msgstr "In bezit" #: editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "Resources Zonder Expliciet Bezit:" +msgstr "Bronnen zonder expliciet bezit:" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" -msgstr "Wijzig Array Sleutel" +msgstr "Sleutel wijzigen" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Value" -msgstr "Wijzig Array Waarde" +msgstr "Waarde wijzigen" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" @@ -1158,7 +1155,7 @@ msgstr "Hoofdontwikkelaar" #: editor/editor_about.cpp msgid "Project Manager " -msgstr "Project Manager " +msgstr "Projectbeheer " #: editor/editor_about.cpp msgid "Developers" @@ -1201,22 +1198,20 @@ msgid "License" msgstr "Licentie" #: editor/editor_about.cpp -#, fuzzy msgid "Third-party Licenses" -msgstr "Derde partijslicentie" +msgstr "Licentie van derden" #: 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 " "is an exhaustive list of all such third-party components with their " "respective copyright statements and license terms." msgstr "" -"Godot Engine maakt gebruik van enkele gratis en open-source bibliotheken, " -"ontwikkeld door derden, die compatibel zijn met onze MIT licentie. Wat volgt " -"is een exhaustieve lijst van alle componenten van een derde partij met hun " -"respectievelijke copyrightberichten en licentietermen." +"Godot Engine maakt gebruik van een aantal gratis en open-source " +"bibliotheken, ontwikkeld door derden, die compatibel zijn met de MIT " +"licentie. Wat volgt is een uitputtende lijst van alle componenten van derde " +"partijen met hun respectievelijke copyrightberichten en licentietermen." #: editor/editor_about.cpp msgid "All Components" @@ -1231,7 +1226,6 @@ msgid "Licenses" msgstr "Licenties" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Error opening package file, not in ZIP format." msgstr "Fout bij het openen van het pakketbestand, geen zip-formaat." @@ -1246,7 +1240,7 @@ msgstr "Pakket succesvol geïnstalleerd!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Success!" -msgstr "Geslaagd!" +msgstr "Gelukt!" #: editor/editor_asset_installer.cpp editor/editor_node.cpp msgid "Install" @@ -1301,9 +1295,8 @@ msgid "Delete Bus Effect" msgstr "Verwijder audiobuseffect" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Drag & drop to rearrange." -msgstr "Audiobus, versleep om volgorde te veranderen." +msgstr "Versleep om volgorde te veranderen." #: editor/editor_audio_buses.cpp msgid "Solo" @@ -1376,7 +1369,7 @@ msgstr "Open Audio Bus Lay-out" #: editor/editor_audio_buses.cpp msgid "There is no '%s' file." -msgstr "" +msgstr "Het '%s' bestand bestaat niet." #: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp msgid "Layout" @@ -1391,7 +1384,6 @@ msgid "Add Bus" msgstr "Bus Toevoegen" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Add a new Audio Bus to this layout." msgstr "Voeg een nieuwe Audio Bus toe aan deze layout." @@ -1415,7 +1407,7 @@ msgstr "Sla deze audiobus layout op in een bestand." #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" -msgstr "Laad Standaard" +msgstr "Laad standaard" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." @@ -1434,26 +1426,20 @@ msgid "Valid characters:" msgstr "Geldige karakters:" #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Must not collide with an existing engine class name." -msgstr "Ongeldige naam. Moet niet botsen met een bestaande engine klasse naam." +msgstr "Mag niet conflicteren met bestaande engine klasse naam." #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Must not collide with an existing built-in type name." -msgstr "" -"Ongeldige naam. Mag niet botsen met een bestaande ingebouwde type naam." +msgstr "Mag niet conflicteren met een bestaande ingebouwde typenaam." #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Must not collide with an existing global constant name." -msgstr "" -"Ongeldige naam. Mag niet botsen met de naam van een bestaande globale " -"constante." +msgstr "Mag niet conflicteren met de naam van een bestaande globale constante." #: editor/editor_autoload_settings.cpp msgid "Keyword cannot be used as an autoload name." -msgstr "" +msgstr "Sleutelwoorden mogen niet gebruikt worden als autoload naam." #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" @@ -1469,11 +1455,11 @@ msgstr "AutoLoad-Globalen omschakelen" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" -msgstr "Verplaats Autoload" +msgstr "Autoload verplaatsen" #: editor/editor_autoload_settings.cpp msgid "Remove Autoload" -msgstr "Verwijder Autoload" +msgstr "Autoload verwijderen" #: editor/editor_autoload_settings.cpp msgid "Enable" @@ -1481,12 +1467,11 @@ msgstr "Inschakelen" #: editor/editor_autoload_settings.cpp msgid "Rearrange Autoloads" -msgstr "Herschik Autoloads" +msgstr "Autoloads opnieuw ordenen" #: editor/editor_autoload_settings.cpp editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid path." -msgstr "Ongeldig Pad." +msgstr "Ongeldig pad." #: editor/editor_autoload_settings.cpp editor/script_create_dialog.cpp msgid "File does not exist." @@ -1494,11 +1479,11 @@ msgstr "Bestand bestaat niet." #: editor/editor_autoload_settings.cpp msgid "Not in resource path." -msgstr "Niet in resource pad." +msgstr "Niet in bronpad." #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "AutoLoad Toevoegen" +msgstr "AutoLoad toevoegen" #: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp #: editor/editor_plugin_settings.cpp @@ -1509,10 +1494,11 @@ msgstr "Pad:" #: editor/editor_autoload_settings.cpp msgid "Node Name:" -msgstr "Node Naam:" +msgstr "Knoopnaam:" #: 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" @@ -1541,19 +1527,18 @@ msgid "[unsaved]" msgstr "[niet opgeslagen]" #: editor/editor_dir_dialog.cpp -#, fuzzy msgid "Please select a base directory first." -msgstr "Kies eerst een basisfolder" +msgstr "Kies eerst een basismap." #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" -msgstr "Kies een Map" +msgstr "Kies een map" #: 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 "Map Maken" +msgstr "Map maken" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp @@ -1588,14 +1573,16 @@ 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 "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." msgstr "" +"Doelplatform vereist 'ETC2' textuurcompressie voor GLES3. Schakel 'Import " +"Etc 2' in bij de Projectinstellingen." #: editor/editor_export.cpp msgid "" @@ -1604,6 +1591,10 @@ msgid "" "Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" +"Doelplatform vereist 'ETC' textuurcompressie zodat het stuurprogramma kan " +"terugvallen op GLES2.\n" +"Schakel 'Import Etc' in bij de Projectinstellingen, of schakel de optie " +"'Driver Fallback Enabled' uit." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1623,124 +1614,107 @@ msgstr "Template bestand niet gevonden:" #: editor/editor_export.cpp msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." -msgstr "" +msgstr "Bij 32-bit export mag de ingebouwde PCK niet groter zijn dan 4 GiB." #: editor/editor_feature_profile.cpp -#, fuzzy msgid "3D Editor" -msgstr "Verwerker" +msgstr "3D Editor" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Script Editor" -msgstr "Open Script Bewerker" +msgstr "Script Editor" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Asset Library" -msgstr "Open Asset Bibliotheek" +msgstr "Asset bibliotheek" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Scene Tree Editing" -msgstr "Scene Uitvoerinstellingen" +msgstr "Scene structuur bewerking" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Import Dock" -msgstr "Importeren" +msgstr "Importtabblad" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Node Dock" -msgstr "Verplaatsingsmodus" +msgstr "Knooptabblad" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "FileSystem and Import Docks" -msgstr "Bestandssysteem" +msgstr "Bestandssysteem- en Importtablad" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Erase profile '%s'? (no undo)" -msgstr "Alle vervangen (geen ongedaan maken)" +msgstr "Profiel '%s' verwijderen? (kan niet ongedaan gemaakt worden)" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" -msgstr "" +msgstr "Profiel moet een geldige bestandsnaam hebben en mag geen '.' bevatten" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Profile with this name already exists." -msgstr "Er bestaat al een bestand of map met deze naam." +msgstr "Er bestaat al een profiel met deze naam." #: editor/editor_feature_profile.cpp msgid "(Editor Disabled, Properties Disabled)" -msgstr "" +msgstr "(Editor uitgeschakeld, eigenschappen uitgeschakeld)" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "(Properties Disabled)" -msgstr "Alleen Eigenschappen" +msgstr "(Eigenschappen uitgeschakeld)" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "(Editor Disabled)" -msgstr "Uitgeschakeld" +msgstr "(Editor uitgeschakeld)" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Class Options:" -msgstr "Klassebeschrijving:" +msgstr "Klasse opties:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enable Contextual Editor" -msgstr "Open de volgende Editor" +msgstr "Open de Contextbewuste Editor" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Properties:" -msgstr "Eigenschappen:" +msgstr "Ingeschakelde Eigenschappen:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Features:" -msgstr "Kenmerken" +msgstr "Ingeschakelde Functionaliteit:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enabled Classes:" -msgstr "Zoek Klasses" +msgstr "Ingeschakelde Klassen:" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." -msgstr "" +msgstr "Bestandsformaat '%s' is ongeldig, het importeren is afgebroken." #: editor/editor_feature_profile.cpp msgid "" "Profile '%s' already exists. Remove it first before importing, import " "aborted." msgstr "" +"Profiel '%s' bestaat al. Verwijder het eerst vooraleer te importeren. " +"Importeren afgebroken." #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Error saving profile to path: '%s'." -msgstr "Error bij het laden van sjabloon '%s'" +msgstr "Error bij het opslaan van profiel naar pad: '%s'." #: editor/editor_feature_profile.cpp msgid "Unset" -msgstr "" +msgstr "Ongezet" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Current Profile:" -msgstr "Huidige Versie:" +msgstr "Huidig Profiel:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Make Current" -msgstr "Huidig:" +msgstr "Aktualiseren" #: editor/editor_feature_profile.cpp #: editor/plugins/animation_player_editor_plugin.cpp @@ -1751,50 +1725,47 @@ msgstr "Nieuw" #: editor/editor_feature_profile.cpp editor/editor_node.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "Importeren" +msgstr "Import" #: editor/editor_feature_profile.cpp editor/project_export.cpp msgid "Export" msgstr "Exporteren" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Available Profiles:" -msgstr "Beschikbare Nodes:" +msgstr "Beschikbare Profielen:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Class Options" -msgstr "Klassebeschrijving" +msgstr "Klasse-opties" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "New profile name:" -msgstr "Nieuwe naam:" +msgstr "Nieuwe profielnaam:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Erase Profile" -msgstr "Wis TileMap" +msgstr "Wis Profiel" + +#: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Godotfunctieprofiel" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Import Profile(s)" -msgstr "Geïmporteerd Project" +msgstr "Profiel(en) importeren" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Export Profile" -msgstr "Project Exporteren" +msgstr "Profiel exporteren" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Manage Editor Feature Profiles" -msgstr "Beheer Export Templates" +msgstr "Editor Profielen beheren" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select Current Folder" -msgstr "Selecteer Huidige Map" +msgstr "Huidige map selecteren" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1802,7 +1773,7 @@ msgstr "Bestand Bestaat, Overschrijven?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select This Folder" -msgstr "Selecteer deze map" +msgstr "Deze map selecteren" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" @@ -1814,13 +1785,12 @@ msgstr "Openen in Bestandsbeheer" #: editor/editor_file_dialog.cpp editor/editor_node.cpp #: editor/filesystem_dock.cpp editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" msgstr "Weergeven in Bestandsbeheer" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "New Folder..." -msgstr "Nieuwe Map..." +msgstr "Nieuwe map..." #: editor/editor_file_dialog.cpp #: editor/plugins/version_control_editor_plugin.cpp @@ -1845,11 +1815,11 @@ msgstr "Open Bestand(en)" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a Directory" -msgstr "Open een Map" +msgstr "Map openen" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a File or Directory" -msgstr "Open een Bestand of Map" +msgstr "Bestand of map openen" #: editor/editor_file_dialog.cpp editor/editor_node.cpp #: editor/editor_properties.cpp editor/inspector_dock.cpp @@ -1899,33 +1869,28 @@ msgid "Move Favorite Down" msgstr "Verplaats Favoriet Naar Beneden" #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to previous folder." -msgstr "Ga naar bovenliggende folder" +msgstr "Ga naar vorige map." #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to next folder." -msgstr "Ga naar bovenliggende folder" +msgstr "Ga naar de volgende map." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Go to parent folder." -msgstr "Ga naar bovenliggende folder" +msgstr "Ga naar de bovenliggende map." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Refresh files." -msgstr "Zoek bestanden" +msgstr "Ververs bestandslijst." #: editor/editor_file_dialog.cpp msgid "(Un)favorite current folder." msgstr "(On)favoriet huidige map." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Toggle the visibility of hidden files." -msgstr "Toggle Verborgen Bestanden" +msgstr "Maak verborgen bestanden (on)zichtbaar." #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." @@ -1962,10 +1927,12 @@ msgid "" "There are multiple importers for different types pointing to file %s, import " "aborted" msgstr "" +"Er zijn meerdere importers gevonden voor verschillende typen voor bestand " +"%s, import afgebroken" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" -msgstr "Bronnen (Her)Importeren" +msgstr "Bronnen (her)importeren" #: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp msgid "Top" @@ -1978,16 +1945,15 @@ msgstr "Klasse:" #: editor/editor_help.cpp editor/scene_tree_editor.cpp #: editor/script_create_dialog.cpp msgid "Inherits:" -msgstr "Erft:" +msgstr "Erft van:" #: editor/editor_help.cpp msgid "Inherited by:" msgstr "Geërfd door:" #: editor/editor_help.cpp -#, fuzzy msgid "Brief Description" -msgstr "Korte Beschrijving:" +msgstr "Korte Omschrijving" #: editor/editor_help.cpp msgid "Properties" @@ -2018,9 +1984,8 @@ msgid "Class Description" msgstr "Klassebeschrijving" #: editor/editor_help.cpp -#, fuzzy msgid "Online Tutorials" -msgstr "Online Documentatie:" +msgstr "Online Zelfstudie" #: editor/editor_help.cpp msgid "" @@ -2033,9 +1998,8 @@ msgstr "" "$color][url=$url2]een aan te vragen[/url][/color]." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "Eigenschap Beschrijving:" +msgstr "Eigenschap Beschrijvingen" #: editor/editor_help.cpp msgid "" @@ -2046,9 +2010,8 @@ msgstr "" "door [color=$color][url=$url]een toe te voegen[/url][/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "Methode Beschrijving:" +msgstr "Methode Beschrijvingen" #: editor/editor_help.cpp msgid "" @@ -2064,6 +2027,15 @@ msgid "Search Help" msgstr "Zoek Hulp" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Hoofdlettergevoelig" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Toon helpers" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Alles tonen" @@ -2088,19 +2060,40 @@ msgid "Properties Only" msgstr "Alleen Eigenschappen" #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "Eigenschappen" +msgstr "Alleen Thema Eigenschappen" #: editor/editor_help_search.cpp -#, fuzzy msgid "Member Type" -msgstr "Leden" +msgstr "Veld Type" #: editor/editor_help_search.cpp msgid "Class" msgstr "Klasse" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Methodes" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Signaal" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constante" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Eigenschap:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Thema Eigenschappen" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Eigenschap:" @@ -2129,11 +2122,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 @@ -2147,40 +2140,39 @@ msgstr "Start" #: editor/editor_network_profiler.cpp msgid "%s/s" -msgstr "" +msgstr "%s/s" #: editor/editor_network_profiler.cpp -#, fuzzy msgid "Down" -msgstr "Download" +msgstr "Omlaag" #: editor/editor_network_profiler.cpp msgid "Up" -msgstr "" +msgstr "Omhoog" #: editor/editor_network_profiler.cpp editor/editor_node.cpp msgid "Node" -msgstr "Knooppunt" +msgstr "Knoop" #: editor/editor_network_profiler.cpp msgid "Incoming RPC" -msgstr "" +msgstr "Inkomende RPC" #: editor/editor_network_profiler.cpp msgid "Incoming RSET" -msgstr "" +msgstr "Inkomende RSET" #: editor/editor_network_profiler.cpp msgid "Outgoing RPC" -msgstr "" +msgstr "Uitgaande RPC" #: editor/editor_network_profiler.cpp msgid "Outgoing RSET" -msgstr "" +msgstr "Uitgaande RSET" #: editor/editor_node.cpp editor/project_manager.cpp msgid "New Window" -msgstr "" +msgstr "Nieuw Venster" #: editor/editor_node.cpp msgid "Project export failed with error code %d." @@ -2188,7 +2180,7 @@ msgstr "Project exporteren faalt door foutcode %d." #: editor/editor_node.cpp msgid "Imported resources can't be saved." -msgstr "De geïmporteerde bronnen kunnen niet worden opgeslagen." +msgstr "Geïmporteerde bronnen kunnen niet opgeslagen worden." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: scene/gui/dialogs.cpp @@ -2197,20 +2189,19 @@ msgstr "Oké" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" -msgstr "Error bij het opslaan van resource!" +msgstr "Fout bij het opslaan van bron!" #: editor/editor_node.cpp -#, fuzzy msgid "" "This resource can't be saved because it does not belong to the edited scene. " "Make it unique first." msgstr "" -"Deze bron kan niet worden opgeslagen omdat het niet bij de bewerkte scene " -"behoort. Maak het eerst uniek." +"Deze hulpbron kan niet bewaard worden omdat ze geen deel uitmaakt van de " +"bewerkte scene. Maak ze eerst alleenstaand." #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Save Resource As..." -msgstr "Resource Opslaan Als..." +msgstr "Bron opslaan als..." #: editor/editor_node.cpp msgid "Can't open file for writing:" @@ -2218,7 +2209,7 @@ msgstr "Kan bestand niet openen om te schrijven:" #: editor/editor_node.cpp msgid "Requested file format unknown:" -msgstr "Opgevraagde bestandsformaat onbekend:" +msgstr "Opgevraagd bestandsformaat onbekend:" #: editor/editor_node.cpp msgid "Error while saving." @@ -2319,18 +2310,17 @@ msgid "" "Please read the documentation relevant to importing scenes to better " "understand this workflow." msgstr "" -"Dit bestand hoort bij een scene die geïmporteerd werd. Het is momenteel dus " -"onbewerkbaar. Lees de documentatie over scenes importeren om deze workflow " -"beter te begrijpen." +"Deze bron hoort bij een geïmporteerd scène en kan dus niet bewerkt worden.\n" +"Lees de documentatie over het importeren van scènes om dit proces beter te " +"begrijpen." #: editor/editor_node.cpp -#, fuzzy 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 "" -"Dit bestand hoort bij een scene die geïnstantieerd of overgeërfd werd.\n" -"Aanpassingen zullen niet worden bijgehouden bij het opslaan van de huidige " +"Dit bestand hoort bij een scene die geïnstantieerd of overgeërfd werd.\n" +"Aanpassingen zullen niet worden behouden bij het opslaan van de huidige " "scene." #: editor/editor_node.cpp @@ -2338,34 +2328,31 @@ msgid "" "This resource was imported, so it's not editable. Change its settings in the " "import panel and then re-import." msgstr "" -"Dit bestand werd geïmporteerd, dus het is niet bewerkbaar. Pas de " -"instellingen aan in het importeerpaneel en importeer het nadien opnieuw." +"Deze bron werd geïmporteerd en kan dus niet bewerkt worden. Pas de " +"instellingen aan in het importvenster en importeer het nadien opnieuw." #: editor/editor_node.cpp -#, fuzzy 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 "" -"Deze scene werd geïmporteerd, dus aanpassingen zullen niet worden " -"opgeslagen.\n" -"Instantieer het of erf het over om er aanpassingen aan te maken.\n" -"Lees de documentatie over scenes importeren om deze workflow beter te " -"begrijpen." +"Deze scene werd geïmporteerd, dus aanpassingen zullen niet worden behouden.\n" +"Door het te instantiëren of over te erven kunnen er wijzigingen worden " +"aangebracht.\n" +"Lees de documentatie met betrekking tot importeren van scenes om dit proces " +"beter te begrijpen." #: editor/editor_node.cpp -#, fuzzy 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 "" -"Dit bestand hoort bij een scene die geïmporteerd werd, dus het is niet " -"bewerkbaar.\n" -"Lees de documentatie over scenes importeren om deze workflow beter te " -"begrijpen." +"Dit is een object op afstand, dus aanpassingen zullen niet worden behouden.\n" +"Lees de documentatie met betrekking tot remote debugging om deze workflow " +"beter te begrijpen." #: editor/editor_node.cpp msgid "There is no defined scene to run." @@ -2388,9 +2375,8 @@ msgid "Open Base Scene" msgstr "Open Basisscene" #: editor/editor_node.cpp -#, fuzzy msgid "Quick Open..." -msgstr "Open Scene Snel..." +msgstr "Snel Openen..." #: editor/editor_node.cpp msgid "Quick Open Scene..." @@ -2409,13 +2395,12 @@ msgid "Save changes to '%s' before closing?" msgstr "Sla wijzigen aan '%s' op voor het afsluiten?" #: editor/editor_node.cpp -#, fuzzy msgid "Saved %s modified resource(s)." -msgstr "Mislukt om resource te laden." +msgstr "%s gewijzigde bron(nen) opgeslagen." #: editor/editor_node.cpp msgid "A root node is required to save the scene." -msgstr "Een hoofdknooppunt is vereist voor het opslaan van de scène." +msgstr "Een wortelknoop is nodig om de scène op te slaan." #: editor/editor_node.cpp msgid "Save Scene As..." @@ -2443,7 +2428,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" @@ -2484,7 +2469,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" @@ -2498,8 +2483,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 "" @@ -2518,9 +2502,8 @@ msgid "Close Scene" msgstr "Scene Sluiten" #: editor/editor_node.cpp -#, fuzzy msgid "Reopen Closed Scene" -msgstr "Scene Sluiten" +msgstr "Gesloten Scène Opnieuw Openen" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." @@ -2561,16 +2544,17 @@ 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 "" -"Scene '%s' werd automatisch geïmporteerd, dus ze kan niet aangepast worden.\n" -"Om aanpassingen te doen kan je een erfende scene aanmaken." +"Scène '%s' werd automatisch geïmporteerd en kan daarom niet aangepast " +"worden.\n" +"Om aanpassingen te doen kan je een afgeleide scène aanmaken." #: 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 "" -"Fout tijdens het laden van de scene, ze moet zich in het projectpad " -"bevinden. Gebruik 'Importeer' om de scene te openen en sla ze nadien ergens " +"Fout tijdens het laden van de scène, het moet zich in het projectpad " +"bevinden. Gebruik 'Importeer' om de scène te openen en sla het nadien ergens " "in het projectpad op." #: editor/editor_node.cpp @@ -2579,7 +2563,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 "" @@ -2626,23 +2610,20 @@ msgstr "Standaard" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" -msgstr "Toon in Bestandsbeheer" +msgstr "Weergeven in Bestandssysteem" #: editor/editor_node.cpp -#, fuzzy msgid "Play This Scene" -msgstr "Speel Scene" +msgstr "Speel deze scène af" #: editor/editor_node.cpp msgid "Close Tab" msgstr "Tabblad sluiten" #: editor/editor_node.cpp -#, fuzzy msgid "Undo Close Tab" -msgstr "Tabblad sluiten" +msgstr "Tabblad Sluiten Ongedaan Maken" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Close Other Tabs" @@ -2650,12 +2631,11 @@ msgstr "Sluit Andere Tabbladen" #: editor/editor_node.cpp msgid "Close Tabs to the Right" -msgstr "" +msgstr "Sluit de Tabbladen aan de Rechterkant" #: editor/editor_node.cpp -#, fuzzy msgid "Close All Tabs" -msgstr "Sluit Alles" +msgstr "Sluit Alle Tabbladen" #: editor/editor_node.cpp msgid "Switch Scene Tab" @@ -2675,7 +2655,7 @@ msgstr "nog %d bestand(en)" #: editor/editor_node.cpp msgid "Dock Position" -msgstr "Dock Positie" +msgstr "Tabbladpositie" #: editor/editor_node.cpp msgid "Distraction Free Mode" @@ -2698,9 +2678,8 @@ msgid "Go to previously opened scene." msgstr "Ga naar de vorige geopende scene." #: editor/editor_node.cpp -#, fuzzy msgid "Copy Text" -msgstr "Kopieer Pad" +msgstr "Tekst Kopiëren" #: editor/editor_node.cpp msgid "Next tab" @@ -2739,21 +2718,18 @@ msgid "Save Scene" msgstr "Scene Opslaan" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" -msgstr "Alle Scenes Opslaan" +msgstr "Alle Scènes Opslaan" #: editor/editor_node.cpp msgid "Convert To..." msgstr "Converteer Naar..." #: editor/editor_node.cpp -#, fuzzy msgid "MeshLibrary..." msgstr "MeshBibilotheek..." #: editor/editor_node.cpp -#, fuzzy msgid "TileSet..." msgstr "TileSet..." @@ -2773,52 +2749,48 @@ msgstr "Scene Herstellen" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "Diverse project of scene-brede gereedschappen." +msgstr "Overig project of scène-brede hulpmiddelen." -#: 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" #: editor/editor_node.cpp -#, fuzzy msgid "Project Settings..." -msgstr "Projectinstellingen" +msgstr "Projectinstellingen..." #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Version Control" -msgstr "Versie:" +msgstr "Versiebeheer" #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp msgid "Set Up Version Control" -msgstr "" +msgstr "Versiebeheer Instellen" #: editor/editor_node.cpp msgid "Shut Down Version Control" -msgstr "" +msgstr "Versiebeheer Afsluiten" #: editor/editor_node.cpp -#, fuzzy msgid "Export..." -msgstr "Exporteren" +msgstr "Exporteren..." #: editor/editor_node.cpp msgid "Install Android Build Template..." -msgstr "" +msgstr "Android Build-sjabloon Installeren ..." #: editor/editor_node.cpp -#, fuzzy msgid "Open Project Data Folder" -msgstr "Open de Project Manager?" +msgstr "Projectdatamap openen" #: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp msgid "Tools" -msgstr "Gereedschappen" +msgstr "Hulpmiddelen" #: editor/editor_node.cpp -#, fuzzy msgid "Orphan Resource Explorer..." -msgstr "Wees Resource Verkenner" +msgstr "Verweesde hulpbronnen verkenner..." #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2831,7 +2803,7 @@ msgstr "Debuggen" #: editor/editor_node.cpp msgid "Deploy with Remote Debug" -msgstr "Start met Debuggen op Afstand" +msgstr "Opstarten met debugging op afstand" #: editor/editor_node.cpp msgid "" @@ -2843,7 +2815,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "Kleine Deployatie over het Netwerk" +msgstr "Klein uitvoerbaar bestand opstarten met netwerk bestandsserver" #: editor/editor_node.cpp msgid "" @@ -2863,7 +2835,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Visible Collision Shapes" -msgstr "Collision Shapes Zichtbaar" +msgstr "Toon collision shapes" #: editor/editor_node.cpp msgid "" @@ -2918,59 +2890,52 @@ msgstr "" "efficiënter met het netwerk bestandssysteem." #: editor/editor_node.cpp editor/script_create_dialog.cpp -#, fuzzy msgid "Editor" -msgstr "Verwerker" +msgstr "Editor" #: editor/editor_node.cpp -#, fuzzy msgid "Editor Settings..." -msgstr "Editor Instellingen" +msgstr "Editor Instellingen..." #: editor/editor_node.cpp msgid "Editor Layout" msgstr "Editor Layout" #: editor/editor_node.cpp -#, fuzzy msgid "Take Screenshot" -msgstr "Klinkt logisch!" +msgstr "Schermafdruk Maken" #: editor/editor_node.cpp -#, fuzzy msgid "Screenshots are stored in the Editor Data/Settings Folder." -msgstr "Open Editor Data/Instellingen Map" +msgstr "Schermafbeeldingen worden bewaard in de map \"Editor Data/Settings\"." #: editor/editor_node.cpp msgid "Toggle Fullscreen" msgstr "Schakel Volledig Scherm" #: editor/editor_node.cpp -#, fuzzy msgid "Toggle System Console" -msgstr "Gesplitste modus omschakelen" +msgstr "Systeemconsole (on)zichtbaar maken" #: editor/editor_node.cpp msgid "Open Editor Data/Settings Folder" -msgstr "Open Editor Data/Instellingen Map" +msgstr "Editordata-/instellingenmap openen" #: editor/editor_node.cpp msgid "Open Editor Data Folder" -msgstr "Open Editor Data Map" +msgstr "Editordatamap openen" #: editor/editor_node.cpp msgid "Open Editor Settings Folder" -msgstr "Open Editor Instellingen Map" +msgstr "Editorinstellingenmap openen" #: editor/editor_node.cpp -#, fuzzy msgid "Manage Editor Features..." -msgstr "Beheer Export Templates" +msgstr "Editor-functionaliteiten Beheren..." #: editor/editor_node.cpp -#, fuzzy msgid "Manage Export Templates..." -msgstr "Beheer Export Templates" +msgstr "Export Sjablonen Beheren..." #: editor/editor_node.cpp editor/plugins/shader_editor_plugin.cpp msgid "Help" @@ -2992,7 +2957,7 @@ msgstr "Online Documentatie" #: editor/editor_node.cpp msgid "Q&A" -msgstr "Vraag en Antwoord" +msgstr "Vragen en antwoorden" #: editor/editor_node.cpp msgid "Issue Tracker" @@ -3015,8 +2980,8 @@ msgid "Play" msgstr "Speel" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pauzeer de scene" +msgid "Pause the scene execution for debugging." +msgstr "Pauzeer de uitvoering van de scène voor foutopsporing." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3028,19 +2993,19 @@ msgstr "Stop de scene." #: editor/editor_node.cpp msgid "Play the edited scene." -msgstr "Speel de bewerkte scene." +msgstr "Speel de bewerkte scène af." #: editor/editor_node.cpp msgid "Play Scene" -msgstr "Speel Scene" +msgstr "Speel scène" #: editor/editor_node.cpp msgid "Play custom scene" -msgstr "Speel aangepaste scene" +msgstr "Speel aangepaste scène af" #: editor/editor_node.cpp msgid "Play Custom Scene" -msgstr "Speel Aangepaste Scene" +msgstr "Speel aangepaste scène af" #: editor/editor_node.cpp msgid "Changing the video driver requires restarting the editor." @@ -3052,24 +3017,20 @@ msgid "Save & Restart" msgstr "Opslaan & Herstarten" #: editor/editor_node.cpp -#, fuzzy msgid "Spins when the editor window redraws." -msgstr "Draait wanneer het editor venster opnieuw ververst wordt!" +msgstr "Draait wanneer het editor venster wordt hertekend." #: editor/editor_node.cpp -#, fuzzy msgid "Update Continuously" -msgstr "Doorlopend" +msgstr "Continu Bijwerken" #: editor/editor_node.cpp -#, fuzzy msgid "Update When Changed" -msgstr "Update Veranderingen" +msgstr "Bijwerken indien gewijzigd" #: editor/editor_node.cpp -#, fuzzy msgid "Hide Update Spinner" -msgstr "Schakel Update Draaier Uit" +msgstr "Update spinner verbergen" #: editor/editor_node.cpp msgid "FileSystem" @@ -3085,7 +3046,7 @@ msgstr "Vergroot onderste paneel" #: editor/editor_node.cpp msgid "Output" -msgstr "Output" +msgstr "Uitvoer" #: editor/editor_node.cpp msgid "Don't Save" @@ -3094,11 +3055,12 @@ msgstr "Niet Opslaan" #: editor/editor_node.cpp msgid "Android build template is missing, please install relevant templates." msgstr "" +"Android build-sjabloon ontbreekt, gelieve de relevante sjablonen te " +"installeren." #: editor/editor_node.cpp -#, fuzzy msgid "Manage Templates" -msgstr "Beheer Export Templates" +msgstr "Sjablonen beheren" #: editor/editor_node.cpp msgid "" @@ -3110,6 +3072,13 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" +"Hiermee wordt je project ingesteld voor aangepaste Android-builds door de " +"bronsjabloon te installeren naar \"res://android/build\".\n" +"Je kan vervolgens wijzigingen toepassen en je eigen aangepaste APK maken bij " +"export (modules toevoegen, de AndroidManifest.xml aanpassen, enz.).\n" +"Houd er rekening mee dat om aangepaste builds te maken in plaats van vooraf " +"gebouwde APK's te gebruiken, de optie \"Use Custom Build\" moet ingeschakeld " +"zijn in de Android-export preset." #: editor/editor_node.cpp msgid "" @@ -3118,11 +3087,19 @@ msgid "" "Remove the \"res://android/build\" directory manually before attempting this " "operation again." msgstr "" +"De sjabloon voor Android-build is al in dit project geïnstalleerd en zal " +"niet overschreven worden.\n" +"Verwijder de map \"res://android/build\" handmatig voordat je deze bewerking " +"opnieuw probeert." #: editor/editor_node.cpp 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" @@ -3133,7 +3110,7 @@ msgstr "Bibliotheek Exporteren" #: editor/editor_node.cpp msgid "Merge With Existing" -msgstr "Samenvoegen Met Bestaande" +msgstr "Met bestaande samenvoegen" #: editor/editor_node.cpp msgid "Password:" @@ -3179,10 +3156,13 @@ msgstr "Open de volgende Editor" msgid "Open the previous Editor" msgstr "Open de vorige Editor" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Waarschuwing!" + #: editor/editor_path.cpp -#, fuzzy msgid "No sub-resources found." -msgstr "Geen oppervlakte bron gespecificeerd." +msgstr "Geen deel-hulpbronnen gevonden." #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" @@ -3193,9 +3173,8 @@ msgid "Thumbnail..." msgstr "Voorbeeld..." #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Main Script:" -msgstr "Omschrijving:" +msgstr "Hoofdscript:" #: editor/editor_plugin_settings.cpp msgid "Edit Plugin" @@ -3267,9 +3246,8 @@ msgid "Calls" msgstr "Aanroepen" #: editor/editor_properties.cpp -#, fuzzy msgid "Edit Text:" -msgstr "Bewerk Thema..." +msgstr "Tekst bewerken:" #: editor/editor_properties.cpp editor/script_create_dialog.cpp msgid "On" @@ -3308,9 +3286,9 @@ msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" -"Kan geen ViewportTexture creëren op bronnen die zijn opgeslagen als een " -"bestand.\n" -"Bron moet toebehoren aan een scène." +"Kan geen ViewportTexture maken op bronnen die als een bestand zijn " +"opgeslagen.\n" +"Bron moet aan een scène toebehoren." #: editor/editor_properties.cpp msgid "" @@ -3322,20 +3300,19 @@ msgstr "" "Kan geen ViewportTexture creëren op deze bron omdat deze niet is ingesteld " "als 'local to scene'.\n" "Schakel de 'local to scene' eigenschap op deze bron in (en op alle bronnen " -"die het bevat tot en met een knooppunt)." +"die het bevat tot een knoop)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" -msgstr "Kies een Aanzicht portaal" +msgstr "Beeldvenster kiezen" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New Script" msgstr "Nieuw Script" #: editor/editor_properties.cpp editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "Omschrijving:" +msgstr "Script uitbreiden" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New %s" @@ -3398,7 +3375,7 @@ msgid "" "Please add a runnable preset in the export menu." msgstr "" "Geen uitvoerbare export preset gevonden voor dit platform.\n" -"Voeg een uitvoerbare preset toe in her export menu." +"Voeg een uitvoerbare preset toe in het exportmenu." #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -3426,7 +3403,7 @@ msgstr "Ben je de '_run' methode vergeten?" #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" -msgstr "Selecteer Node(s) om te Importeren" +msgstr "Selecteer een of meer knopen om te importeren" #: editor/editor_sub_scene.cpp editor/project_manager.cpp msgid "Browse" @@ -3438,12 +3415,11 @@ msgstr "Scene Pad:" #: editor/editor_sub_scene.cpp msgid "Import From Node:" -msgstr "Importeer Vanuit Node:" +msgstr "Vanuit knoop importeren:" #: editor/export_template_manager.cpp -#, fuzzy msgid "Redownload" -msgstr "Opnieuw Downloaden" +msgstr "Opnieuw downloaden" #: editor/export_template_manager.cpp msgid "Uninstall" @@ -3461,6 +3437,7 @@ msgstr "Download" #: editor/export_template_manager.cpp msgid "Official export templates aren't available for development builds." msgstr "" +"Officiële export sjablonen zijn niet beschikbaar voor ontwikkel builds." #: editor/export_template_manager.cpp msgid "(Missing)" @@ -3500,15 +3477,24 @@ msgstr "Export Sjablonen Uitpakken" #: editor/export_template_manager.cpp msgid "Importing:" -msgstr "Aan Het Importeren:" +msgstr "Bezit met importeren:" + +#: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Error bij het maken van het signatuur object." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" #: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." msgstr "" -"Geen download links gevonden voor deze versie. Directe download is alleen " -"beschikbaar voor officiele uitgaven." +"Geen downloadlinks gevonden voor deze versie. Directe download is alleen " +"beschikbaar voor officiële uitgaven." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3531,7 +3517,7 @@ msgstr "Aanvraag Mislukt." #: editor/export_template_manager.cpp msgid "Redirect Loop." -msgstr "Redirectlus." +msgstr "Blijft omleiden." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3540,26 +3526,23 @@ msgstr "Mislukt:" #: editor/export_template_manager.cpp msgid "Download Complete." -msgstr "Download Voltooid." +msgstr "Download voltooid." #: editor/export_template_manager.cpp -#, fuzzy msgid "Cannot remove temporary file:" -msgstr "Kan thema niet opslaan in bestand:" +msgstr "Kan het tijdelijke bestand niet verwijderen:" #: editor/export_template_manager.cpp -#, fuzzy msgid "" "Templates installation failed.\n" "The problematic templates archives can be found at '%s'." msgstr "" -"Installatie van templates mislukt. De problematische template archieven " -"kunnen gevonden worden op '%s'." +"Installatie van sjablonen mislukt.\n" +"De problematische sjabloon-archieven kunnen gevonden worden op '%s'." #: editor/export_template_manager.cpp -#, fuzzy msgid "Error requesting URL:" -msgstr "Fout bij het opvragen van een URL: " +msgstr "Fout bij het opvragen van de URL:" #: editor/export_template_manager.cpp msgid "Connecting to Mirror..." @@ -3567,7 +3550,7 @@ msgstr "Verbinden met Mirror..." #: editor/export_template_manager.cpp msgid "Disconnected" -msgstr "Verbinding Verbroken" +msgstr "Verbinding verbroken" #: editor/export_template_manager.cpp msgid "Resolving" @@ -3597,7 +3580,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" @@ -3608,9 +3591,8 @@ msgid "SSL Handshake Error" msgstr "SSL Handshake Foutmelding" #: editor/export_template_manager.cpp -#, fuzzy msgid "Uncompressing Android Build Sources" -msgstr "Bronnen aan het uitpakken" +msgstr "Android build-sjablonen aan het uitpakken" #: editor/export_template_manager.cpp msgid "Current Version:" @@ -3629,11 +3611,14 @@ msgid "Remove Template" msgstr "Verwijder Sjabloon" #: editor/export_template_manager.cpp -#, fuzzy 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" @@ -3652,12 +3637,12 @@ msgstr "Favorieten" #: editor/filesystem_dock.cpp msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"Status: Importeren van bestand mislukt. Repareer het bestand en importeer " -"opnieuw handmatig." +"Status: Bestandsimport mislukt. Repareer het bestand en importeer opnieuw " +"handmatig." #: editor/filesystem_dock.cpp msgid "Cannot move/rename resources root." -msgstr "Kan de hoofdmap voor resources niet verplaatsen of hernoemen." +msgstr "Kan de hoofdmap voor bronnen niet verplaatsen of hernoemen." #: editor/filesystem_dock.cpp msgid "Cannot move a folder into itself." @@ -3680,9 +3665,8 @@ msgid "No name provided." msgstr "Geen naam opgegeven." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Provided name contains invalid characters." -msgstr "De opgegeven naam bevat ongeldige tekens" +msgstr "De opgegeven naam bevat ongeldige tekens." #: editor/filesystem_dock.cpp msgid "A file or folder with this name already exists." @@ -3694,7 +3678,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:" @@ -3709,26 +3693,26 @@ msgid "Duplicating folder:" msgstr "Folder dupliceren:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "New Inherited Scene" -msgstr "Nieuwe Geërfde Scene..." +msgstr "Nieuwe overgeërfde scene" + +#: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Instellen als hoofdscène" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scenes" -msgstr "Scene Openen" +msgstr "Scènes openen" #: editor/filesystem_dock.cpp msgid "Instance" msgstr "Instantie" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to Favorites" msgstr "Aan favorieten toevoegen" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from Favorites" msgstr "Uit favorieten verwijderen" @@ -3753,9 +3737,8 @@ msgid "Move To..." msgstr "Verplaats Naar..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "New Scene..." -msgstr "Nieuwe Scene" +msgstr "Nieuwe scène..." #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "New Script..." @@ -3763,7 +3746,7 @@ msgstr "Nieuw Script..." #: editor/filesystem_dock.cpp msgid "New Resource..." -msgstr "Nieuwe Hulpbron..." +msgstr "Nieuwe bron..." #: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp #: editor/script_editor_debugger.cpp @@ -3783,23 +3766,20 @@ msgid "Rename" msgstr "Hernoemen" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Previous Folder/File" -msgstr "Vorige Folder" +msgstr "Vorig(e) map/bestand" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Next Folder/File" -msgstr "Volgende Folder" +msgstr "Volgend(e) map/bestand" #: editor/filesystem_dock.cpp msgid "Re-Scan Filesystem" msgstr "Bestandssysteem Opnieuw Scannen" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle Split Mode" -msgstr "Gesplitste modus omschakelen" +msgstr "Split-modus in-/uitschakelen" #: editor/filesystem_dock.cpp msgid "Search files" @@ -3826,27 +3806,24 @@ msgid "Overwrite" msgstr "Overschrijven" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Create Scene" -msgstr "Creëer vanuit Scene" +msgstr "Scène maken" #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "Create Script" msgstr "Creëer Script" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Find in Files" -msgstr "Vind Tegel" +msgstr "In bestanden zoeken" #: editor/find_in_files.cpp msgid "Find:" msgstr "Zoeken:" #: editor/find_in_files.cpp -#, fuzzy msgid "Folder:" -msgstr "Map Maken" +msgstr "Map:" #: editor/find_in_files.cpp msgid "Filters:" @@ -3857,6 +3834,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 @@ -3888,9 +3867,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" @@ -3909,21 +3887,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" @@ -3938,12 +3913,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" @@ -3951,52 +3925,52 @@ msgstr "Groepen beheren" #: editor/import/resource_importer_scene.cpp msgid "Import as Single Scene" -msgstr "Importeer als Enkele Scene" +msgstr "Importeer als enkele scène" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Animations" -msgstr "Importeren met Gescheiden Animaties" +msgstr "Importeren met afzonderlijke animaties" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials" -msgstr "Importeren met Gescheiden Materialen" +msgstr "Importeren met afzonderlijke materialen" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects" -msgstr "Importeren met Gescheiden Objecten" +msgstr "Importeren met afzonderlijke objecten" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials" -msgstr "Importeren met Gescheiden Objecten+Materialen" +msgstr "Importeren met afzonderlijke objecten+materialen" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Animations" -msgstr "Importeren met Gescheiden Objecten+Animaties" +msgstr "Importeren met afzonderlijke objecten+animaties" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials+Animations" -msgstr "Importeren met Gescheiden Materialen+Animaties" +msgstr "Importeren met afzonderlijke materialen+animaties" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials+Animations" -msgstr "Importeren met Gescheiden Objecten+Materialen+Animaties" +msgstr "Importeren met afzonderlijke objecten+materialen+animaties" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes" -msgstr "Importeren als Meerdere Scenes" +msgstr "Importeren als meerdere scènes" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes+Materials" -msgstr "Importeren als Meerdere Scenes+Materialen" +msgstr "Importeren als meerdere scènes+materialen" #: editor/import/resource_importer_scene.cpp #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Import Scene" -msgstr "Importeer Scene" +msgstr "Scène importeren" #: editor/import/resource_importer_scene.cpp msgid "Importing Scene..." -msgstr "Scene Importeren..." +msgstr "Scène wordt geïmporteerd..." #: editor/import/resource_importer_scene.cpp msgid "Generating Lightmaps" @@ -4040,44 +4014,42 @@ msgstr " Bestanden" #: editor/import_dock.cpp msgid "Import As:" -msgstr "Importereen Als:" +msgstr "Importeer als:" #: editor/import_dock.cpp -#, fuzzy msgid "Preset" -msgstr "Voorinstelling" +msgstr "Voorinstellingen" #: editor/import_dock.cpp msgid "Reimport" -msgstr "Herimporteer" +msgstr "Opnieuw importeren" #: editor/import_dock.cpp msgid "Save scenes, re-import and restart" -msgstr "Sla scènes op, her-importeer en start opnieuw op" +msgstr "Opnieuw importeren en herstarten (alle scènes worden opgeslagen)" #: 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 type van een geïmporteerd bestand veranderen vereist dat de editor " +"herstart wordt." #: editor/import_dock.cpp msgid "" "WARNING: Assets exist that use this resource, they may stop loading properly." msgstr "" -"WAARSCHUWING: Er bestaan Assets die gebruikmaken van deze bron, hierdoor " +"WAARSCHUWING: Er bestaan assets die gebruikmaken van deze bron, hierdoor " "kunnen deze mogelijk niet worden geladen." #: editor/inspector_dock.cpp msgid "Failed to load resource." -msgstr "Mislukt om resource te laden." +msgstr "Bron laden mislukt." #: 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" @@ -4096,11 +4068,11 @@ msgstr "Plak Parameters" #: editor/inspector_dock.cpp msgid "Edit Resource Clipboard" -msgstr "Hulpbron in klembord bewerken" +msgstr "Bron in klembord bewerken" #: editor/inspector_dock.cpp msgid "Copy Resource" -msgstr "Kopieer Bron" +msgstr "Bron kopiëren" #: editor/inspector_dock.cpp msgid "Make Built-In" @@ -4124,7 +4096,7 @@ msgstr "Laad een bestaande bron van de schijf en bewerk het." #: editor/inspector_dock.cpp msgid "Save the currently edited resource." -msgstr "De bewerkte bron opslaan." +msgstr "De zojuist bewerkte bron opslaan." #: editor/inspector_dock.cpp msgid "Go to the previous edited object in history." @@ -4152,12 +4124,11 @@ msgstr "Wijzigingen kunnen verloren gaan!" #: editor/multi_node_edit.cpp msgid "MultiNode Set" -msgstr "MultiNode Set" +msgstr "MultiNode zetten" #: 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." +msgstr "Selecteer één knoop om zijn signalen groepen aan te passen." #: editor/plugin_config_dialog.cpp msgid "Edit a Plugin" @@ -4246,19 +4217,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 "Knooppunt bewegen" #: 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 @@ -4269,24 +4237,21 @@ 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" -msgstr "Verplaats BlendSpace1D knooppunt" +msgstr "Verplaats BlendSpace1D-knooppunt" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4297,8 +4262,8 @@ msgid "" "Activate to enable playback, check node warnings if activation fails." msgstr "" "AnimationTree is niet actief.\n" -"Activeer om te kunnen afspelen, bekijk node waarschuwingen indien activatie " -"mislukt." +"Activeer om te kunnen afspelen, let op waarschuwingen in de knoop indien " +"activatie mislukt." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4313,7 +4278,7 @@ msgstr "Selecteer en verplaats punten, maak punten aan met RMK." #: 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 "Schakel automatisch uitlijnen en rasterweergave in." +msgstr "Kleven inschakelen en raster weergeven." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4334,34 +4299,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." @@ -4369,12 +4328,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." @@ -4394,29 +4352,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." +msgstr "Uitvoerknoop kan niet worden toegevoegd aan de overgangsboom." #: 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." @@ -4426,42 +4381,35 @@ 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 -#, fuzzy msgid "Delete Node(s)" -msgstr "Verwijder knooppunt(en)" +msgstr "Knoop/knopen 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." @@ -4473,19 +4421,29 @@ msgstr "Animatiespelerpad is ongeldig, spoornamen konden niet worden gevonden." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "" "Animation player has no valid root node path, so unable to retrieve track " "names." msgstr "" -"Animatiespeler heeft geen geldig pad voor de wortelknoop, spoornamen konden " -"niet worden gevonden." +"Animatiespeler heeft geen geldig pad naar de wortelknoop, waardoor de " +"spoornamen niet gevonden konden worden." + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Animatieclips" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Audioclips" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +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 @@ -4498,9 +4456,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" @@ -4521,7 +4478,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 @@ -4542,17 +4499,16 @@ msgid "Rename Animation" msgstr "Animatie Hernoemen" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Blend Next Changed" 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" -msgstr "Laad Animatie" +msgstr "Animatie laden" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" @@ -4564,7 +4520,7 @@ msgstr "Geen animatie om te kopiëren!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "No animation resource on clipboard!" -msgstr "Geen animatie hulpbron op klembord!" +msgstr "Geen animatiebron op klembord!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" @@ -4604,11 +4560,11 @@ msgstr "Animatie positie (in seconden)." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Scale animation playback globally for the node." -msgstr "Schaal het afspelen van animaties globaal voor de Node." +msgstr "Schaal het afspelen van animaties globaal voor de knoop." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" -msgstr "Animatie Tools" +msgstr "Animatiehulpmiddelen" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4620,9 +4576,8 @@ msgid "Edit Transitions..." msgstr "Bewerk overgangen..." #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Open in Inspector" -msgstr "In Inspecteur openen" +msgstr "Openen in de Inspecteur" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -4637,9 +4592,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" @@ -4687,22 +4641,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):" @@ -4713,19 +4667,22 @@ msgid "Cross-Animation Blend Times" msgstr "Cross-animatie mixtijden" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Move Node" -msgstr "Verplaatsingsmodus" +msgstr "Knoop verplaatsen" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Overgang: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Voeg vertaling toe" #: editor/plugins/animation_state_machine_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Add Node" -msgstr "Node Toevoegen" +msgstr "Knoop toevoegen" #: editor/plugins/animation_state_machine_editor.cpp msgid "End" @@ -4748,28 +4705,24 @@ msgid "Travel" msgstr "Verplaats" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Start and end nodes are needed for a sub-transition." -msgstr "Start- en eindknopen zijn nodig voor een sub-overgang" +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 afspeelbron ingesteld op pad: %s." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Removed" -msgstr "Verwijderd:" +msgstr "Knoop 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)" -msgstr "Stel in als Start Node (Autoplay)" +msgstr "Stel in als startknoop (automatisch afspelen)" #: editor/plugins/animation_state_machine_editor.cpp msgid "" @@ -4807,6 +4760,10 @@ msgstr "Stel eindanimatie in. Dit is handig voor sub-transities." msgid "Transition: " msgstr "Overgang: " +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "Afspeelmodus:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4902,49 +4859,47 @@ msgstr "Animatie boom is ongeldig." #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Animation Node" -msgstr "Animatie Node" +msgstr "Animatieknoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "OneShot Node" -msgstr "OneShot Node" +msgstr "Eenmalige-oproepknoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp -#, fuzzy msgid "Mix Node" -msgstr "Meng Node" +msgstr "Overgangsknoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend2 Node" -msgstr "Blend2 Node" +msgstr "2-Overgangsknoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend3 Node" -msgstr "Blend3 Node" +msgstr "3-Overgangsknoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend4 Node" -msgstr "Blend4 Node" +msgstr "4-Overgangsknoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeScale Node" -msgstr "TimeScale Node" +msgstr "Tijdschaalknoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "TimeSeek Node" -msgstr "TimeSeek Node" +msgstr "TimeSeek-knoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp -#, fuzzy msgid "Transition Node" msgstr "Overgangsknoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Import Animations..." -msgstr "Importeer Animaties..." +msgstr "Animaties importeren..." #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Edit Node Filters" -msgstr "Wijzig Node Filters" +msgstr "Wijzig knoopfilters" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Filters..." @@ -4976,44 +4931,39 @@ msgstr "Kan hostname niet herleiden:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, return code:" -msgstr "Aanvraag mislukt, retourcode:" +msgstr "Aanvraag mislukt, statuscode:" #: 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." +msgstr "Blijft omleiden." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed, timeout" -msgstr "Aanvraag mislukt, retourcode:" +msgstr "Aanvraag mislukt, tijdslimiet" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "Tijd" +msgstr "Tijdslimiet." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." -msgstr "Slechte download hash, ervan uitgaand dat met het bestand is geknoeid." +msgstr "Slechte downloadhash, bestand kan gemanipuleerd zijn." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Expected:" @@ -5052,9 +5002,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" @@ -5062,13 +5011,37 @@ msgstr "Probeer opnieuw" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download Error" -msgstr "Download Fout" +msgstr "Downloadfout" #: editor/plugins/asset_library_editor_plugin.cpp 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" @@ -5090,17 +5063,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:" @@ -5116,9 +5087,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" @@ -5129,7 +5099,6 @@ msgid "Testing" msgstr "Testen" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Loading..." msgstr "Laden..." @@ -5158,8 +5127,8 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" -"Creëren van lichtmap afbeeldingen mislukt, zorg ervoor dat het pad " -"schrijfbaar is." +"Maken van lichtmap afbeeldingen mislukt, zorg ervoor dat het pad " +"beschrijfbaar is." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" @@ -5172,7 +5141,7 @@ msgstr "Voorbeeld" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "Configureer Snap" +msgstr "Kleven instellen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Grid Offset:" @@ -5183,6 +5152,14 @@ msgid "Grid Step:" msgstr "Raster Stap:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "Primaire Lijn Elke:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "stappen" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Rotatie Verplaatsing:" @@ -5191,37 +5168,34 @@ msgid "Rotation Step:" msgstr "Rotatie Stap:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy +msgid "Scale Step:" +msgstr "Schaal stap:" + +#: editor/plugins/canvas_item_editor_plugin.cpp 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" @@ -5250,24 +5224,90 @@ 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." -msgstr "" -"Vooraf ingestelde waardes voor de ankers en marges van een Control Node." +msgstr "Ingebouwde ankerpunten en marges van een Control-knoop." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." msgstr "" +"Als dit aan staat, verandert het verplaatsen van Control-knopen 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" @@ -5283,46 +5323,57 @@ msgstr "Wijzig Ankers" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy +msgid "" +"Game Camera Override\n" +"Overrides game camera with editor viewport camera." +msgstr "" +"Spelcamera overschrijven\n" +"Overschrijft de spelcamera met beeldvenstercamera van de editor." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +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 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 -#, fuzzy msgid "Create Custom Bone(s) from Node(s)" -msgstr "Maak één of meerdere op maat gemaakte botten van één of meerdere Nodes" +msgstr "Stel bot(ten) op uit knoop/knopen" #: 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" @@ -5330,7 +5381,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 "" @@ -5390,8 +5441,8 @@ msgid "" "Show a list of all objects at the position clicked\n" "(same as Alt+RMB in select mode)." msgstr "" -"Toon een lijst van alle objecten op de geklikte positie\n" -"(Hetzelfde als Alt+RMB in de selectiemodus)." +"Toon een lijst van alle objecten op de aangeklikte positie\n" +"(hetzelfde als Alt+RMK in de selectiemodus)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." @@ -5402,91 +5453,84 @@ msgid "Pan Mode" msgstr "Verschuif Modus" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Ruler Mode" -msgstr "Uitvoermodus:" +msgstr "Meetlatmodus" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Automatisch schikken omschakelen." +msgstr "Slim Kleven omschakelen." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Gebruik Uitlijnen" +msgstr "Slim Kleven gebruiken" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Automatisch schikken omschakelen." +msgstr "'Kleven aan raster' omschakelen." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "Rooster Snap" +msgstr "Kleven aan raster" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" -msgstr "Opties voor automatisch schikken" +msgstr "Kleefinstellingen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" -msgstr "Gebruik Rotatie Snap" +msgstr "In stappen draaien" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "In stappen verschalen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "Snap Relatief" +msgstr "Relatief kleven" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "Gebruik Pixel Uitlijnen" +msgstr "Aan pixelraster kleven" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Smart Snapping" -msgstr "Slim Uitlijnen" +msgstr "Slim Kleven" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap..." -msgstr "Configureer Snap..." +msgstr "Kleefinstellingen..." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Parent" -msgstr "Snap naar ouder" +msgstr "Aan ouder kleven" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Anchor" -msgstr "Snap naar node anker" +msgstr "Aan knoopanker kleven" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Sides" -msgstr "Uitlijnen naar node zijden" +msgstr "Aan knoopzijden kleven" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Center" -msgstr "Schik automatisch aan middelpunt knoop" +msgstr "Aan knoopmiddelpunt kleven" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Other Nodes" -msgstr "Uitlijnen naar andere nodes" +msgstr "Aan andere knopen kleven" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Guides" -msgstr "Op hulplijnen uitlijnen" +msgstr "Aan gidslijnen kleven" #: 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 @@ -5516,12 +5560,11 @@ msgstr "Laat Botten Zien" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Custom Bone(s) from Node(s)" -msgstr "Maak één of meerdere op maat gemaakte botten van één of meerdere Nodes" +msgstr "Stel bot(ten) op uit knoop/knopen" #: 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 @@ -5529,9 +5572,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" @@ -5543,7 +5585,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" @@ -5551,7 +5593,7 @@ msgstr "Toon Oorsprongspunt" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Viewport" -msgstr "Toon Aanzicht Portaal" +msgstr "Toon beeldvenster" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" @@ -5567,50 +5609,44 @@ 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 -#, fuzzy msgid "Translation mask for inserting keys." -msgstr "Vertaalmasker voor het invoegen van sleutels." +msgstr "Vertaalomslag voor het invoegen van sleutels." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotation mask for inserting keys." msgstr "Rotatiemasker voor het invoegen van sleutels." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy 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 "Sleutel invoegen (gebaseerd op masker)." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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 invoegen als objecten verschuiven, geroteerd of " +"geschaald worden (op basis van masker).\n" "Sleutels worden alleen toegevoegd aan bestaande tracks, er worden geen " "nieuwe tracks aangemaakt.\n" -"Sleutels moeten voor de eerste keer handmatig worden ingevoerd." +"De eerste keer moeten sleutels handmatig ingevoerd worden." #: 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)" -msgstr "Voeg Sleutel in (Bestaande Banen)" +msgstr "Sleutel invoegen (in bestaande banen)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" @@ -5618,7 +5654,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" @@ -5629,9 +5665,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" @@ -5643,12 +5678,12 @@ msgstr "%s aan het toevoegen..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Cannot instantiate multiple nodes without root." -msgstr "Kan niet meerdere knooppunten instantiëren zonder een wortel." +msgstr "Instantiëren van meerdere knopen onmogelijk zonder wortelknoop." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" -msgstr "Creëer Node" +msgstr "Knoop maken" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp @@ -5656,7 +5691,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" @@ -5665,13 +5699,12 @@ msgid "" "Drag & drop + Shift : Add node as sibling\n" "Drag & drop + Alt : Change node type" msgstr "" -"Sleep & laat los + Shift : voeg knooppunt toe als kind\n" -"Sleep & laat los + Alt : Verander node type" +"Sleep & laat los + Shift : voeg knoop op gelijk niveau toe.\n" +"Sleep & laat los + Alt : verander knooptype" #: 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" @@ -5688,20 +5721,19 @@ msgstr "Stel Handgreep In" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Load Emission Mask" -msgstr "Laad Emissie Masker" +msgstr "Emissiemasker laden" #: 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 -#, 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 @@ -5717,7 +5749,7 @@ msgstr "Telling Gegenereerde Punten:" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Emission Mask" -msgstr "Emissie Masker" +msgstr "Emissiemasker" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -5727,40 +5759,37 @@ msgstr "Neem uit Pixel" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Emission Colors" -msgstr "Kleuren Emissie" +msgstr "Emissiekleuren" #: 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 msgid "Create Emission Points From Mesh" -msgstr "Creëer Emissie Punten Vanuit Mesh" +msgstr "Produceer emissiepunten vanuit mesh" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Node" -msgstr "Creëer Emissie Punten Vanuit Node" +msgstr "Produceer emissiepunt vanuit knoop" #: 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" @@ -5776,30 +5805,25 @@ msgstr "Wijzig Curve Raaklijn" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Curve Preset" -msgstr "Laad Curve Preset" +msgstr "Curvevoorinstelling laden" #: 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" @@ -5816,14 +5840,12 @@ 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 -#, fuzzy msgid "Bake GI Probe" -msgstr "Bak GI Probe" +msgstr "Maak een GI (Global Illumination) Probe" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" @@ -5850,36 +5872,32 @@ msgid "Mesh is empty!" msgstr "Mesh is leeg!" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Static Trimesh Body" -msgstr "Creëer Statisch Trimesh Lichaam" +msgstr "Creëer een statisch tri-mesh lichaam" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Static Convex Body" -msgstr "Creëer Statisch Convex Lichaam" +msgstr "Creëer een statisch convex lichaam" #: editor/plugins/mesh_instance_editor_plugin.cpp 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." @@ -5890,7 +5908,6 @@ msgid "UV Unwrap failed, mesh may not be manifold?" msgstr "UV Uitpakken is gefaald, wellicht is de mesh niet manifold?" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "No mesh to debug." msgstr "Geen mesh om te debuggen." @@ -5901,7 +5918,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!" @@ -5932,14 +5949,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" @@ -5954,30 +5969,44 @@ msgid "Unwrap UV2 for Lightmap/AO" msgstr "Pak UV2 uit voor Lichtmap/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Outline Mesh" -msgstr "Creëer Omlijning Mesh" +msgstr "Creëer een contour mesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" -msgstr "Grootte Omlijning:" +msgstr "Omlijningsgrootte:" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" #: 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 "" +"Update from existing scene?:\n" +"%s" +msgstr "Update Vanuit Scene" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "Mesh Bibilotheek" #: 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" -msgstr "Importeer Vanuit Scene" +msgstr "Vanuit scène importeren" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Update from Scene" @@ -5985,11 +6014,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)." @@ -5997,15 +6026,15 @@ 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)." -msgstr "Mesh bron is ongeldig (bevat geen Mesh resource)." +msgstr "Meshbron is ongeldig (bevat geen Mesh)." #: 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,7 +6045,6 @@ msgid "Surface source is invalid (no geometry)." msgstr "Oppervlakte bron is ongeldig (geen geometrie)." #: editor/plugins/multimesh_editor_plugin.cpp -#, fuzzy msgid "Surface source is invalid (no faces)." msgstr "Oppervlakte bron is ongeldig (geen vlakken)." @@ -6083,14 +6111,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" @@ -6107,26 +6133,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" @@ -6134,7 +6157,7 @@ msgstr "Creëer Emitter" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Points:" -msgstr "Emissie Punten:" +msgstr "Emissiepunten:" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points" @@ -6150,7 +6173,7 @@ msgstr "Volume" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Source: " -msgstr "Emissie Bron: " +msgstr "Emissiebron: " #: editor/plugins/particles_editor_plugin.cpp msgid "A processor material of type 'ParticlesMaterial' is required." @@ -6186,9 +6209,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" @@ -6218,9 +6240,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 @@ -6255,7 +6276,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 @@ -6299,19 +6320,19 @@ msgid "Split Segment (in curve)" msgstr "Splits Segment (in curve)" #: editor/plugins/physical_bone_plugin.cpp -#, fuzzy msgid "Move Joint" msgstr "Beweeg Punt" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "The skeleton property of the Polygon2D does not point to a Skeleton2D node" -msgstr "De Polygon2D skeleteigenschap wijst niet naar een Skeleton2D Node" +msgstr "" +"De eigenschap \"Skeleton\" van de Polygon2D wijst niet naar een Skeleton2D-" +"knoop" #: 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 "" @@ -6323,62 +6344,55 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" -msgstr "Creëer UV Map" +msgstr "Maak UV-Map" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Polygon 2D has internal vertices, so it can no longer be edited in the " "viewport." msgstr "" -"Polygon2D heeft interne hoekpunten waardoor deze niet meer bewerkt kan " -"worden via de viewport." +"Polygon2D heeft interne hoekpunten, het kan niet meer bewerkt worden via het " +"beeldvenster." #: 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" +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" @@ -6389,24 +6403,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" @@ -6460,91 +6470,84 @@ msgstr "Radius:" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon->UV" -msgstr "Polygon->UV" +msgstr "Polygon→UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UV->Polygon" -msgstr "UV->Polygon" +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" -msgstr "Snap" +msgstr "Uitlijnen" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Enable Snap" -msgstr "Zet Snap Aan" +msgstr "Aan raster kleven" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid" -msgstr "Grid" +msgstr "Raster" #: editor/plugins/polygon_2d_editor_plugin.cpp 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!" -msgstr "ERROR: Laden van bron mislukt!" +msgstr "FOUT: Laden van bron mislukt!" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Add Resource" -msgstr "Voeg Bron Toe" +msgstr "Bron toevoegen" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Rename Resource" -msgstr "Naam Wijzigen Bron" +msgstr "Bronnaam wijzigen" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Delete Resource" -msgstr "Verwijder Bron" +msgstr "Bron verwijderen" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Resource clipboard is empty!" -msgstr "Bronnen klembord is leeg!" +msgstr "Bronklembord is leeg!" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" -msgstr "Plak Bron" +msgstr "Bron plakken" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/scene_tree_editor.cpp @@ -6565,82 +6568,90 @@ msgstr "Openen in Editor" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Load Resource" -msgstr "Laad Bron" +msgstr "Bron laden" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ResourcePreloader" -msgstr "BronnenPrelader" +msgstr "Bronnen-voorlader" #: editor/plugins/root_motion_editor_plugin.cpp 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 "Kan bestand niet laden uit:" #: 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 "Kan het uit te voeren script niet verkrijgen." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "Script herladen mislukt, zie de console voor foutmeldingen." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "Script is niet in 'tool' modus en kan niet uitgevoerd worden." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"Om dit script uit te voeren moet het erven van EditorScript en in 'tool' " +"modus gezet worden." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" -msgstr "Importeer Thema" +msgstr "Thema importeren" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -6655,9 +6666,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 Klassereferentie" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -6670,18 +6680,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" @@ -6712,14 +6720,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" @@ -6727,16 +6733,15 @@ msgstr "Alles Opslaan" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" -msgstr "Zacht Herladen Script" +msgstr "Script zachtjes herladen" #: editor/plugins/script_editor_plugin.cpp 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" @@ -6748,13 +6753,12 @@ msgid "Theme" msgstr "Thema" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Import Theme..." -msgstr "Importeer Thema" +msgstr "Thema importeren..." #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" -msgstr "Herlaad Thema" +msgstr "Thema herladen" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme" @@ -6770,11 +6774,7 @@ msgstr "Sluit Docs" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp msgid "Run" -msgstr "Starten" - -#: editor/plugins/script_editor_plugin.cpp -msgid "Toggle Scripts Panel" -msgstr "Schakel Scripten Paneel" +msgstr "Opstarten" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" @@ -6798,24 +6798,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 -#, fuzzy msgid "Request Docs" -msgstr "Verzoek Documenten" +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." @@ -6844,7 +6840,7 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp msgid "Reload" -msgstr "Herlaad" +msgstr "Herladen" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp @@ -6856,62 +6852,55 @@ 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" - -#: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Signalen" +msgstr "Bron" #: 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' naar knoop '%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 +#: 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." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" -msgstr "Voltooi Symbool" +msgstr "Symbool opzoeken" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -6940,17 +6929,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 @@ -6960,7 +6948,7 @@ msgstr "Knippen" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Select All" -msgstr "Alles Selecteren" +msgstr "Alles selecteren" #: editor/plugins/script_text_editor.cpp msgid "Delete Line" @@ -6999,21 +6987,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" @@ -7022,41 +7007,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..." @@ -7070,47 +7048,40 @@ 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" msgstr "Shader" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "This skeleton has no bones, create some children Bone2D nodes." -msgstr "" -"Dit skelet heeft geen botten, creëer enkele Bone2D-knooppunten als kinderen." +msgstr "Dit skelet heeft geen botten, maak een aantal Bone2D-knopen als kind." #: 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" +msgstr "Botten in rusthouding zetten" #: 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)" @@ -7118,27 +7089,23 @@ msgstr "Maak Rustpose (van Botten)" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Bones to Rest Pose" -msgstr "Stel Botten in op Rustpose" +msgstr "Botten in rusthouding zetten" #: 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 -#, fuzzy msgid "Skeleton" -msgstr "Singleton" +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" @@ -7189,9 +7156,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" @@ -7219,7 +7185,7 @@ msgstr "Teken Aanroepingen" #: editor/plugins/spatial_editor_plugin.cpp msgid "Vertices" -msgstr "Vertices" +msgstr "Hoekpunten" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View." @@ -7266,14 +7232,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." @@ -7281,12 +7245,11 @@ msgstr "Geen ouder om kind aan te instantiëren." #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "This operation requires a single selected node." -msgstr "Deze bewerking vereist één geselecteerde knooppunt." +msgstr "Deze bewerking vereist één geselecteerde knoop." #: 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" @@ -7318,7 +7281,7 @@ msgstr "Bekijk Informatie" #: editor/plugins/spatial_editor_plugin.cpp msgid "View FPS" -msgstr "Bekijk FPS" +msgstr "Beeldsnelheid bekijken" #: editor/plugins/spatial_editor_plugin.cpp msgid "Half Resolution" @@ -7329,14 +7292,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" @@ -7367,7 +7328,6 @@ msgid "Freelook Speed Modifier" msgstr "Vrijekijk Snelheid Modificator" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" msgstr "Vrijekijk Snelheid Modificator" @@ -7378,26 +7338,23 @@ msgid "" msgstr "" "Opmerking: De weergegeven FPS waarde is de verversingssnelheid van de " "editor.\n" -"Deze waarde kan niet worden gebruikt als een betrouwbare indicatie van in-" -"game performance." +"Het is geen betrouwbare indicatie voor werkelijke spelprestaties." #: 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 "Knopen aan vloer kleven" #: 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 kleven." #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7410,13 +7367,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 "Kleven gebruiken" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -7443,9 +7399,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" @@ -7460,9 +7415,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 @@ -7470,9 +7424,8 @@ msgid "Transform" msgstr "Transformatie" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Object to Floor" -msgstr "Lijn object uit op vloer" +msgstr "Object aan vloer kleven" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." @@ -7480,32 +7433,31 @@ msgstr "Transformatie Dialoog..." #: editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" -msgstr "1 Aanzicht Portaal" +msgstr "1 beeldvenster" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports" -msgstr "2 Aanzicht Portalen" +msgstr "2 beeldvensters" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" -msgstr "2 Aanzicht Portalen (Alt)" +msgstr "2 beeldvensters (alt)" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports" -msgstr "3 Aanzicht Portalen" +msgstr "3 beeldvensters" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" -msgstr "3 Aanzicht Portalen (Alt)" +msgstr "3 beeldvensters (alt)" #: editor/plugins/spatial_editor_plugin.cpp msgid "4 Viewports" -msgstr "4 Aanzicht Portalen" +msgstr "4 beeldvensters" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Gizmos" -msgstr "Bekijk Gizmos" +msgstr "Gizmos" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" @@ -7517,29 +7469,28 @@ 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" -msgstr "Snap instellingen" +msgstr "Kleefinstellingen" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "Verplaats Snap:" +msgstr "Kleefafstand:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "Draai Snap (grad.):" +msgstr "Draaihoek (graden):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "Verander Grootte van Snap (%):" +msgstr "Schaal-stapgrootte (%):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" -msgstr "Instellingen Aanzicht Portaal" +msgstr "Beeldvensterinstellingen" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective FOV (deg.):" @@ -7586,122 +7537,130 @@ 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 "Mesh2D Preview" +msgstr "Creëren van Mesh Previews" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" -msgstr "Creëer Poly" +msgstr "Creëer Polygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" #: 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 "CollisionPolygon2D Preview" +msgstr "Creëer CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" -msgstr "Creëer Occluder Polygon" +msgstr "Creëer LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Creëer LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp 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." -msgstr "Kan geen Sprite converteren dat animatieframes gebruikt om te meshen." +msgstr "" +"Een sprite die animatiebeelden gebruikt kan niet naar een Mesh omgezet " +"worden." #: editor/plugins/sprite_editor_plugin.cpp 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 frames 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" msgstr "Voeg Frame toe" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Bron laden mislukt." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" -msgstr "FOUT: Kan frame benodigdheden niet laden!" +msgstr "FOUT: Kan framebron niet laden!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Resource clipboard is empty or not a texture!" -msgstr "Klembord van bron is leeg of het is niet een textuur!" +msgstr "Klembord voor bronnen is leeg of bevat geen textuur!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Paste Frame" @@ -7713,26 +7672,23 @@ msgstr "Lege Toevoegen" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation FPS" -msgstr "Verander Animatie FPS" +msgstr "Animatiesnelheid veranderen" #: editor/plugins/sprite_frames_editor_plugin.cpp 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):" @@ -7743,18 +7699,16 @@ msgid "Loop" msgstr "Lus" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Animation Frames:" -msgstr "Animatie Frames" +msgstr "Animatiebeelden:" #: 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)" @@ -7773,38 +7727,32 @@ msgid "Move (After)" msgstr "Verplaats (Hierna)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Select Frames" -msgstr "Selecteer een Node" +msgstr "Frames selecteren" #: 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 "Frames toevoegen uit spritesheet" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "SpriteFrames" -msgstr "Sprite-Frames" +msgstr "Spritebeelden" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Set Region Rect" -msgstr "Stel Gebied Vierkant in" +msgstr "Stel een rechthoekig oppervlak in" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Margin" @@ -7812,21 +7760,20 @@ msgstr "Stel Marge In" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" -msgstr "Snap Modus:" +msgstr "Kleefmodus:" #: 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" -msgstr "Pixel Snap" +msgstr "Aan pixels kleven" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Snap" -msgstr "Rooster Snap" +msgstr "Aan raster kleven" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Auto Slice" @@ -7845,9 +7792,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" @@ -7866,9 +7812,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." @@ -7895,23 +7840,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" @@ -7931,21 +7873,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" @@ -7956,9 +7896,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" @@ -7973,13 +7912,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" @@ -7990,6 +7928,7 @@ msgid "Data Type:" msgstr "Data Type:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Icoon" @@ -8006,23 +7945,21 @@ msgid "Color" msgstr "Kleur" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Constante" +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" @@ -8054,21 +7991,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" @@ -8079,35 +8014,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." @@ -8126,62 +8058,92 @@ msgid "Merge from Scene" msgstr "Vervoeg vanuit Scene" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy +msgid "New Single Tile" +msgstr "Nieuwe enkele tegel" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Nieuwe Autotegel" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Nieuwe atlas" + +#: 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." msgstr "Selecteer de vorige shape, subtegel of Tegel." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy +msgid "Region" +msgstr "Bereik" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Botsing" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Occlusie" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Navigatie" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Bitmasker" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Prioriteit" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Z Index" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" -msgstr "Uitvoermodus:" +msgstr "Regio Modus" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Collision Mode" -msgstr "Interpolatiemodus" +msgstr "Collision modus" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Occlusion Mode" -msgstr "Bewerk Poly" +msgstr "Occlusion Mode" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Navigation Mode" -msgstr "Creëer Navigatie Mesh" +msgstr "Navigatie Modus" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Bitmask Mode" -msgstr "Rotatiemodus" +msgstr "Bitmaskermodus" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Priority Mode" -msgstr "Exporteer Modus:" +msgstr "Prioriteit Modus" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy 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." @@ -8189,31 +8151,27 @@ msgstr "Bitmasker kopiëren." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Paste bitmask." -msgstr "Animatie plakken." +msgstr "Bitmasker plakken." #: editor/plugins/tile_set_editor_plugin.cpp 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." msgstr "Nieuwe veelhoek aanmaken." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Keep polygon inside region Rect." -msgstr "Hou veelhoek in Rect bereik" +msgstr "Hou de veelhoek binnen een rechthoekig bereik." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." -msgstr "" -"Activeer automatisch schikken en toon raster (configureerbaar in de " -"Inspecteur)." +msgstr "Kleven inschakelen en raster weergeven (instellen in Inspecteur)." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" @@ -8223,11 +8181,13 @@ 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." msgstr "" -"Geselecteerde Texture verwijderen? Alle tegels die ervan gebruikt maken " +"Geselecteerde Texture verwijderen? Alle tegels die ervan gebruikmaakten " "zullen verwijderd worden." #: editor/plugins/tile_set_editor_plugin.cpp @@ -8243,48 +8203,48 @@ 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." msgstr "%s bestand(en) niet toegevoegd omdat deze al op de lijst staan." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Drag handles to edit Rect.\n" "Click on another Tile to edit it." msgstr "" -"Versleep handles om Vierkant te bewerken.\n" -"Klik op een andere Tegel om deze te bewerken." +"Sleep de hendels om de rechthoek aan te passen.\n" +"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 "" @@ -8297,208 +8257,190 @@ 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 "Tegelbitmasker bewerken" #: 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 "Tegelbitmasker plakken" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "Wis Tegel Bitmasker" +msgstr "Bitmasker 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" +msgid "Make Convex" +msgstr "Creëer Polygon Convex" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Concave" +msgstr "Creëer Polygon Concave" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Collision Polygon" +msgstr "Creëer Collision Polygon" + +#: editor/plugins/tile_set_editor_plugin.cpp 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 @@ -8508,515 +8450,506 @@ 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 "Uitvoer toevoegen" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar" -msgstr "Schaal:" +msgstr "Scalair" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector" -msgstr "Inspecteur" +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 "Uitvoerpoort toevoegen" #: 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 "Uitvoerpoorttype veranderen" #: 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 "Uitvoerpoortnaam veranderen" #: 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 "Uitvoerpoort verwijderen" #: 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 -#, fuzzy 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 "VisualShader-knoop toevoegen" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Duplicate Nodes" -msgstr "Dupliceer Graaf Knooppunt(en)" +msgstr "Knopen dupliceren" #: editor/plugins/visual_shader_editor_plugin.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Paste Nodes" -msgstr "Plak Nodes" +msgstr "Knopen plakken" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Delete Nodes" -msgstr "Alles Selecteren" +msgstr "VisualShader-knoop/knopen verwijderen" #: 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 -#, fuzzy msgid "Create Shader Node" -msgstr "Creëer Node" +msgstr "Shader-knoop maken" #: 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 -msgid "HardLight operator" -msgstr "" +msgid "HardLight 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 "" +"Geeft de booleaanse 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 "" +"Geeft 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 "" +"Geeft het booleaanse 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 "" +"Geeft het booleaanse 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 "" +"Geeft een geassocieerde vector als de gegeven booleaanse waarde waar of " +"onwaar is." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated scalar if the provided boolean value is true or false." msgstr "" +"Geeft een geassocieerde scalar als de gegeven booleaanse waarde waar of " +"onwaar 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 "" +"Geeft het booleaanse 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 shadermodi." #: 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' invoerparameter voor vertex en fragment shadermodi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment and light shader modes." -msgstr "" +msgstr "'%s' invoerparameter voor fragment en light shadermodi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment shader mode." -msgstr "" +msgstr "'%s' invoerparameter voor fragment-shadermodus." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for light shader mode." -msgstr "" +msgstr "'%s' invoerparameter voor light-shader modus." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex shader mode." -msgstr "" +msgstr "'%s' invoer parameter voor vertex-shadermodus." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader mode." -msgstr "" +msgstr "'%s' invoerparameter voor vertex en fragment shadermodus." #: 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 "Geeft de absolute waarde van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-cosine of the parameter." -msgstr "" +msgstr "Geeft de arc-cosinus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic cosine of the parameter." -msgstr "" +msgstr "Geeft de omgekeerde cosinus hyperbolicus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-sine of the parameter." -msgstr "" +msgstr "Geeft de arcsinus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic sine of the parameter." -msgstr "" +msgstr "Geeft de inverse sinus hyperbolicus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameter." -msgstr "" +msgstr "Geeft de arctangens van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameters." -msgstr "" +msgstr "Geeft de arctangens van de parameters." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic tangent of the parameter." -msgstr "" +msgstr "Geeft de inverse tangens 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 "Geeft de cosinus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic cosine of the parameter." -msgstr "" +msgstr "Geeft 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 "Geeft de inverse van de wortel 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 "Geeft de grootste van twee waardes." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the lesser of two values." -msgstr "" +msgstr "Geeft de kleinste van twee waardes." #: 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 "Geeft 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 "" +"Geeft 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 "Geeft de sinus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic sine of the parameter." -msgstr "" +msgstr "Geeft de sinus hyperbolicus van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the square root of the parameter." -msgstr "" +msgstr "Geeft de vierkantswortel van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9026,6 +8959,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"SmoothStep functie( scalar(zijde0), scalar(zijde1), scalar(x) ).\n" +"\n" +"Geeft 0.0 als 'x' kleiner dan 'zijde0' en 1.0 als x groter dan 'zijde1'. " +"Anders wordt de waarde geïnterpoleerd tussen 0.0 en 1.0 middels Hermite-" +"polynomen." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9033,76 +8971,73 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Stapfunctie( scalar(zijde), scalar(x) ).\n" +"\n" +"Geeft 0.0 als 'x' kleiner dan 'zijde' anders 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the tangent of the parameter." -msgstr "" +msgstr "Geeft de tangens van de parameter." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic tangent of the parameter." -msgstr "" +msgstr "Geeft 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 "Geeft 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 "" @@ -9114,74 +9049,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 "Geeft 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 "" @@ -9190,40 +9128,48 @@ 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 "" +"Geeft de vector met dezelfde richting als de referentievector. De functie " +"bevat drie vectorparameters: N, de oriëntatievector, I, de incidentvector en " +"Nref, de referentievector. Als het inproduct van I en Nref kleiner dan nul " +"is, is de terugkeerwaarde N, anders -N." #: 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 "" +msgstr "Geeft de reflectievector (a: invalshoek vector, b : normaalvector)." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the vector that points in the direction of refraction." msgstr "" +"Geeft de vector met dezelfde richting als de referentievector. De functie " +"bevat drie vectorparameters: N, de oriëntatievector, I, de invalsvector en " +"Nref, de referentie vector. Als het inproduct van I en Nref kleiner dan nul " +"is, resulteert waarde N. Anders wordt -N geresulteerd." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9233,6 +9179,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"Gladde stapfunctie ( vector(zijde0), vector(zijde1), vector(x) ).\n" +"\n" +"Geeft 0.0 als 'x' kleiner dan 'zijde0' en 1.0 als 'x' groter dan 'zijde1'. " +"Anders word de waarde geïnterpoleerd tussen 0.0 en 1.0 met behulp van " +"Hermite polynomen." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9242,6 +9193,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 "" @@ -9249,6 +9205,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 "" @@ -9256,36 +9215,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 "Geeft 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 "" @@ -9293,84 +9253,112 @@ 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 in- 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 "" +"Geeft de verminderingswaarde gebaseerd op het inproduct van de normaalvector " +"van het oppervlak en de kijkrichting van de camera (bijbehorende invoer moet " +"doorgeven worden)." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" +"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 "(Alleen voor fragment/light-modus) Scalaire afgeleide functie." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Vector derivative function." -msgstr "" +msgstr "(Alleen voor fragment/lightmodus) 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 "VisualShader-modus 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?" @@ -9397,19 +9385,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:" @@ -9424,9 +9409,16 @@ msgid "Add..." msgstr "Toevoegen..." #: editor/project_export.cpp -#, fuzzy +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 msgid "Export Path" -msgstr "Project Exporteren" +msgstr "Export Pad" #: editor/project_export.cpp msgid "Resources" @@ -9450,25 +9442,23 @@ msgstr "Exporteer Modus:" #: editor/project_export.cpp msgid "Resources to export:" -msgstr "Bronnen te exporteren:" +msgstr "Bronnen om te exporteren:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filters voor het exporteren van bestanden dat geen bron zijn (scheiden met " -"een komma, bijv.: *.json, *.txt)" +"Filters om bestanden en mappen die geen hulpbron zijn te exporteren\n" +"(door komma's gescheiden, bijv.: *.json, *.txt, docs/*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filters voor het uitsluiten van bestanden van het project (scheiden met een " -"komma, bijv.: *.json, *.txt)" +"Filters om bestanden uit te sluiten van het project\n" +"(scheiden met een komma, bijv.: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9479,8 +9469,12 @@ msgid "Make Patch" msgstr "Maak Patch" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Pakket Bestand" + +#: editor/project_export.cpp msgid "Features" -msgstr "Kenmerken" +msgstr "Functionaliteiten" #: editor/project_export.cpp msgid "Custom (comma-separated):" @@ -9491,14 +9485,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" @@ -9525,14 +9517,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:" @@ -9559,9 +9557,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." @@ -9573,16 +9570,15 @@ msgstr "Nieuw spelproject" #: editor/project_manager.cpp msgid "Imported Project" -msgstr "Geïmporteerd 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." -msgstr "Kon map niet creëren." +msgstr "Kon map niet aanmaken." #: editor/project_manager.cpp msgid "There is already a folder in this path with the specified name." @@ -9617,13 +9613,12 @@ msgid "The following files failed extraction from package:" msgstr "De volgende bestanden konden niet worden uitgepakt:" #: editor/project_manager.cpp -#, fuzzy msgid "Rename Project" -msgstr "Hernoem Functie" +msgstr "Project hernoemen" #: editor/project_manager.cpp msgid "Import Existing Project" -msgstr "Importeer bestaand project" +msgstr "Bestaand project importeren" #: editor/project_manager.cpp msgid "Import & Edit" @@ -9634,9 +9629,8 @@ msgid "Create New Project" msgstr "Creëer Nieuw Project" #: editor/project_manager.cpp -#, fuzzy msgid "Create & Edit" -msgstr "Creëer Node" +msgstr "Creëer en bewerk" #: editor/project_manager.cpp msgid "Install Project:" @@ -9674,9 +9668,9 @@ msgid "" "Not recommended for web games" msgstr "" "Hogere beeldkwaliteit\n" -"Alle features beschikbaar\n" +"Alle functionaliteiten beschikbaar\n" "Incompatibel met verouderde hardware\n" -"Niet aanbevolen voor web gebaseerde games" +"Niet aanbevolen voor webgebaseerde spellen" #: editor/project_manager.cpp msgid "OpenGL ES 2.0" @@ -9690,9 +9684,9 @@ msgid "" "Recommended for web games" msgstr "" "Lagere beeldkwaliteit\n" -"Sommige features zijn niet beschikbaar\n" +"Sommige functionaliteiten zijn niet beschikbaar\n" "Werkt op bijna alle hardware\n" -"Aanbevolen voor web gebaseerde games" +"Aanbevolen voor webgebaseerde spellen" #: editor/project_manager.cpp msgid "Renderer can be changed later, but scenes may need to be adjusted." @@ -9705,25 +9699,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" @@ -9746,7 +9737,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" @@ -9775,7 +9765,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 " @@ -9794,60 +9783,61 @@ 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 -#, fuzzy msgid "" "Remove %d projects from the list?\n" "The project folders' contents won't be modified." msgstr "" -"Project uit de lijst verwijderen? (Inhoud van map wordt niet gewijzigd)" +"%d projecten uit de lijst verwijderen?\n" +"De inhoud van de projectmappen wordt niet geraakt." #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove this project from the list?\n" "The project folder's contents won't be modified." msgstr "" -"Project uit de lijst verwijderen? (Inhoud van map wordt niet gewijzigd)" +"Project uit de lijst verwijderen?\n" +"De inhoud van de projectmap wordt niet geraakt." #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove all missing projects from the list?\n" "The project folders' contents won't be modified." msgstr "" -"Project uit de lijst verwijderen? (Inhoud van map wordt niet gewijzigd)" +"Alle ontbrekende projecten uit de lijst verwijderen?\n" +"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 -#, fuzzy msgid "" "Are you sure to scan %s folders for existing Godot projects?\n" "This could take a while." msgstr "" -"U staat op het punt om %s folders te scannen voor bestaande Godot projecten. " -"Akkoord?" +"Wil je %s mappen doorzoeken naar bestaande Godot projecten?\n" +"Dit kan een tijdje duren." #: 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" @@ -9855,33 +9845,29 @@ msgstr "Scannen" #: editor/project_manager.cpp msgid "Select a Folder to Scan" -msgstr "Selecteer een map om te scannen" +msgstr "Selecteer een map om te doorzoeken" #: editor/project_manager.cpp 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?" @@ -9914,9 +9900,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" @@ -9931,27 +9916,14 @@ 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" msgstr "Apparaat" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Druk op een toets..." @@ -9980,24 +9952,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:" @@ -10012,9 +9980,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" @@ -10026,7 +9993,7 @@ msgstr "Event Toevoegen" #: editor/project_settings_editor.cpp msgid "Button" -msgstr "Knop" +msgstr "Button (Knop)" #: editor/project_settings_editor.cpp msgid "Left Button." @@ -10049,9 +10016,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!" @@ -10066,9 +10032,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 "" @@ -10091,9 +10056,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" @@ -10109,25 +10073,23 @@ msgstr "Verwijder vertaling" #: editor/project_settings_editor.cpp msgid "Add Remapped Path" -msgstr "Voeg Remapped Path toe" +msgstr "Bronpadomleiding toevoegen" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Resource Remap Add Remap" -msgstr "Bron Remap Toevoegen" +msgstr "Bronomleiding toevoegen" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Change Resource Remap Language" -msgstr "Wijzig Bron Remap Taal" +msgstr "Taal van bronomleiding wijzigen" #: editor/project_settings_editor.cpp msgid "Remove Resource Remap" -msgstr "Verwijder Bron Remap" +msgstr "Bronomleiding verwijderen" #: editor/project_settings_editor.cpp msgid "Remove Resource Remap Option" -msgstr "Verwijder Bron Remap Optie" +msgstr "Bronomleidingsoptie verwijderen" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter" @@ -10150,26 +10112,24 @@ 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 "Invoertoewijzing" #: editor/project_settings_editor.cpp msgid "Action:" msgstr "Action:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Action" -msgstr "Verplaats Actie" +msgstr "Actie" #: editor/project_settings_editor.cpp msgid "Deadzone" -msgstr "Deadzone" +msgstr "Dode zone" #: editor/project_settings_editor.cpp msgid "Device:" @@ -10193,44 +10153,39 @@ msgstr "Vertalingen:" #: editor/project_settings_editor.cpp msgid "Remaps" -msgstr "Remaps" +msgstr "Omleidingen" #: editor/project_settings_editor.cpp msgid "Resources:" msgstr "Bronnen:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Remaps by Locale:" -msgstr "Remaps door Locale:" +msgstr "Omleidingen per lokalisatie:" #: editor/project_settings_editor.cpp msgid "Locale" -msgstr "Locale" +msgstr "Localisatie" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Locales Filter" -msgstr "Lokalen 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 "Alleen geselecteerde talen tonen" #: 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" @@ -10250,11 +10205,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..." @@ -10269,18 +10224,16 @@ msgid "Assign" msgstr "Toewijzen" #: editor/property_editor.cpp -#, fuzzy msgid "Select Node" -msgstr "Alles Selecteren" +msgstr "Knoop selecteren" #: 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 "Knoop kiezen" #: editor/property_editor.cpp msgid "Bit %d, val %d." @@ -10299,9 +10252,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" @@ -10312,37 +10264,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 "Knoopnaam" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" -msgstr "Naam van primaire Node, indien beschikbaar" +msgstr "Naam van bovenliggende knoop, indien beschikbaar" #: editor/rename_dialog.cpp -#, fuzzy msgid "Node type" -msgstr "Vind Node Type" +msgstr "Knooptype" #: 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 "Wortelknoopnaam" #: editor/rename_dialog.cpp msgid "" @@ -10357,23 +10304,22 @@ msgid "Per Level counter" msgstr "Per Niveau teller" #: editor/rename_dialog.cpp -#, fuzzy msgid "If set the counter restarts for each group of child nodes" msgstr "" -"Herstart de teller voor iedere groep van secundaire Nodes indien ingesteld" +"Indien ingesteld: herstart de teller voor iedere groep van onderliggende " +"knopen" #: editor/rename_dialog.cpp 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" -msgstr "Hoeveelheid waarmee de teller incrementeert voor iedere Node" +msgstr "Hoeveelheid waarmee de teller voor iedere knoop opgehoogd wordt" #: editor/rename_dialog.cpp msgid "Padding" @@ -10385,12 +10331,11 @@ msgid "" "Missing digits are padded with leading zeros." msgstr "" "Minimum aantal nummers voor de teller.\n" -"Missende nummers worden opgevuld met nullen." +"Missende cijfers worden met voorloopnullen opgevuld." #: editor/rename_dialog.cpp -#, fuzzy msgid "Regular Expressions" -msgstr "Verander Expressie" +msgstr "Reguliere Expressie" #: editor/rename_dialog.cpp msgid "Post-Process" @@ -10410,30 +10355,27 @@ msgstr "under_scored naar CamelCase" #: editor/rename_dialog.cpp msgid "Case" -msgstr "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 "Knoopouder wijzigen" #: 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" @@ -10441,7 +10383,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:" @@ -10476,6 +10418,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)" @@ -10483,78 +10427,73 @@ 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 -#, fuzzy msgid "This operation can't be done on the tree root." -msgstr "Deze bewerking kan niet worden uitgevoerd op de tree root." +msgstr "Deze bewerking kan niet op de wortelknoop worden uitgevoerd." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Move Node In Parent" -msgstr "Verplaats knooppunt naar ouder" +msgstr "Knoop in ouder verplaatsen" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Move Nodes In Parent" -msgstr "Verplaats knooppunten naar ouder" +msgstr "Knopen in ouder verplaatsen" #: editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" -msgstr "" +msgstr "Dupliceer knoop/knopen" #: 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 "" +msgstr "Knoop moet bij de bewerkte scène horen om wortelknoop 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 "Knoop tot wortelknoop maken" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete %d nodes?" -msgstr "Alles Selecteren" +msgstr "Verwijder %d knopen?" #: 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 knoop \"%s\" en zijn 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 deze operatie niet uitvoeren met de wortelknoop." #: 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..." @@ -10565,239 +10504,233 @@ 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 -#, fuzzy msgid "Create Root Node:" -msgstr "Creëer Node" +msgstr "Wortelknoop 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 "" +msgstr "Gebruikersomgeving" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Other Node" -msgstr "Alles Selecteren" +msgstr "Andere knoop" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" -msgstr "" +msgstr "Kan deze operatie niet uitvoeren op knopen uit een vreemde scène!" #: 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 knoop/knopen" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Change type of node(s)" -msgstr "Verander Input Naam" +msgstr "Knooptypes veranderen" #: 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 -#, fuzzy msgid "Error saving scene." -msgstr "Fout scene opslaan." +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" #: editor/scene_tree_dock.cpp msgid "Add Child Node" -msgstr "" +msgstr "Knoop hieronder toevoegen" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Expand/Collapse All" -msgstr "Alles inklappen" +msgstr "Alles Uitklappen/Inklappen" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Change Type" -msgstr "Verander Type" +msgstr "Verander het type" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Reparent to New Node" -msgstr "Voeg nieuwe knooppunt aan" +msgstr "Onder nieuwe knoop hangen" #: 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 "Knooppad kopiëren" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete (No Confirm)" msgstr "Verwijder (Geen bevestiging)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Add/Create a New Node." -msgstr "Voeg nieuwe knooppunt aan" +msgstr "Nieuwe knoop maken/toevoegen." #: editor/scene_tree_dock.cpp msgid "" "Instance a scene file as a Node. Creates an inherited scene if no root node " "exists." msgstr "" +"Instantieer scènebestand als knoop. Maakt een overgeërfde scène als geen " +"wortelknoop bestaat." #: 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 de geselecteerde knoop." #: 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 -#, fuzzy msgid "Local" 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 "Knoop 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 -#, fuzzy msgid "Node configuration warning:" -msgstr "Knooppunt configuratie waarschuwing:" +msgstr "Waarschuwing over knoopconfiguratie:" #: editor/scene_tree_editor.cpp 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 signaalbeheer 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 signaalbeheer te tonen." #: editor/scene_tree_editor.cpp msgid "" "Node is in %s group(s).\n" "Click to show groups dock." msgstr "" +"Knoop zit in %s groep(en).\n" +"Klik om groepenbeheer 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" @@ -10808,61 +10741,56 @@ 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" -msgstr "Hernoem Node" +msgstr "Knoop hernoemen" #: editor/scene_tree_editor.cpp msgid "Scene Tree (Nodes):" -msgstr "" +msgstr "Scèneboom (knopen):" #: 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" +msgstr "Knoop uitkiezen" #: 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'" @@ -10877,148 +10805,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 knoopscript" #: 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" @@ -11030,36 +10934,35 @@ 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 -#, fuzzy msgid "Network Profiler" -msgstr "Project Exporteren" +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 videogeheugengebruik per bron:" #: editor/script_editor_debugger.cpp msgid "Total:" @@ -11067,11 +10970,11 @@ msgstr "Totaal:" #: editor/script_editor_debugger.cpp msgid "Video Mem" -msgstr "" +msgstr "Videogeheugen" #: editor/script_editor_debugger.cpp msgid "Resource Path" -msgstr "" +msgstr "Bronpad" #: editor/script_editor_debugger.cpp msgid "Type" @@ -11079,7 +10982,7 @@ msgstr "Type" #: editor/script_editor_debugger.cpp msgid "Format" -msgstr "" +msgstr "Formaat" #: editor/script_editor_debugger.cpp msgid "Usage" @@ -11087,42 +10990,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" @@ -11134,15 +11034,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 "Uitvoerhoek AudioStreamPlayer3D veranderen" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" @@ -11150,19 +11050,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" @@ -11170,7 +11070,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" @@ -11182,11 +11082,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" @@ -11226,32 +11126,31 @@ 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" -msgstr "GDInheemsBibliotheek" +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" @@ -11263,16 +11162,11 @@ msgstr "Bibliotheken: " #: modules/gdnative/register_types.cpp msgid "GDNative" -msgstr "GDInheems" +msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: 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" @@ -11288,16 +11182,16 @@ msgstr "Niet gebaseerd op een resource bestand" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "Ongeldige dictionary formaat van instantie (mist @path)" +msgstr "Ongeldig dictionary formaat van instantie (mist @path)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" msgstr "" -"Ongeldige dictionary formaat van instantie (kan script niet laden uit @path)" +"Ongeldig dictionary formaat van instantie (kan script niet laden uit @path)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" -msgstr "Ongeldige dictionary formaat van instantie (ongeldige script op @path)" +msgstr "Ongeldig dictionary formaat van instantie (ongeldig script op @path)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary (invalid subclasses)" @@ -11305,74 +11199,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 "GridMap-selectie verwijderen" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Fill Selection" -msgstr "Geselecteerde Verwijderen" +msgstr "GridMap-selectie vullen" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Paste Selection" -msgstr "Geselecteerde Verwijderen" +msgstr "GridMap-selectie plakken" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Paint" -msgstr "" +msgstr "GridMap tekenen" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Grid Map" -msgstr "" +msgstr "Grid Map" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Snap View" -msgstr "" +msgstr "Beeld uitlijnen" #: 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" @@ -11400,62 +11287,64 @@ 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 "Paste Selects" +msgstr "Selectie Verwijderen" + +#: modules/gridmap/grid_map_editor_plugin.cpp 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..." @@ -11471,12 +11360,11 @@ msgstr "Hoogteveld aan het creëeren..." #: modules/recast/navigation_mesh_generator.cpp msgid "Marking walkable triangles..." -msgstr "Markeer loopbare driehoeken..." +msgstr "begaanbaare driehoeken markeren..." #: modules/recast/navigation_mesh_generator.cpp -#, fuzzy msgid "Constructing compact heightfield..." -msgstr "Compact hoogteveld aan het bouwen..." +msgstr "Bezig met opbouw van compact hoogteveld..." #: modules/recast/navigation_mesh_generator.cpp msgid "Eroding walkable area..." @@ -11515,15 +11403,15 @@ msgid "" "A node yielded without working memory, please read the docs on how to yield " "properly!" msgstr "" -"Een node yieldde zonder werkgeheugen, lees alsjeblieft de documentatie over " -"het correct gebruik van yield!" +"Een knoop werd overhandigd zonder werkend geheugen, de documentatie " +"beschrijft correct overhandigen (yield)!" #: modules/visual_script/visual_script.cpp msgid "" "Node yielded, but did not return a function state in the first working " "memory." msgstr "" -"Node yieldde, maar gaf geen functie toestand terug in het eerste " +"Knoop werd overhandigd, maar gaf geen functietoestand terug in het eerste " "werkgeheugen." #: modules/visual_script/visual_script.cpp @@ -11531,75 +11419,74 @@ msgid "" "Return value must be assigned to first element of node working memory! Fix " "your node please." msgstr "" -"Een return waarde moet toegekend worden aan het eerste element van een node " -"zijn werkgeheugen! Repareer alsjeblieft je node." +"Een returnwaarde moet toegekend worden aan het eerste element van een knoop " +"zijn werkgeheugen! Repareer de knoop." #: modules/visual_script/visual_script.cpp msgid "Node returned an invalid sequence output: " -msgstr "Node gaf een ongeldige sequentie uitvoer: " +msgstr "Knoop gaf een ongeldige sequentie uitvoer: " #: modules/visual_script/visual_script.cpp msgid "Found sequence bit but not the node in the stack, report bug!" msgstr "" -"Een sequentie bit was gevonden, maar niet de node in de stack. Rapporteer " +"Een sequentie bit was gevonden, maar de knoop niet in de stack, rapporteer " "een bug!" #: modules/visual_script/visual_script.cpp msgid "Stack overflow with stack depth: " -msgstr "Stack overloop met stack diepte: " +msgstr "Stapeloverloop met stapeldiepte: " #: 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 "Uitvoerpoort toevoegen" #: 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 "Een bestaande ingebouwde functie overschrijven." #: 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:" @@ -11626,9 +11513,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" @@ -11639,44 +11525,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 "Uitvoerpoort verwijderen" #: 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 "VisualScript-knopen verwijderen" #: modules/visual_script/visual_script_editor.cpp msgid "Duplicate VisualScript Nodes" -msgstr "" +msgstr "VisualScript-knoop dupliceren" #: 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." @@ -11685,20 +11557,18 @@ 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." msgstr "" -"Houdt Ctrl ingedrukt om een simpele referentie naar de node te plaatsen." +"Houdt de Ctrl-toets ingedrukt om een simpele referentie naar de knoop 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." @@ -11706,21 +11576,20 @@ msgstr "Houdt Ctrl ingedrukt om een Variable Setter te plaatsen." #: modules/visual_script/visual_script_editor.cpp msgid "Add Preload Node" -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 "" +msgstr "Preload-knoop toevoegen" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" -msgstr "Voeg Node(s) Toe Uit Tree" +msgstr "Knoop/knopen uit de scèneboom toevoegen" #: 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 "" +"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" @@ -11731,87 +11600,76 @@ 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 "Knopen loskoppelen" #: 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 "Knoopsequentie verbinden" #: 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." -msgstr "" +msgstr "Kan geen functie maken met een functie-knoop." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." -msgstr "" +msgstr "Kan geen knoopfunctie maken van knoop met meerdere functies." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +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" @@ -11834,23 +11692,32 @@ msgid "Editing Signal:" msgstr "Signaal Bewerken:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Tool:" -msgstr "Maak Botten" +msgstr "Maak hulpmiddel:" #: 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" @@ -11858,30 +11725,27 @@ msgstr "Geselecteerde Verwijderen" #: modules/visual_script/visual_script_editor.cpp msgid "Find Node Type" -msgstr "Vind Node Type" +msgstr "Knooptype vinden" #: modules/visual_script/visual_script_editor.cpp msgid "Copy Nodes" -msgstr "Kopiëer Nodes" +msgstr "Knopen kopiëren" #: modules/visual_script/visual_script_editor.cpp msgid "Cut Nodes" -msgstr "Knip Nodes" +msgstr "Knopen knippen" #: 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 "Lid bewerken" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -11901,15 +11765,15 @@ msgstr "Ongeldige index eigenschap naam." #: modules/visual_script/visual_script_func_nodes.cpp msgid "Base object is not a Node!" -msgstr "Basis object is geen Node!" +msgstr "Basisobject is geen knoop!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "Pad leidt niet tot Node!" +msgstr "Pad leidt niet naar een knoop!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "Ongeldige index eigenschap naam '%s' in node %s." +msgstr "Ongeldige eigenschapnaam '%s' in knoop %s." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " @@ -11930,52 +11794,53 @@ msgstr "VariableSet niet gevonden in script: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" -"Zelfgemaakte node heeft geen _step() methode, kan grafiek niet verwerken." +"Zelfgemaakte knoop heeft geen _step() methode, kan diagram niet verwerken." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" -"Ongeldige return waarde van _step(), moet een geheel getal (seq out) of " -"string (error) zijn." +"Ongeldige terugkeerwaarde van _step(), moet een geheel getal (sequentie " +"uitvoer) of string (fout) 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 aan 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" @@ -11983,44 +11848,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 "" @@ -12029,106 +11898,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 Androidproject mislukt, bekijk de foutmelding in de uitvoer.\n" +"Zie anders Android bouwdocumentatie op docs.godotengine.org." #: 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 +msgid "Invalid package short name." +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 +msgid "Invalid package publisher display name." +msgstr "Ongeldige pakket uitgevernaam." #: platform/uwp/export/export.cpp msgid "Invalid product GUID." @@ -12178,7 +12037,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." @@ -12201,6 +12059,10 @@ msgid "" "Consider adding a CollisionShape2D or CollisionPolygon2D as a child to " "define its shape." msgstr "" +"Deze knoop heeft geen vorm (Shape), dus kan het niet met andere objecten " +"botsen of interactie hebben.\n" +"Overweeg om een CollisionShape2D of CollisionPolygon2D als kind toe te " +"voegen om de vorm ervan vast te leggen." #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -12208,10 +12070,9 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" -"CollisionPolygon2D 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." +"CollisionPolygon2D dient enkel om een botsingsvorm te koppelen aan een knoop " +"afgeleid van CollisionObject2D. Plaats hem onder een Area2D-, StaticBody2D-, " +"RigidBody2D- of KinematicBody2D-knoop." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." @@ -12223,10 +12084,9 @@ msgid "" "CollisionObject2D derived node. Please only 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." +"CollisionShape2D dient enkel om een botsingsvorm te koppelen aan een knoop " +"afgeleid van CollisionObject2D. Plaats hem onder een Area2D-, StaticBody2D-, " +"RigidBody2D- of KinematicBody2D-knoop." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -12241,15 +12101,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 "" @@ -12259,34 +12120,32 @@ 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 "" "A NavigationPolygon resource must be set or created for this node to work. " "Please set a property or draw a polygon." msgstr "" -"Een NavigatorPolygon resource moet gegeven of gemaakt worden om deze node te " -"laten werken. Geef alsjeblieft een eigenschap of teken een polygoon." +"Een NavigationPolygon-bron is nodig om deze knoop te laten werken. Voer een " +"bron in de geschikte eigenschap in of teken een polygoon." #: scene/2d/navigation_polygon.cpp msgid "" "NavigationPolygonInstance must be a child or grandchild to a Navigation2D " "node. It only provides navigation data." msgstr "" -"NavigationPolygonInstance moet een kind of kleinkind zijn van een " -"Navigation2D node. Het geeft alleen navigatie data." +"NavigationPolygonInstance moet een (klein)kind zijn van een Navigation2D-" +"knoop om navigatiegegevens door te geven." #: scene/2d/parallax_layer.cpp msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" -"ParallaxLayer node werkt alleen wanneer het een kind is van een " -"ParallaxBackground node." +"ParallaxLayer-knoop werkt alleen als kind van een ParallaxBackground-knoop." #: scene/2d/particles_2d.cpp msgid "" @@ -12294,22 +12153,30 @@ 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." -msgstr "PathFollow2D werkt alleen wanneer het een kind van een Path2D node is." +msgstr "PathFollow2D werkt alleen als kind van een Path2D-knoop." #: scene/2d/physics_body_2d.cpp msgid "" @@ -12317,97 +12184,105 @@ 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." msgstr "" -"Path eigenschap moet verwijzen naar een geldige Node2D node om te werken." +"De eigenschap \"RemotePath\" moet naar een geldige Node2D-knoop verwijzen." #: scene/2d/skeleton_2d.cpp msgid "This Bone2D chain should end at a Skeleton2D node." -msgstr "" +msgstr "Deze Bone2D-keten moet eindigen op een Skeleton2D-knoop." #: 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 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 knoop als ouder hebben." #: scene/3d/arvr_nodes.cpp msgid "ARVRController must have an ARVROrigin node as its parent." -msgstr "" +msgstr "ARVRController moet een ARVROrigin knoop 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 knoop 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 "" @@ -12415,6 +12290,10 @@ msgid "" "Consider adding a CollisionShape or CollisionPolygon as a child to define " "its shape." msgstr "" +"Deze knoop heeft geen vorm (Shape), dus het kan niet met andere objecten " +"botsen of interactie hebben.\n" +"Overweeg om een CollisionShape of CollisionPolygon als kind toe te voegen om " +"de vorm ervan vast te leggen." #: scene/3d/collision_polygon.cpp msgid "" @@ -12422,9 +12301,9 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" -"CollisionPolygon dient alleen om een bots vorm te bieden aan een node die " -"afstamt van CollisionObject. Gebruik het alsjeblieft alleen als een kind van " -"van Area, StaticBody, RigidBody, KinematicBody etc. om ze een vorm te geven." +"CollisionPolygon dient enkel om een botsingsvorm te koppelen aan een knoop " +"afgeleid van CollisionObject. Plaats hem onder een Area-, StaticBody-, " +"RigidBody- of KinematicBody-knoop." #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." @@ -12436,62 +12315,66 @@ msgid "" "derived node. Please only use it as a child of Area, StaticBody, RigidBody, " "KinematicBody, etc. to give them a shape." msgstr "" -"CollisionShape dient alleen om een bots vorm te bieden aan een node die " -"afstamt van de CollisionObject node. Gebruik het alsjeblieft alleen als kind " -"van Area, StaticBody, RigidBody, KinematicBody etc. om ze een vorm te geven." +"CollisionShape dient enkel om een botsingsvorm te koppelen aan een knoop " +"afgeleid van CollisionObject. Plaats hem onder een Area-, StaticBody-, " +"RigidBody- of KinematicBody-knoop." #: 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." -msgstr "" -"Een NavigationMesh resource moet gegeven of gemaakt worden om deze node te " -"laten werken." +msgstr "Een NavigationMesh-bron is nodig om deze knoop te laten werken." #: scene/3d/navigation_mesh.cpp msgid "" "NavigationMeshInstance must be a child or grandchild to a Navigation node. " "It only provides navigation data." msgstr "" -"NavigationMeshInstance moet een kind of kleinkind zijn van een Navigation " -"node. Het biedt alleen navigatie data." +"NavigationMeshInstance moet een (klein)kind zijn van een Navigation-knoop om " +"navigatiegevens door te geven." #: scene/3d/particles.cpp msgid "" @@ -12499,28 +12382,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 "" @@ -12528,18 +12420,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 "" @@ -12547,27 +12442,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 "" @@ -12581,74 +12482,69 @@ 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 "Er is geen AnimationNode-wortelknoop voor dit diagram aangegeven." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Path to an AnimationPlayer node containing animations is not set." -msgstr "" -"Selecteer een AnimationPlayer uit de Scene Tree om animaties te wijzigen." +msgstr "Geen pad naar een AnimationPlayer-knoop opgegeven." #: 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 "" @@ -12656,12 +12552,19 @@ msgid "" "children placement behavior.\n" "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 " +"kinderen bepaalt.\n" +"Als je niet van plan bent om een script toe te voegen, gebruik dan een " +"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!" @@ -12669,22 +12572,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 "" @@ -12692,19 +12594,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 "" @@ -12713,40 +12617,50 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" -"Dit Aanzicht Portaal is niet ingesteld als render target. Maak het een kind " -"van een Control zodat het een grootte kan ontvangen, als je de bedoeling " -"hebt zijn inhoud direct op het scherm te weergeven. Anders, maak er een " -"RenderTarget van en wijs zijn interne texture toe aan een node om te tonen." +"Dit beeldvenster is niet ingesteld als renderdoelwit. Als de inhoud op het " +"scherm getoond moet worden, moet je het een kind van een Control knoop " +"maken, zodat het een grootte kan ontvangen. Anders, maak er een RenderTarget " +"van en wijs zijn interne textuur toe aan een knoop 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" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" #, fuzzy #~ msgid "Snap to Grid" @@ -13475,9 +13389,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "Vervangen Door" -#~ msgid "Case Sensitive" -#~ msgstr "Hoofdlettergevoelig" - #~ msgid "Backwards" #~ msgstr "Achterwaarts" @@ -13569,9 +13480,6 @@ msgstr "" #~ "Kon het certificaat bestand niet lezen. Zijn het pad en wachtwoord beide " #~ "correct?" -#~ msgid "Error creating the signature object." -#~ msgstr "Error bij het maken van het signatuur object." - #~ msgid "Error creating the package signature." #~ msgstr "Error bij het maken van het pakket signatuur." diff --git a/editor/translations/or.po b/editor/translations/or.po index 19fbf71453..2cde4699f1 100644 --- a/editor/translations/or.po +++ b/editor/translations/or.po @@ -1,6 +1,6 @@ # Odia translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Pro Neon <proneon267@gmail.com>, 2019. msgid "" @@ -22,6 +22,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "convert() କà ଅବàˆà¬§ ପàରକାର ଯàକàତି, ବààŸà¬¬à¬¹à¬¾à¬° କର TYPE_* ସàଥିରାଙàକ |" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "" + +#: 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." @@ -404,6 +408,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -505,8 +513,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 +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 @@ -768,6 +781,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -939,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 "" @@ -1404,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 "" @@ -1644,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 "" @@ -1910,6 +1932,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1945,6 +1975,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2552,7 +2602,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 "" @@ -2760,7 +2811,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2863,6 +2914,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 +2974,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 "" @@ -3227,6 +3286,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3349,6 +3416,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 "" @@ -3425,6 +3496,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4134,6 +4209,18 @@ msgid "" 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 "" @@ -4364,6 +4451,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4443,6 +4534,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" @@ -4697,6 +4792,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 "" @@ -4800,6 +4919,14 @@ 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 "" @@ -4808,6 +4935,10 @@ 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 "" @@ -4876,6 +5007,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 "" @@ -4889,6 +5088,20 @@ 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 "" @@ -5023,6 +5236,10 @@ 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 "" @@ -5162,7 +5379,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5502,11 +5719,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6132,6 +6363,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 "" @@ -6258,10 +6506,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 "" @@ -6352,10 +6596,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6381,6 +6621,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7015,18 +7260,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7103,6 +7364,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7376,6 +7641,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7392,7 +7658,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7503,6 +7769,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 "" @@ -7519,6 +7797,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 "" @@ -7727,6 +8033,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -7989,7 +8303,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8576,9 +8890,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8642,6 +8957,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 "" @@ -8687,6 +9010,12 @@ 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 "" @@ -8735,6 +9064,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8786,6 +9119,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 "" @@ -9043,6 +9384,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9123,18 +9468,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10343,10 +10676,6 @@ 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 "" @@ -10483,6 +10812,10 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10625,6 +10958,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 "" @@ -10685,14 +11026,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 "" @@ -10741,10 +11074,6 @@ 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 "" @@ -10823,7 +11152,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10863,6 +11192,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 "" @@ -11059,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 "" @@ -11128,10 +11452,18 @@ 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 "" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index cd7c033cb0..4f18913a9b 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -1,6 +1,6 @@ # Polish translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # 8-bit Pixel <dawdejw@gmail.com>, 2016. # Adam Wolanski <adam.wolanski94@gmail.com>, 2017. @@ -37,11 +37,12 @@ # RafaÅ‚ Wyszomirski <rawyszo@gmail.com>, 2019. # Myver <igormakarowicz@gmail.com>, 2019. # Maciej Chamera <chameramaciej@gmail.com>, 2019. +# Cezary Stasiak <cezary.p.stasiak@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-29 12:49+0000\n" +"PO-Revision-Date: 2019-12-26 00:02+0000\n" "Last-Translator: Tomek <kobewi4e@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" @@ -51,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.9.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 @@ -59,6 +60,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Niepoprawny typ argumentu funkcji convert(), użyj staÅ‚ych TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Oczekiwano ciÄ…gu znaków o dÅ‚ugoÅ›ci 1 (znaku)." + +#: 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." @@ -449,6 +454,10 @@ msgid "Not possible to add a new track without a root" msgstr "Nie da siÄ™ dodać nowej Å›cieżki bez korzenia" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Dodaj Å›cieżkÄ™ krzywej Beziera" @@ -560,8 +569,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" @@ -662,9 +672,8 @@ msgid "Scale Ratio:" msgstr "Współczynnik skali:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Wybierz Å›cieżki do skopiowania:" +msgstr "Wybierz Å›cieżki do skopiowania" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -676,9 +685,8 @@ msgid "Copy" msgstr "Kopiuj" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Wybierz wÄ™zeÅ‚" +msgstr "Wybierz wszystkie/żadne" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -749,6 +757,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 @@ -827,6 +839,10 @@ msgid "Extra Call Arguments:" msgstr "Dodatkowe argumenty wywoÅ‚ania:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Metoda odbiorcy:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Zaawansowane" @@ -1003,7 +1019,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" @@ -1474,7 +1490,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" @@ -1723,6 +1740,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)" @@ -1996,6 +2017,15 @@ msgid "Search Help" msgstr "Wyszukaj w pomocy" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Z uwzglÄ™dnieniem wielkoÅ›ci liter" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Pokaż linie pomocnicze" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Pokaż wszystko" @@ -2031,6 +2061,29 @@ msgstr "Typ czÅ‚onka" msgid "Class" msgstr "Klasa" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metody" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "SygnaÅ‚" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "StaÅ‚e" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "WÅ‚aÅ›ciwość:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "WÅ‚aÅ›ciwoÅ›ci motywu" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "WÅ‚aÅ›ciwość:" @@ -2684,7 +2737,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" @@ -2908,8 +2962,8 @@ msgid "Play" msgstr "Uruchom" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Zapauzuj scenÄ™" +msgid "Pause the scene execution for debugging." +msgstr "Zapauzuj wykonywanie sceny, żeby debugować." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3021,6 +3075,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" @@ -3077,6 +3135,10 @@ msgstr "Otwórz nastÄ™pny edytor" msgid "Open the previous Editor" msgstr "Otwórz poprzedni edytor" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Ostrzeżenie!" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Nie znaleziono podzasobów." @@ -3398,6 +3460,15 @@ msgid "Importing:" msgstr "Importowanie:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Błąd przy eksporcie projektu!" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3524,6 +3595,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" @@ -3602,6 +3677,10 @@ msgid "New Inherited Scene" msgstr "Nowa scena dziedziczÄ…ca" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Ustaw jako głównÄ… scenÄ™" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Otwórz sceny" @@ -4332,6 +4411,18 @@ msgstr "" "uzyskać nazw Å›cieżek." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Klipy animacji" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Klipy dźwiÄ™kowe" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funkcje" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "WÄ™zeÅ‚ przemianowany" @@ -4562,6 +4653,11 @@ msgid "Move Node" msgstr "PrzesuÅ„ wÄ™zeÅ‚" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "PrzejÅ›cie: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Dodaj przejÅ›cie" @@ -4646,6 +4742,10 @@ msgstr "Ustaw koniec animacji. To jest przydatne dla podprzejść." msgid "Transition: " msgstr "PrzejÅ›cie: " +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "Tryb odtwarzania:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4902,6 +5002,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" @@ -4923,7 +5047,7 @@ msgstr "Wszystko" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Brak rezultatów dla \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5012,6 +5136,14 @@ msgid "Grid Step:" msgstr "Krok siatki:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "Główna linia co każde:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "kroki" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Offset obrotu:" @@ -5020,6 +5152,10 @@ msgid "Rotation Step:" msgstr "Krok obrotu:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Krok skali:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "PrzesuÅ„ pionowÄ… prowadnicÄ™" @@ -5093,6 +5229,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 proporcje" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Tylko zakotwiczenia" @@ -5106,6 +5310,24 @@ msgstr "ZmieÅ„ zakotwiczenie" #: 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 "" +"Przejmij kamerÄ™ gry\n" +"ZastÄ™puje kamerÄ™ gry kamerÄ… z widoku edytora." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Przejmij kamerÄ™ gry\n" +"Brak uruchomionej instancji gry." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "Zablokuj wybrane" @@ -5183,7 +5405,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 @@ -5222,24 +5444,20 @@ msgid "Ruler Mode" msgstr "Tryb linijki" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Przełącz przyciÄ…ganie." +msgstr "Przełącz inteligentne przyciÄ…ganie." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Użyj przyciÄ…gania" +msgstr "Użyj inteligentnego przyciÄ…gania" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Przełącz przyciÄ…ganie." +msgstr "Przełącz przyciÄ…ganie do siatki." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "PrzyciÄ…gaj do siatki" +msgstr "Użyj przyciÄ…gania do siatki" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5250,6 +5468,10 @@ msgid "Use Rotation Snap" msgstr "Użyj kroków obrotu" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "Użyj przyciÄ…gania skali" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "PrzyciÄ…gaj wzglÄ™dnie" @@ -5332,9 +5554,8 @@ msgid "View" msgstr "Widok" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Pokaż siatkÄ™" +msgstr "Zawsze pokaż siatkÄ™" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5390,7 +5611,7 @@ msgstr "Wstaw klucze (w oparciu o maskÄ™)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5601,9 +5822,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Przytrzymaj Shift aby edytować styczne indywidualnie" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Prawy Klik: UsuÅ„ Punkt" +msgstr "Prawy klik, aby dodać punkt" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5738,11 +5958,26 @@ msgstr "Utwórz siatkÄ™ zarysu" msgid "Outline Size:" msgstr "Rozmiar zarysu:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "UsuÅ„ element %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Aktualizuj ze sceny" + +#: editor/plugins/mesh_library_editor_plugin.cpp +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" @@ -6374,6 +6609,25 @@ msgid "Save File As..." msgstr "Zapisz plik jako..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "Brak skryptu do uruchomienia." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "Nie udaÅ‚o siÄ™ przeÅ‚adować skryptu, sprawdź błędy w konsoli." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "Skrypt nie jest w trybie edytora (tool), nie można go uruchomić." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"By uruchomić ten skrypt, musi on dziedziczyć EditorScript i być ustawiony w " +"tryb edytora (tool)." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Zaimportuj motyw" @@ -6500,10 +6754,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" @@ -6596,10 +6846,6 @@ msgid "Source" msgstr "ŹródÅ‚o" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "SygnaÅ‚" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Cel" @@ -6627,6 +6873,12 @@ msgid "Only resources from filesystem can be dropped." msgstr "Jedynie zasoby z systemu plików mogÄ… zostać tu upuszczone." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"Nie można upuÅ›cić wÄ™złów, ponieważ \"%s\" nie jest używany na tej scenie." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Podejrzyj symbol" @@ -7053,12 +7305,11 @@ msgstr "\"Wolny widok\" w dół" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Speed Modifier" -msgstr "Zmiennik prÄ™dkoÅ›ci \"Wolnego widoku\"" +msgstr "Modyfikator prÄ™dkoÅ›ci swobodnego widoku" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "Zmiennik prÄ™dkoÅ›ci \"Wolnego widoku\"" +msgstr "Wolny modyfikator swobodnego widoku" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7269,18 +7520,37 @@ msgid "Create Mesh2D" msgstr "Utwórz wÄ™zeÅ‚ Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Tworzenie podglÄ…du Mesh" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Utwórz wÄ™zeÅ‚ Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Utwórz wÄ™zeÅ‚ CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Utwórz wÄ™zeÅ‚ CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Utwórz wÄ™zeÅ‚ LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Utwórz wÄ™zeÅ‚ LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite jest pusty!" @@ -7330,13 +7600,12 @@ msgid "Simplification: " msgstr "Uproszczenie: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Wzrost (piksele): " +msgstr "Zmniejsz (piksele): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " -msgstr "Wzrost (piksele): " +msgstr "ZwiÄ™ksz (piksele): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Update Preview" @@ -7359,6 +7628,11 @@ msgid "Add Frame" msgstr "Dodaj klatkÄ™" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Nie można zaÅ‚adować obrazu:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "Błąd: Nie można zaÅ‚adować zasobu klatki!" @@ -7400,7 +7674,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:" @@ -7632,6 +7906,7 @@ msgid "Data Type:" msgstr "Typ danych:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikona" @@ -7648,8 +7923,8 @@ msgid "Color" msgstr "Kolor" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "StaÅ‚e" +msgid "Theme File" +msgstr "Plik motywu" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7762,6 +8037,18 @@ msgid "Merge from Scene" msgstr "Połącz ze sceny" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "Nowy pojedynczy kafelek" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Nowy autokafelek" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Nowy atlas" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "NastÄ™pny koordynat" @@ -7778,6 +8065,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Wybierz poprzedni ksztaÅ‚t, podkafelek lub Kafelek." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "Obszar" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Kolizja" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Okluzja" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Nawigacja" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Maska bitowa" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Priorytet" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Indeks Z" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Tryb obszaru" @@ -8004,6 +8319,16 @@ msgid "Edit Tile Z Index" msgstr "Edytuj indeks Z Kafelka" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "ZmieÅ„ wielokÄ…t na wypukÅ‚y" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "ZmieÅ„ wielokÄ…t na wklÄ™sÅ‚y" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Utwórz wielokÄ…t kolizji" @@ -8117,9 +8442,8 @@ msgid "(GLES3 only)" msgstr "(Tylko GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Dodaj wyjÅ›cie+" +msgstr "Dodaj wyjÅ›cie" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8134,9 +8458,8 @@ msgid "Boolean" msgstr "Prawda/faÅ‚sz" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "Sample" +msgstr "Próbnik (sampler)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8268,8 +8591,8 @@ msgid "Dodge operator." msgstr "Operator uniku." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Operator twardego Å›wiatÅ‚a" +msgid "HardLight operator." +msgstr "Operator twardego Å›wiatÅ‚a." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8910,9 +9233,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" "WÅ‚asne wyrażenie w jÄ™zyku shaderów Godota, znajdujÄ…ce siÄ™ na górze " "wynikowego shadera. Możesz wewnÄ…trz utworzyć różne definicje funkcji i " @@ -8992,6 +9316,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?" @@ -9042,6 +9374,14 @@ msgid "Add..." msgstr "Dodaj..." #: 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 "" +"Kiedy zaznaczone, profil bÄ™dzie dostÄ™pny do szybkiego wdrażania.\n" +"Tylko jeden profil na platformÄ™ może być zaznaczony jako uruchamiany." + +#: editor/project_export.cpp msgid "Export Path" msgstr "Åšcieżka eksportu" @@ -9070,22 +9410,20 @@ msgid "Resources to export:" msgstr "Zasoby do eksportu:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filtry do eksportowania plików nie bÄ™dÄ…cych zasobami (oddzielone " +"Filtry do eksportowania plików/folderów nie bÄ™dÄ…cych zasobami (oddzielone " "przecinkami, np. *.json, *.txt)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Filtry do wykluczenia plików z projektu (rozdzielone przecinkami, np. *." -"json, *.txt)" +"Filtry do wykluczenia plików/folderów z projektu (rozdzielone przecinkami, " +"np. *.json, *.txt)" #: editor/project_export.cpp msgid "Patches" @@ -9096,6 +9434,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" @@ -9147,6 +9489,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:" @@ -9452,6 +9802,10 @@ msgid "Projects" msgstr "Projekty" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Data modyfikacji" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Skanuj" @@ -9536,18 +9890,6 @@ msgid "Device" msgstr "UrzÄ…dzenie" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "NaciÅ›nij klawisz..." @@ -10130,12 +10472,11 @@ msgstr "" "zostanÄ… przywrócone do domyÅ›lnych." #: 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 "" -"Wyłączenie \"edytowalnej instancji\" sprawi, że wszystkie wÅ‚aÅ›ciwoÅ›ci wÄ™zÅ‚a " +"Włączenie \"edytowalnej instancji\" sprawi, że wszystkie wÅ‚aÅ›ciwoÅ›ci wÄ™zÅ‚a " "zostanÄ… przywrócone do domyÅ›lnych." #: editor/scene_tree_dock.cpp @@ -10236,7 +10577,7 @@ msgstr "ZmieÅ„ typ" #: editor/scene_tree_dock.cpp msgid "Reparent to New Node" -msgstr "ZmieÅ„ nadrzÄ™dny wÄ™zeÅ‚" +msgstr "ZmieÅ„ nadrzÄ™dny wÄ™zeÅ‚ na nowy" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -10475,19 +10816,16 @@ msgid "Will load an existing script file." msgstr "Wczytaj istniejÄ…cy plik skryptu." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Nazwa klasy" +msgstr "Nazwa klasy:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Szablon" +msgstr "Szablon:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Wbudowany skrypt" +msgstr "Skrypt wbudowany:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10790,10 +11128,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "Oczekiwano ciÄ…gu znaków o dÅ‚ugoÅ›ci 1 (znaku)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "Argument kroku wynosi zero!" @@ -10931,6 +11265,11 @@ msgid "Cursor Clear Rotation" msgstr "Kursor Wyczyść obrót" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "UsuÅ„ zaznaczenie" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Wyczyść zaznaczone" @@ -11080,6 +11419,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Ä…." @@ -11128,7 +11475,6 @@ msgid "Add Function" msgstr "Dodaj funkcjÄ™" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "UsuÅ„ port wejÅ›ciowy" @@ -11141,22 +11487,10 @@ msgid "Add Signal" msgstr "Dodaj sygnaÅ‚" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Input Port" -msgstr "Dodaj port wejÅ›ciowy" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Add Output Port" -msgstr "Dodaj port wyjÅ›ciowy" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Input Port" msgstr "UsuÅ„ port wejÅ›ciowy" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" msgstr "UsuÅ„ port wyjÅ›ciowy" @@ -11205,10 +11539,6 @@ msgid "Add Preload Node" msgstr "Dodaj wstÄ™pnie wczytany wÄ™zeÅ‚" #: 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 "Dodaj wÄ™zeÅ‚(y) z drzewa" @@ -11217,6 +11547,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 "" +"Nie można upuÅ›cić wÅ‚aÅ›ciwoÅ›ci, ponieważ \"%s\" nie jest używany na tej " +"scenie.\n" +"Upuść trzymajÄ…c \"Shift\", by skopiować samÄ… sygnaturÄ™." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11243,9 +11576,8 @@ msgid "Connect Nodes" msgstr "Podłącz wÄ™zÅ‚y" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Odłącz wÄ™zÅ‚y grafu" +msgstr "Odłącz wÄ™zÅ‚y" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11280,26 +11612,24 @@ msgid "Paste VisualScript Nodes" msgstr "Wklej wÄ™zeÅ‚ VisualScript" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "Nie można skopiować wÄ™zÅ‚a funkcji." +msgstr "Nie można utworzyć funkcji z wÄ™zÅ‚em funkcji." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." -msgstr "" +msgstr "Nie można utworzyć funkcji wÄ™złów z wÄ™złów wielu funkcji." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +msgstr "Wybierz co najmniej jeden wÄ™zeÅ‚ z portem sekwencyjnym." #: modules/visual_script/visual_script_editor.cpp msgid "Try to only have one sequence input in selection." -msgstr "" +msgstr "Spróbuj mieć tylko jedno wejÅ›cie sekwencyjne w zaznaczeniu." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "ZmieÅ„ nazwÄ™ funkcji" +msgstr "Utwórz funkcjÄ™" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11330,9 +11660,20 @@ msgid "Members:" msgstr "CzÅ‚onkowie:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy +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 "Funkcja:" +msgstr "nazwa_funkcji" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11355,14 +11696,12 @@ msgid "Cut Nodes" msgstr "Wytnij WÄ™zÅ‚y" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "ZmieÅ„ nazwÄ™ funkcji" +msgstr "ZmieÅ„ na funkcjÄ™" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "OdÅ›wież" +msgstr "OdÅ›wież graf" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11548,27 +11887,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." @@ -11582,7 +11904,7 @@ msgstr "Wymagana ikona nie jest podana w profilu eksportu." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Zatrzymaj serwer HTTP" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11617,10 +11939,18 @@ msgid "Using default boot splash image." msgstr "Używam domyÅ›lnego obrazka powitalnego." #: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "Niepoprawna krótka nazwa paczki." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "NiewÅ‚aÅ›ciwa unikalna nazwa paczki." #: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "Niepoprawna wyÅ›wietlana nazwa wydawcy paczki." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "NieprawidÅ‚owy GUID produktu." @@ -11727,8 +12057,8 @@ msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" msgstr "" -"Zasób shape jest niezbÄ™dny do dziaÅ‚ania CollisionPolygon2D. ProszÄ™ utworzyć " -"zasób shape!" +"KsztaÅ‚t jest niezbÄ™dny do dziaÅ‚ania CollisionShape2D. ProszÄ™ utworzyć zasób " +"Shape!" #: scene/2d/cpu_particles_2d.cpp msgid "" @@ -12281,6 +12611,32 @@ 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Ä™" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "PrzyciÄ…gaj do siatki" @@ -12794,9 +13150,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" @@ -13109,9 +13462,6 @@ msgstr "StaÅ‚e nie mogÄ… być modyfikowane." #~ msgid "Replace By" #~ msgstr "ZastÄ…p przez" -#~ msgid "Case Sensitive" -#~ msgstr "Z uwzglÄ™dnieniem wielkoÅ›ci liter" - #~ msgid "Backwards" #~ msgstr "Wstecz" @@ -13250,9 +13600,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" @@ -13553,9 +13900,6 @@ msgstr "StaÅ‚e nie mogÄ… być modyfikowane." #~ msgid "Loading Image:" #~ msgstr "Åadowanie obrazu:" -#~ msgid "Couldn't load image:" -#~ msgstr "Nie można zaÅ‚adować obrazu:" - #~ msgid "Converting Images" #~ msgstr "Konwersja obrazków" @@ -13701,10 +14045,6 @@ msgstr "StaÅ‚e nie mogÄ… być modyfikowane." #~ msgstr "UsuÅ„" #, fuzzy -#~ msgid "Error creating the signature object." -#~ msgstr "Błąd przy eksporcie projektu!" - -#, fuzzy #~ msgid "RAW Mode" #~ msgstr "Tryb uruchamiania:" @@ -13792,10 +14132,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 7f3761e68d..8f32df0402 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -1,6 +1,6 @@ # Pirate translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Calum Knott <calum@calumk.com>, 2017. # Zion Nimchuk <zionnimchuk@gmail.com>, 2016-2017. @@ -28,6 +28,10 @@ msgstr "" "constants!" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -433,6 +437,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -536,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 "Edit" @@ -725,6 +734,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 +817,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 +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 "" @@ -1451,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 "" @@ -1707,6 +1726,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 "" @@ -1981,6 +2004,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -2018,6 +2049,28 @@ msgstr "th' Members:" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Yer signals:" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Paste yer Node" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2633,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 "" @@ -2846,7 +2900,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2951,6 +3005,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 +3066,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 "" @@ -3323,6 +3386,15 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Blimey! I can't make th' signature object!" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3451,6 +3523,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 "" @@ -3532,6 +3609,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4277,6 +4358,19 @@ msgid "" 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 +#, fuzzy +msgid "Functions" +msgstr "Yer functions:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4514,6 +4608,11 @@ msgstr "Forge yer Node!" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Add Function" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Add Function" @@ -4595,6 +4694,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" @@ -4849,6 +4953,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 "" @@ -4952,6 +5080,14 @@ 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 "" @@ -4961,6 +5097,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "Slit th' Node" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "Discharge ye' Variable" @@ -5035,6 +5176,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 "" @@ -5048,6 +5258,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "Yar, Blow th' Selected Down!" @@ -5192,6 +5416,10 @@ 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 "" @@ -5333,7 +5561,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5680,11 +5908,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6326,6 +6568,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 "" @@ -6456,10 +6715,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 "" @@ -6553,11 +6808,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Yer signals:" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6584,6 +6834,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7235,21 +7490,39 @@ msgid "Create Mesh2D" msgstr "Yar, Blow th' Selected Down!" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "Yar, Blow th' Selected Down!" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Yar, Blow th' Selected Down!" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Yar, Blow th' Selected Down!" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Yar, Blow th' Selected Down!" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7329,6 +7602,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7616,6 +7893,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7632,8 +7910,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "" +#, fuzzy +msgid "Theme File" +msgstr "Paste yer Node" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7750,6 +8029,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 "" @@ -7766,6 +8057,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 "" @@ -7999,6 +8322,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Create Collision Polygon" msgstr "Yar, Blow th' Selected Down!" @@ -8281,7 +8612,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8871,9 +9202,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8939,6 +9271,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 "" @@ -8985,6 +9326,12 @@ 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 "" @@ -9033,6 +9380,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9084,6 +9435,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 "" @@ -9345,6 +9704,10 @@ msgid "Projects" msgstr "Rename Function" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9427,18 +9790,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10685,10 +11036,6 @@ msgid "GDNative" msgstr "" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "Blimey! Ye step argument be marooned!" @@ -10833,6 +11180,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "Yar, Blow th' Selected Down!" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "Yar, Blow th' Selected Down!" @@ -10987,6 +11339,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 "" @@ -11053,16 +11415,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" @@ -11120,10 +11472,6 @@ msgid "Add Preload Node" msgstr "Add yer Preload Node" #: 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 "Add Node(s) From yer Tree" @@ -11210,7 +11558,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11252,6 +11600,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:" @@ -11455,28 +11818,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 "" @@ -11528,10 +11874,20 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Yer unique name be evil." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Yer unique name be evil." #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package publisher display name." +msgstr "Yer unique name be evil." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "Yer product GUID be evil." @@ -12180,9 +12536,6 @@ msgstr "" #~ "Blimey! I can't read th' certificate file! Are yer path n' password " #~ "trusty?" -#~ msgid "Error creating the signature object." -#~ msgstr "Blimey! I can't make th' signature object!" - #~ msgid "Error creating the package signature." #~ msgstr "Blimey! I can't create th' package signature." diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index ee6244fb84..9b681e11f7 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -1,6 +1,6 @@ # Portuguese (Brazil) translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Allyson Souza <allyson_as@outlook.com>, 2017. # Anderson Araujo <anderson.araujoprog@gmail.com>, 2018. @@ -12,7 +12,7 @@ # Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>, 2017, 2018, 2019. # João Victor Lima <victordevtb@outlook.com>, 2018. # João Vitor de Oliveira Carlos <lopogax@gmail.com>, 2018. -# Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016. +# Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016, 2019. # jonathan railarem <railarem@gmail.com>, 2017. # Lucas Silva <lucasb.hpp@gmail.com>, 2018. # Luiz G. Correia <luizgabriell2.0@gmail.com>, 2017. @@ -71,12 +71,17 @@ # Perrottacooking <perrottacooking@gmail.com>, 2019. # 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. +# Zeero <igcdzeero@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2019-10-11 15:07+0000\n" -"Last-Translator: Alan Tavares <alan1tavares@gmail.com>\n" +"PO-Revision-Date: 2019-12-23 17:07+0000\n" +"Last-Translator: Zeero <igcdzeero@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -84,7 +89,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 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 @@ -92,6 +97,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Argumento de tipo inválido para convert(), use constantes TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Esperado string de comprimento 1 (a caractere)." + +#: 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." @@ -223,17 +232,15 @@ msgstr "Alterar Chamada da Anim" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Time" -msgstr "Alterar Tempo de Quadro-Chave da Animação" +msgstr "Alterar Tempo de Quadro-Chave da Anim Multi" #: 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 Múltipla" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "Alterar Transformação da Anim" +msgstr "Alterar Transformação da Animação Múltipla" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Value" @@ -482,6 +489,10 @@ msgid "Not possible to add a new track without a root" msgstr "Não é possÃvel adicionar uma nova trilha sem uma raiz" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Adicionar Trilha Bezier" @@ -508,7 +519,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Add Method Track Key" -msgstr "Adiciona Método de Trilha Chave" +msgstr "Adicionar Chave de Trilha de Chamada de Método" #: editor/animation_track_editor.cpp msgid "Method not found in object: " @@ -594,8 +605,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" @@ -696,9 +708,8 @@ msgid "Scale Ratio:" msgstr "Razão de Escala:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Selecionar trilhas para copiar:" +msgstr "Selecionar Trilhas para Copiar" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -710,13 +721,12 @@ msgid "Copy" msgstr "Copiar" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Remover Seleção" +msgstr "Selecionar Todos/Nenhum" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" -msgstr "Adiciona Clipe de Trilha de Ãudio" +msgstr "Adicionar Clipe de Trilha de Ãudio" #: editor/animation_track_editor_plugins.cpp msgid "Change Audio Track Clip Start Offset" @@ -751,12 +761,10 @@ msgid "Replaced %d occurrence(s)." msgstr "%d ocorrência(s) substituÃda(s)." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d match." msgstr "%d correspondência." #: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy msgid "%d matches." msgstr "%d correspondências." @@ -785,6 +793,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 @@ -863,6 +875,10 @@ msgid "Extra Call Arguments:" msgstr "Argumentos de Chamada Extras:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Selecionar Método:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Avançado" @@ -1039,7 +1055,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" @@ -1511,7 +1527,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" @@ -1760,6 +1777,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)" @@ -2035,6 +2056,15 @@ msgid "Search Help" msgstr "Pesquisar Ajuda" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Diferenciar Caixa" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Mostrar auxiliadores" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Exibir Tudo" @@ -2070,6 +2100,29 @@ msgstr "Tipo de Membro" msgid "Class" msgstr "Classe" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Métodos" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Sinal" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constante" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Propriedade:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Propriedades do Tema" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Propriedade:" @@ -2132,19 +2185,19 @@ msgstr "Nó" #: editor/editor_network_profiler.cpp msgid "Incoming RPC" -msgstr "Incoming RPC" +msgstr "RPC recebido" #: editor/editor_network_profiler.cpp msgid "Incoming RSET" -msgstr "" +msgstr "RSET recebido" #: editor/editor_network_profiler.cpp msgid "Outgoing RPC" -msgstr "" +msgstr "RPC enviado" #: editor/editor_network_profiler.cpp msgid "Outgoing RSET" -msgstr "" +msgstr "RSET enviado" #: editor/editor_node.cpp editor/project_manager.cpp msgid "New Window" @@ -2726,7 +2779,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" @@ -2953,8 +3007,8 @@ msgid "Play" msgstr "Tocar" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pausar a cena" +msgid "Pause the scene execution for debugging." +msgstr "Pausar a execução da cena para depuração." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3045,9 +3099,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" @@ -3055,12 +3116,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" @@ -3117,10 +3183,13 @@ msgstr "Abrir o próximo Editor" msgid "Open the previous Editor" msgstr "Abrir o Editor anterior" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Aviso!" + #: editor/editor_path.cpp -#, fuzzy 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" @@ -3131,9 +3200,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" @@ -3378,7 +3446,6 @@ msgid "Import From Node:" msgstr "Importar a Partir do Nó:" #: editor/export_template_manager.cpp -#, fuzzy msgid "Redownload" msgstr "Baixar Novamente" @@ -3442,6 +3509,15 @@ msgid "Importing:" msgstr "Importando:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Erro ao escrever o PCK do projeto!" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3568,6 +3644,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" @@ -3646,6 +3726,10 @@ msgid "New Inherited Scene" msgstr "Nova Cena Herdada" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Definido como Cena Principal" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Abrir Cenas" @@ -3962,9 +4046,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" @@ -4377,6 +4460,18 @@ msgstr "" "possÃvel obter os nomes das trilhas." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Clipes de Animação" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Clipes de Ãudio" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funções" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Nó Renomeado" @@ -4610,6 +4705,11 @@ msgid "Move Node" msgstr "Mover Nó" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Transições" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Adicionar Transição" @@ -4694,6 +4794,10 @@ msgstr "Definir a animação final. Isso é útil para sub-transições." msgid "Transition: " msgstr "Transição: " +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "Modo Panorâmico:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4948,6 +5052,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" @@ -4969,7 +5097,7 @@ msgstr "Todos" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Sem resultados para \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5058,6 +5186,14 @@ msgid "Grid Step:" msgstr "Passo de grade:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "Linha Primária a Cada:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "passos" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Deslocamento de rotação:" @@ -5066,6 +5202,10 @@ msgid "Rotation Step:" msgstr "Passo de Rotação:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Escala:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Mover Guia Vertical" @@ -5139,6 +5279,74 @@ 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 +msgid "Left Wide" +msgstr "Esquerda Largo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Top Wide" +msgstr "Superior Largo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Right Wide" +msgstr "Direita Largo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Bottom Wide" +msgstr "Inferior Largo" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "VCenter Wide" +msgstr "Visão Centralizada Verticalmente" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "HCenter Wide" +msgstr "Visão Centralizada Horizontalmente" + +#: 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 "Apenas âncoras" @@ -5152,6 +5360,24 @@ msgstr "Alterar Âncoras" #: 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 "" +"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 +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 msgid "Lock Selected" msgstr "Fixar Seleção" @@ -5264,45 +5490,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 +msgid "Use Scale 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" @@ -5311,7 +5536,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" @@ -5379,9 +5604,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" @@ -5437,13 +5661,13 @@ msgstr "Inserir Chaves (baseado na máscara)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5648,9 +5872,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" @@ -5785,11 +6008,26 @@ msgstr "Criar Malha de Contorno" msgid "Outline Size:" msgstr "Tamanho do Contorno:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Remover item %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Atualizar a partir de Cena" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "Biblioteca de Malhas" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Adicionar Item" @@ -6426,6 +6664,25 @@ msgid "Save File As..." msgstr "Salvar como..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "Não é possÃvel obter o script para executar." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "Script falhou no recarregamento, veja os erros no console." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "Script não está no modo tool, não será capaz de executar." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"Para executar este script, o mesmo deve herdar EditorScript e ser definido " +"como modo tool." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importar Tema" @@ -6552,10 +6809,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" @@ -6648,10 +6901,6 @@ msgid "Source" msgstr "Origem" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Sinal" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Destino" @@ -6677,6 +6926,12 @@ msgid "Only resources from filesystem can be dropped." msgstr "Apenas recursos do sistema de arquivos podem ser soltos." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"Não é possÃvel descartar nós porque o script '% s' não é usado nesta cena." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "SÃmbolo de pesquisa" @@ -7106,9 +7361,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 "" @@ -7319,18 +7573,37 @@ msgid "Create Mesh2D" msgstr "Crie uma Malha2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Criando Previsualizações das Malhas" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Criar PolÃgono3D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Criar PolÃgonoDeColisão2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Criar PolÃgonoDeColisão2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Criar OclusorDeLuz2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Criar OclusorDeLuz2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite está vazio!" @@ -7380,9 +7653,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): " @@ -7409,6 +7681,11 @@ msgid "Add Frame" msgstr "Adicionar Frame" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Não se pôde carregar imagem:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "ERRO: Não foi possÃvel carregar o recurso de frame!" @@ -7433,9 +7710,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:" @@ -7683,6 +7959,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" @@ -7699,8 +7976,8 @@ msgid "Color" msgstr "Cor" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Constante" +msgid "Theme File" +msgstr "Arquivo de Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7752,13 +8029,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" @@ -7813,6 +8089,18 @@ msgid "Merge from Scene" msgstr "Fundir a partir de Cena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "Novo Tile Único" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Novo Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Novo Atlas" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Próxima Coordenada" @@ -7829,6 +8117,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Selecione a forma, subtile ou tile anterior." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "Região" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Colisão" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Oclusão" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Navegação" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Prioridade" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Ãndice Z" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modo Região" @@ -7896,6 +8212,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." @@ -8052,6 +8370,16 @@ msgid "Edit Tile Z Index" msgstr "Editar Ãndice de telha Z" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Tornar o PolÃgono Convexo" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Tornar o PolÃgono Côncavo" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Criar polÃgono de colisão" @@ -8068,92 +8396,80 @@ 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 "" +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 msgid "Stage All" 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 msgid "Commit Changes" -msgstr "Sincronizar Mudanças de Script" +msgstr "Confirmar Mudanças de Script" #: editor/plugins/version_control_editor_plugin.cpp #: modules/gdnative/gdnative_library_singleton_editor.cpp @@ -8162,25 +8478,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" @@ -8195,9 +8509,8 @@ msgid "Boolean" msgstr "Booleano" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "Amostras" +msgstr "Sampler" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8329,8 +8642,8 @@ msgid "Dodge operator." msgstr "Operador de desvio." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Operador HardLight" +msgid "HardLight operator." +msgstr "Operador HardLight." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8413,11 +8726,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 @@ -8449,9 +8761,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." @@ -8657,7 +8968,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" @@ -8665,20 +8975,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." @@ -8695,9 +9004,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." @@ -8708,54 +9016,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 "" @@ -8784,49 +9082,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." @@ -8849,17 +9138,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 @@ -8871,9 +9159,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." @@ -8888,21 +9175,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" @@ -8910,14 +9194,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" @@ -8925,31 +9208,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." @@ -8974,14 +9255,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 "" @@ -9004,54 +9283,69 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" +"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" @@ -9070,6 +9364,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 "Adicionar patches anteriores..." + +#: editor/project_export.cpp msgid "Delete patch '%s' from list?" msgstr "Excluir alteração '%s' da lista?" @@ -9122,6 +9424,15 @@ msgid "Add..." msgstr "Adicionar..." #: 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 "" +"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" msgstr "Caminho de Exportação" @@ -9150,22 +9461,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" @@ -9176,6 +9485,10 @@ msgid "Make Patch" msgstr "Criar Alteração" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Empacotar Arquivo" + +#: editor/project_export.cpp msgid "Features" msgstr "Funcionalidades" @@ -9227,6 +9540,14 @@ msgstr "Modo de exportação?" msgid "Export All" msgstr "Exportar tudo" +#: editor/project_export.cpp editor/project_manager.cpp +msgid "ZIP File" +msgstr "Arquivo ZIP" + +#: editor/project_export.cpp +msgid "Godot Game Pack" +msgstr "Pacote de Jogos Godot" + #: editor/project_export.cpp msgid "Export templates for this platform are missing:" msgstr "Modelos de exportação para esta plataforma não foram encontrados:" @@ -9395,13 +9716,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'." @@ -9412,7 +9732,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" @@ -9424,16 +9743,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" @@ -9445,13 +9764,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 "" @@ -9462,15 +9781,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 "" @@ -9481,58 +9799,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" @@ -9547,9 +9869,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" @@ -9564,13 +9885,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 " @@ -9621,18 +9941,6 @@ msgid "Device" msgstr "Dispositivo" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Pressione uma Tecla..." @@ -9765,9 +10073,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" @@ -9822,9 +10129,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" @@ -9883,12 +10189,10 @@ msgid "Locales Filter" msgstr "Filtro de Idiomas" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Show All Locales" msgstr "Mostrar todos os idiomas" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Show Selected Locales Only" msgstr "Mostrar apenas os idiomas selecionados" @@ -9902,7 +10206,7 @@ msgstr "Idiomas:" #: editor/project_settings_editor.cpp msgid "AutoLoad" -msgstr "AutoLoad" +msgstr "Carregamento Automático" #: editor/project_settings_editor.cpp msgid "Plugins" @@ -9977,9 +10281,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" @@ -10138,9 +10441,8 @@ msgid "Instance Scene(s)" msgstr "Instanciar Cena(s)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Replace with Branch Scene" -msgstr "Salvar Ramo como Cena" +msgstr "Substituir com Ramo como Cena" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" @@ -10185,23 +10487,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." @@ -10224,13 +10523,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" @@ -10257,9 +10555,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!" @@ -10278,9 +10575,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 "" @@ -10315,27 +10611,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" @@ -10358,9 +10651,8 @@ msgid "Delete (No Confirm)" msgstr "Excluir (Sem Confirmação)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Add/Create a New Node." -msgstr "Adicionar/Criar um Novo Nó" +msgstr "Adicionar/Criar um Novo Nó." #: editor/scene_tree_dock.cpp msgid "" @@ -10395,55 +10687,48 @@ 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 msgid "Button Group" -msgstr "Botão 7" +msgstr "Grupo de Botões" #: 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 "" @@ -10494,39 +10779,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'" @@ -10541,77 +10819,64 @@ 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 msgid "Template:" -msgstr "Modelo" +msgstr "Modelo:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Script Embutido" +msgstr "Script Embutido:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10626,38 +10891,32 @@ msgid "Bytes:" msgstr "Bytes:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Warning:" -msgstr "Avisos:" +msgstr "Aviso:" #: editor/script_editor_debugger.cpp msgid "Error:" msgstr "Erro:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error" -msgstr "Copiar Erro" +msgstr "Erro C++" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error:" -msgstr "Erro:" +msgstr "Erro C++:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Source" -msgstr "Origem" +msgstr "Origem C++" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Source:" -msgstr "Origem" +msgstr "Origem:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Source:" -msgstr "Origem" +msgstr "Origem C++:" #: editor/script_editor_debugger.cpp msgid "Stack Trace" @@ -10668,18 +10927,16 @@ msgid "Errors" msgstr "Erros" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Child process connected." -msgstr "Processo Filho Conectado" +msgstr "Processo Filho Conectado." #: editor/script_editor_debugger.cpp msgid "Copy Error" msgstr "Copiar Erro" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Skip Breakpoints" -msgstr "Pontos de interrupção(Breakpoints)" +msgstr "Pular Breakpoints" #: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" @@ -10698,9 +10955,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" @@ -10903,14 +11159,12 @@ 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 msgid "Disabled GDNative Singleton" -msgstr "Desabilitar Spinner de Atualização" +msgstr "Singleton GDNative Desabilitado" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -10925,10 +11179,6 @@ msgid "GDNative" msgstr "GDNative" #: 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 "O argumento step é zero!" @@ -10999,9 +11249,8 @@ msgid "GridMap Fill Selection" msgstr "Seleção de preenchimento GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Paste Selection" -msgstr "Excluir Seleção do Gridap" +msgstr "Colar Seleção do GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Paint" @@ -11068,6 +11317,11 @@ msgid "Cursor Clear Rotation" msgstr "Limpar Rotação do Cursor" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Apagar Seleção" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Limpar Seleção" @@ -11084,13 +11338,12 @@ msgid "Pick Distance:" msgstr "Escolha uma Distância:" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Filter meshes" -msgstr "Métodos de filtragem" +msgstr "Filtrar malhas" #: 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" @@ -11217,32 +11470,36 @@ msgid "Set Variable Type" 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 +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 "Não deve coincidir com um nome de tipo interno existente." +msgstr "Não deve coincidir com um nome de função existente." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new function." -msgstr "Criar um novo retângulo." +msgstr "Criar uma nova função." #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" msgstr "Variáveis:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new variable." -msgstr "Criar um novo retângulo." +msgstr "Criar uma nova variável." #: modules/visual_script/visual_script_editor.cpp msgid "Signals:" msgstr "Sinais:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new signal." -msgstr "Criar um novo polÃgono." +msgstr "Criar um novo sinal." #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" @@ -11269,7 +11526,6 @@ msgid "Add Function" msgstr "Adicionar Função" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "Remover porta de entrada" @@ -11282,22 +11538,10 @@ msgid "Add Signal" 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" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" msgstr "Remover porta de saÃda" @@ -11346,10 +11590,6 @@ msgid "Add Preload Node" 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 "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" msgstr "Adicionar Nó(s) a Partir da Ãrvore" @@ -11358,6 +11598,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" @@ -11384,9 +11627,8 @@ msgid "Connect Nodes" msgstr "Conectar Nodes" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Desconectar Nodes de Grafos" +msgstr "Desconectar Nós" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11421,26 +11663,25 @@ msgid "Paste VisualScript Nodes" msgstr "Colar Nodes VisualScript" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "Não é possÃvel copiar o nó de função." +msgstr "Não é possÃvel criar função com um 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 atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +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 msgid "Create Function" -msgstr "Renomear Função" +msgstr "Criar Função" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11463,23 +11704,32 @@ msgid "Editing Signal:" msgstr "Editando Sinal:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Tool:" -msgstr "Tornar Local" +msgstr "Criar Ferramenta:" #: modules/visual_script/visual_script_editor.cpp msgid "Members:" 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 +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 "Função:" +msgstr "function_name" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Select or create a function to edit its graph." -msgstr "Selecione ou crie uma função para editar o grafo" +msgstr "Selecione ou crie uma função para editar o grafo." #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" @@ -11498,14 +11748,12 @@ msgid "Cut Nodes" msgstr "Recortar Nodes" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Renomear Função" +msgstr "Criar Função" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Atualizar" +msgstr "Atualizar Grafo" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11629,19 +11877,22 @@ 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 msgid "" "Android build template not installed in the project. Install it from the " "Project menu." msgstr "" -"O modelo de compilação do Android não foi encontrado, por favor instale " -"modelos relevantes." +"O modelo de compilação do Android não foi instalado no projeto. Instale " +"através do menu Projeto." #: platform/android/export/export.cpp msgid "Invalid public key for APK expansion." @@ -11656,6 +11907,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 "" @@ -11664,6 +11918,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)" @@ -11674,40 +11932,23 @@ msgid "" "Building of Android project failed, check output for the error.\n" "Alternatively visit docs.godotengine.org for Android build documentation." msgstr "" +"A compilação do projeto Android falhou, verifique a saÃda pelo erro.\n" +"Alternativamente, visite docs.godotengine.org para ver a documentação de " +"compilação do Android." #: platform/android/export/export.cpp msgid "No build apk generated at: " -msgstr "" +msgstr "Nenhuma compilação apk gerada em: " #: platform/iphone/export/export.cpp 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." @@ -11722,7 +11963,7 @@ msgstr "Ãcone necessário não especificado na predefinição." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Parar Servidor HTTP" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11757,10 +11998,18 @@ msgid "Using default boot splash image." msgstr "Usando imagem boot splash padrão." #: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "Nome de pacote inválido." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "Nome único de pacote inválido." #: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "Nome de distribuidor de pacote inválido." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "GUID de produto inválido." @@ -11801,13 +12050,12 @@ msgid "Invalid splash screen image dimensions (should be 620x300)." msgstr "Dimensões inválidas da tela de abertura (deve ser 620x300)." #: scene/2d/animated_sprite.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the \"Frames\" property in " "order for AnimatedSprite to display frames." msgstr "" "Um recurso do tipo SpriteFrames deve ser criado ou definido na propriedade " -"\"Frames\" para que o nó AnimatedSprite mostre quadros." +"\"Frames\" para que o AnimatedSprite mostre quadros." #: scene/2d/canvas_modulate.cpp msgid "" @@ -11870,7 +12118,6 @@ msgstr "" "\"Animação de partÃculas\" ativada." #: scene/2d/light_2d.cpp -#, fuzzy msgid "" "A texture with the shape of the light must be supplied to the \"Texture\" " "property." @@ -11885,10 +12132,9 @@ msgstr "" "oclusor tenha efeito." #: scene/2d/light_occluder_2d.cpp -#, fuzzy msgid "The occluder polygon for this occluder is empty. Please draw a polygon." msgstr "" -"O polÃgono para este oclusor está vazio. Por favor desenhe um polÃgono!" +"O polÃgono para este oclusor está vazio. Por favor desenhe um polÃgono." #: scene/2d/navigation_polygon.cpp msgid "" @@ -11976,62 +12222,54 @@ msgstr "" "defina um." #: 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 apenas serve para fornecer a forma de colisão para um nó " -"derivado de CollisionObject2D. Por favor use-o apenas como filho de Area2D, " -"StaticBody2D, RigidBody2D, KinematicBody2D, etc. para dá-los forma." +"TileMap com Use Parent ligado precisa de um pai CollisionObject2D para dar " +"formas. Por favor, use-o como um filho de Area2D, StaticBody2D, RigidBody2D, " +"KinematicBody2D, etc. para dar-lhes uma forma." #: scene/2d/visibility_notifier_2d.cpp -#, fuzzy msgid "" "VisibilityEnabler2D works best when used with the edited scene root directly " "as parent." msgstr "" -"VisibilityEnable2D funciona melhor quando usado como filho direto da raiz da " -"cena atualmente editada." +"VisibilityEnabler2D funciona melhor quando usado com a raiz da cena editada " +"diretamente como pai." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVRCamera must have an ARVROrigin node as its parent." -msgstr "ARVRCamera deve ter um nó ARVROrigin como seu pai" +msgstr "ARVRCamera deve ter um nó ARVROrigin como seu pai." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVRController must have an ARVROrigin node as its parent." -msgstr "ARVRController deve ter um nó ARVROrigin como seu pai" +msgstr "ARVRController deve ter um nó ARVROrigin como seu pai." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "" "The controller ID must not be 0 or this controller won't be bound to an " "actual controller." msgstr "" -"A id do controle não deve ser 0 ou este controle não será atribuÃdo a um " -"controle real" +"A ID do controle não deve ser 0 ou este controle não será atribuÃdo a um " +"controle real." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVRAnchor must have an ARVROrigin node as its parent." -msgstr "ARVRAnchor deve ter um nó ARVROrigin como seu pai" +msgstr "ARVRAnchor deve ter um nó ARVROrigin como seu pai." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "" "The anchor ID must not be 0 or this anchor won't be bound to an actual " "anchor." msgstr "" -"A id da âncora não deve ser 0 ou essa âncora não será atribuÃda a uma âncora " -"geral" +"A ID da âncora não deve ser 0 ou essa âncora não será atribuÃda a uma âncora " +"real." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVROrigin requires an ARVRCamera child node." -msgstr "ARVROrigin necessita um nó ARVRCamera como filho" +msgstr "ARVROrigin necessita um nó ARVRCamera como filho." #: scene/3d/baked_lightmap.cpp msgid "%d%%" @@ -12093,13 +12331,12 @@ msgstr "" "RigidBody, KinematicBody, etc. para dá-los forma." #: scene/3d/collision_shape.cpp -#, fuzzy msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it." msgstr "" "Uma forma deve ser fornecida para que o nó CollisionShape funcione. Por " -"favor, crie um recurso de forma a ele!" +"favor, crie um recurso de forma para ele." #: scene/3d/collision_shape.cpp msgid "" @@ -12114,13 +12351,12 @@ msgid "Nothing is visible because no mesh has been assigned." msgstr "Nada é visÃvel porque nenhuma malha foi atribuÃda." #: scene/3d/cpu_particles.cpp -#, fuzzy msgid "" "CPUParticles animation requires the usage of a SpatialMaterial whose " "Billboard Mode is set to \"Particle Billboard\"." msgstr "" -"A animação CPUParticles requer o uso de um SpatialMaterial com \"Billboard " -"Particles\" ativado." +"A animação CPUParticles requer a utilização de um SpatialMaterial cujo modo " +"Billboard está definido como \"Particle Billboard\"." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -12136,7 +12372,7 @@ msgstr "" #: scene/3d/light.cpp msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." -msgstr "" +msgstr "Um SpotLight com um ângulo maior que 90 graus não pode criar sombras." #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." @@ -12169,26 +12405,24 @@ msgstr "" "Nada está visÃvel porque as meshes não foram atribuÃdas a passes de desenho." #: scene/3d/particles.cpp -#, fuzzy msgid "" "Particles animation requires the usage of a SpatialMaterial whose Billboard " "Mode is set to \"Particle Billboard\"." msgstr "" -"A animação de partÃculas requer o uso de um SpatialMaterial com \"Billboard " -"Particles\" ativado." +"A animação de partÃculas requer o uso de um SpatialMaterial cujo modo " +"Billboard está definido como \"Particle Billboard\"." #: scene/3d/path.cpp msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow só funciona quando definido como filho de um nó Path." #: scene/3d/path.cpp -#, fuzzy msgid "" "PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its " "parent Path's Curve resource." msgstr "" -"PathFollow ROTATION_ORIENTED requer \"Up Vector\" habilitado no recurso " -"Curva do Caminho pai." +"O ROTATION_ORIENTED do PathFollow requer que o \"Up Vector\" esteja ativado " +"no recurso de Curva do Caminho do seu pai." #: scene/3d/physics_body.cpp msgid "" @@ -12201,16 +12435,16 @@ msgstr "" "Ao invés disso, altere o tamanho nas formas de colisão filhas." #: scene/3d/remote_transform.cpp -#, fuzzy msgid "" "The \"Remote Path\" property must point to a valid Spatial or Spatial-" "derived node to work." -msgstr "A propriedade Caminho deve apontar para um nó Spatial para funcionar." +msgstr "" +"A propriedade \"Caminho\" deve apontar para um nó Spatial ou derivados para " +"funcionar." #: scene/3d/soft_body.cpp -#, fuzzy msgid "This body will be ignored until you set a mesh." -msgstr "Este corpo será ignorado até você definir uma malha" +msgstr "Este corpo será ignorado até você definir uma malha." #: scene/3d/soft_body.cpp msgid "" @@ -12223,13 +12457,12 @@ msgstr "" "Altere o tamanho em formas de colisão de crianças." #: 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 "" -"Um recurso do tipo SpriteFrames deve ser criado ou definido na propriedade " -"\"Frames\" para que o nó AnimatedSprite3D mostre quadros." +"Um recurso SpriteFrames deve ser criado ou definido na propriedade \"Frames" +"\" para que o nó AnimatedSprite3D mostre quadros." #: scene/3d/vehicle_body.cpp msgid "" @@ -12244,6 +12477,8 @@ msgid "" "WorldEnvironment requires its \"Environment\" property to contain an " "Environment to have a visible effect." msgstr "" +"O WorldEnvironment requer que sua propriedade \"Environment\" contenha um " +"Ambiente para ter um efeito visÃvel." #: scene/3d/world_environment.cpp msgid "" @@ -12281,7 +12516,6 @@ msgid "Nothing connected to input '%s' of node '%s'." msgstr "Nada está ligado à entrada '%s' do nó '%s'." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "No root AnimationNode for the graph is set." msgstr "Um AnimationNode raiz para o gráfico não está definido." @@ -12297,9 +12531,8 @@ msgstr "" "AnimationPlayer." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "The AnimationPlayer root node is not a valid node." -msgstr "AnimationPlayer root não é um nó válido." +msgstr "O nó raiz do AnimationPlayer não é um nó válido." #: scene/animation/animation_tree_player.cpp msgid "This node has been deprecated. Use AnimationTree instead." @@ -12311,12 +12544,11 @@ msgstr "Escolha uma cor da tela." #: scene/gui/color_picker.cpp msgid "HSV" -msgstr "" +msgstr "HSV" #: scene/gui/color_picker.cpp -#, fuzzy msgid "Raw" -msgstr "Guinada" +msgstr "Bruto" #: scene/gui/color_picker.cpp msgid "Switch between hexadecimal and code values." @@ -12327,22 +12559,23 @@ msgid "Add current color as a preset." msgstr "Adicionar cor atual como uma predefinição." #: scene/gui/container.cpp -#, fuzzy 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 "" -"O contêiner por si só não serve para nada, a menos que um script configure " -"seu comportamento de posicionamento de filhos.\n" -"Se você não pretende adicionar um script, por favor use um nó simples " -"'Control'." +"O contêiner por si só não tem nenhum propósito, a menos que um script " +"configure seu comportamento de posicionamento dos filhos.\n" +"Se você não pretende adicionar um script, use um nó de Controle simples." #: 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 "" +"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!" @@ -12353,30 +12586,28 @@ msgid "Please Confirm..." msgstr "Confirme Por Favor..." #: 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 "" -"Popups são ocultos por padrão a menos que você chame alguma das funções " -"popup*(). Torná-los visÃveis para editar não causa problema, mas eles serão " -"ocultados ao rodar a cena." +"Popups são ocultos por padrão a menos que você chame popup() ou alguma das " +"funções popup*(). Torná-los visÃveis para editar não causa problema, mas " +"eles serão ocultados ao rodar a cena." #: scene/gui/range.cpp -#, fuzzy msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." -msgstr "Se exp_edit for true, min_value deverá ser> 0." +msgstr "" +"Se \"Exp Edit\" estiver habilitado, \"Min Value\" deve ser maior que 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 " "minimum size manually." msgstr "" "Um ScrollContainer foi feito para trabalhar com um componente filho único.\n" -"Use um container como filho (VBox, HBox, etc) ou um Control e defina o " +"Use um container como filho (VBox, HBox, etc.) ou um Control e defina o " "tamanho mÃnimo manualmente." #: scene/gui/tree.cpp @@ -12404,18 +12635,16 @@ msgstr "" "render e atribua sua textura interna a algum nó para exibir." #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid source for preview." -msgstr "Fonte inválida para o shader." +msgstr "Fonte inválida para a prévia." #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for shader." msgstr "Fonte inválida para o shader." #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid comparison function for that type." -msgstr "Fonte inválida para o shader." +msgstr "Função de comparação inválida para esse tipo." #: servers/visual/shader_language.cpp msgid "Assignment to function." @@ -12433,6 +12662,34 @@ 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" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "Encaixar na grade" @@ -12910,9 +13167,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" @@ -13039,9 +13293,6 @@ msgstr "Constantes não podem serem modificadas." #~ msgid "Out-In" #~ msgstr "Out-In" -#~ msgid "Transitions" -#~ msgstr "Transições" - #~ msgid "Change Anim Len" #~ msgstr "Alterar Comprimento da Animação" @@ -13255,9 +13506,6 @@ msgstr "Constantes não podem serem modificadas." #~ msgid "Replace By" #~ msgstr "Substituir Por" -#~ msgid "Case Sensitive" -#~ msgstr "Diferenciar Caixa" - #~ msgid "Backwards" #~ msgstr "Para trás" @@ -13406,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" @@ -13716,9 +13961,6 @@ msgstr "Constantes não podem serem modificadas." #~ msgid "Loading Image:" #~ msgstr "Carregando Imagem:" -#~ msgid "Couldn't load image:" -#~ msgstr "Não se pôde carregar imagem:" - #~ msgid "Converting Images" #~ msgstr "Convertendo Imagens" @@ -13906,10 +14148,6 @@ msgstr "Constantes não podem serem modificadas." #~ "estão corretos?" #, fuzzy -#~ msgid "Error creating the signature object." -#~ msgstr "Erro ao escrever o PCK do projeto!" - -#, fuzzy #~ msgid "RAW Mode" #~ msgstr "Modo RAW" @@ -14009,10 +14247,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" @@ -14095,9 +14329,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 41de4d76bd..d134b16ca8 100644 --- a/editor/translations/pt_PT.po +++ b/editor/translations/pt_PT.po @@ -1,6 +1,6 @@ # Portuguese (Portugal) translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # António Sarmento <antonio.luis.sarmento@gmail.com>, 2016. # Carlos Vieira <carlos.vieira@gmail.com>, 2017. @@ -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-10-04 03:16+0000\n" +"PO-Revision-Date: 2019-12-23 17:08+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.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 @@ -35,6 +36,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Tipo de argumento inválido para convert(), use constantes TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Esperado um string de comprimento 1 (um caráter)." + +#: 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." @@ -426,6 +431,10 @@ msgid "Not possible to add a new track without a root" msgstr "Não é possÃvel adicionar nova pista sem uma raÃz" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Adicionar Pista Bezier" @@ -537,8 +546,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" @@ -639,9 +649,8 @@ msgid "Scale Ratio:" msgstr "Proporção de Escala:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Selecionar pistas a copiar:" +msgstr "Selecionar Pistas a Copiar" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -653,9 +662,8 @@ msgid "Copy" msgstr "Copiar" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Selecionar Nenhum" +msgstr "Selecionar Tudo/Nada" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -726,17 +734,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" @@ -804,6 +816,10 @@ msgid "Extra Call Arguments:" msgstr "Argumentos de chamada extra:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Método Recetor:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Avançado" @@ -981,7 +997,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" @@ -1277,7 +1293,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" @@ -1305,7 +1321,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" @@ -1454,7 +1470,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" @@ -1704,6 +1721,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" @@ -1979,6 +2000,15 @@ msgid "Search Help" msgstr "Procurar em Ajuda" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "SensÃvel a maiúsculas" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Mostrar ajudantes" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Mostrar Tudo" @@ -2014,6 +2044,29 @@ msgstr "Tipo do Membro" msgid "Class" msgstr "Classe" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Métodos" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Sinal" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constante" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Propriedade:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Propriedades do Tema" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Propriedade:" @@ -2667,9 +2720,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" @@ -2896,8 +2950,8 @@ msgid "Play" msgstr "Executar" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pausa a cena" +msgid "Pause the scene execution for debugging." +msgstr "Pausar a execução da cena para depuração." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3010,6 +3064,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" @@ -3066,6 +3124,10 @@ msgstr "Abrir o Editor seguinte" msgid "Open the previous Editor" msgstr "Abrir o Editor anterior" +#: editor/editor_node.h +msgid "Warning!" +msgstr "Aviso!" + #: editor/editor_path.cpp msgid "No sub-resources found." msgstr "Sub-recurso não encontrado." @@ -3386,6 +3448,14 @@ msgid "Importing:" msgstr "A Importar:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3512,6 +3582,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" @@ -3590,6 +3664,10 @@ msgid "New Inherited Scene" msgstr "Nova Cena Herdada" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Definir Como Cena Principal" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Abrir Cenas" @@ -4164,7 +4242,7 @@ msgstr "Selecionar e mover pontos, criar pontos com RMB." #: 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 "Habilita a grelha snap and show." +msgstr "Ativar ajuste e mostrar a grelha." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -4317,6 +4395,18 @@ msgstr "" "de recolher nome das faixas." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "Clips Anim" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Audio Clips" +msgstr "Clips Ãudio" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funções" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Nó Renomeado" @@ -4548,6 +4638,11 @@ msgid "Move Node" msgstr "Mover Nó" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Transição: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Adicionar Transição" @@ -4631,6 +4726,10 @@ msgstr "Definir a animação final. Útil para sub-transições." msgid "Transition: " msgstr "Transição: " +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Play Mode:" +msgstr "Modo Jogo:" + #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" @@ -4885,6 +4984,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" @@ -4906,7 +5029,7 @@ msgstr "Todos" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Nenhum resultado para \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -4993,6 +5116,14 @@ msgid "Grid Step:" msgstr "Passo da grelha:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "Linha Primária Cada:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "steps" +msgstr "passos" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Compensação da rotação:" @@ -5001,6 +5132,10 @@ msgid "Rotation Step:" msgstr "Passo da rotação:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale Step:" +msgstr "Passo de Escala:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Mover Guia Vertical" @@ -5073,6 +5208,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" @@ -5086,6 +5289,24 @@ msgstr "Mudar âncoras" #: 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 "" +"Sobreposição de Câmara de Jogo\n" +"Sobrepõe câmara de jogo com câmara do editor." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Sobreposição de Câmara de Jogo\n" +"Nenhuma instância de jogo em execução." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "Bloquear Seleção" @@ -5140,7 +5361,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 @@ -5201,24 +5422,20 @@ msgid "Ruler Mode" msgstr "Modo Régua" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Alternar Ajuste." +msgstr "Alternar ajuste inteligente." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Usar Ajuste" +msgstr "Usar Ajuste Inteligente" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Alternar Ajuste." +msgstr "Alternar ajuste de grelha." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "Ajuste de grelha" +msgstr "Usar Ajuste de Grelha" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5226,11 +5443,15 @@ msgstr "Opções de Ajuste" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" -msgstr "Usar Ajuste de rotação" +msgstr "Usar Ajuste de Rotação" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Scale Snap" +msgstr "Usar Ajuste de Escala" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "Ajuste relativo" +msgstr "Ajuste Relativo" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" @@ -5311,9 +5532,8 @@ msgid "View" msgstr "Vista" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Mostrar grelha" +msgstr "Mostrar Grelha Sempre" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5369,7 +5589,7 @@ msgstr "Inserir chaves (baseado na máscara)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5545,7 +5765,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" @@ -5580,9 +5800,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Pressione Shift para editar tangentes individualmente" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Clique direito: Apagar Ponto" +msgstr "Clique direito para adicionar ponto" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5650,7 +5869,7 @@ msgstr "Falhou o desempacotamento UV, a Malha pode não ser múltipla?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "Nenhuma Malha para depurar." +msgstr "Nenhuma malha para depurar." #: editor/plugins/mesh_instance_editor_plugin.cpp #: editor/plugins/sprite_editor_plugin.cpp @@ -5717,11 +5936,26 @@ msgstr "Criar Malha de Contorno" msgid "Outline Size:" msgstr "Tamanho do contorno:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Remover item %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Atualizar da Cena" + +#: editor/plugins/mesh_library_editor_plugin.cpp +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" @@ -6353,6 +6587,25 @@ msgid "Save File As..." msgstr "Guardar Ficheiro Como..." #: editor/plugins/script_editor_plugin.cpp +msgid "Can't obtain the script for running." +msgstr "Não é possÃvel obter o script para executar." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script failed reloading, check console for errors." +msgstr "Falhou a re-leitura do script, analise os erros na consola." + +#: editor/plugins/script_editor_plugin.cpp +msgid "Script is not in tool mode, will not be able to run." +msgstr "Script não está no modo ferramenta, não será possÃvel executá-lo." + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"To run this script, it must inherit EditorScript and be set to tool mode." +msgstr "" +"Para executar este script, terá de descender de EditorScript e ser definido " +"como modo ferramenta." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Importar tema" @@ -6479,10 +6732,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" @@ -6502,7 +6751,7 @@ msgstr "Continuar" #: editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" -msgstr "Manter depurador aberto" +msgstr "Manter Depurador Aberto" #: editor/plugins/script_editor_plugin.cpp msgid "Debug with External Editor" @@ -6575,10 +6824,6 @@ msgid "Source" msgstr "Fonte" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Sinal" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Alvo" @@ -6604,6 +6849,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "Só podem ser largados recursos do Sistema de Ficheiros ." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "ImpossÃvel largar nós porque o script '%s' não é usado neste cena." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "SÃmbolo Consulta" @@ -7033,9 +7283,8 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de velocidade Freelook" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "Modificador de velocidade Freelook" +msgstr "Modificador de Velocidade Freelook" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7059,7 +7308,7 @@ msgstr "Ajustar Nós ao Fundo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Couldn't find a solid floor to snap the selection to." -msgstr "Não foi encontrado um chão sólido para encaixar a seleção." +msgstr "Não foi encontrado um chão sólido para ajustar a seleção." #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7130,7 +7379,7 @@ msgstr "Transformar" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Object to Floor" -msgstr "Alinhar Objetos ao Chão" +msgstr "Ajustar Objetos ao Chão" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." @@ -7183,15 +7432,15 @@ msgstr "Configuração do Ajuste" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "Ajuste de translação:" +msgstr "Ajuste de Translação:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "Ajuste de rotação (graus):" +msgstr "Ajuste de Rotação (graus):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "Ajuste de escala (%):" +msgstr "Ajuste de Escala (%):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" @@ -7246,18 +7495,37 @@ msgid "Create Mesh2D" msgstr "Criar Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "A criar pré-visualizações de Malha" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Criar Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Criar CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Criar CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Criar LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Criar LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite está vazia!" @@ -7306,9 +7574,8 @@ msgid "Simplification: " msgstr "Simplificação: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Crescer (Pixeis): " +msgstr "Encolher (Pixeis): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7335,6 +7602,11 @@ msgid "Add Frame" msgstr "Adicionar Frame" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Falha ao carregar recurso." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "ERRO: Recurso de frame não carregado!" @@ -7449,11 +7721,11 @@ msgstr "Nenhum" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" -msgstr "Ajuste de pixel" +msgstr "Ajuste de Pixel" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Snap" -msgstr "Ajuste de grelha" +msgstr "Ajuste de Grelha" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Auto Slice" @@ -7541,7 +7813,7 @@ msgstr "Verificar item" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "Item verificado" +msgstr "Item Marcado" #: editor/plugins/theme_editor_plugin.cpp msgid "Radio Item" @@ -7549,7 +7821,7 @@ msgstr "Item Rádio" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Radio Item" -msgstr "Item Rádio marcado" +msgstr "Item Rádio Marcado" #: editor/plugins/theme_editor_plugin.cpp msgid "Named Sep." @@ -7608,6 +7880,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" @@ -7624,8 +7897,8 @@ msgid "Color" msgstr "Cor" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Constante" +msgid "Theme File" +msgstr "Ficheiro Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7737,6 +8010,18 @@ msgid "Merge from Scene" msgstr "Fundir a partir da Cena" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Single Tile" +msgstr "Novo Tile Único" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Autotile" +msgstr "Novo Autotile" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "New Atlas" +msgstr "Novo Atlas" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Next Coordinate" msgstr "Próxima Coordenada" @@ -7753,6 +8038,34 @@ msgid "Select the previous shape, subtile, or Tile." msgstr "Selecione a forma, subtile ou Tile anterior." #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Region" +msgstr "Região" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision" +msgstr "Colisão" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion" +msgstr "Oclusão" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation" +msgstr "Navegação" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask" +msgstr "Bitmask" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority" +msgstr "Prioridade" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Z Index" +msgstr "Ãndice Z" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Modo Região" @@ -7810,7 +8123,7 @@ msgstr "Manter polÃgono dentro da região Rect." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." -msgstr "Ativar o snap and show grid (configurável através do Inspector)." +msgstr "Ativar ajuste e mostrar a grelha (configurável através do Inspetor)." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" @@ -7979,6 +8292,16 @@ msgid "Edit Tile Z Index" msgstr "Editar Ãndice Z de Tile" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Fazer PolÃgono Convexo" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Fazer PolÃgono Côncavo" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Criar PolÃgono de Colisão" @@ -8092,9 +8415,8 @@ 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" @@ -8110,7 +8432,7 @@ msgstr "Lógico" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sampler" -msgstr "" +msgstr "Mostrador" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8158,7 +8480,7 @@ msgstr "Definir Nome do Uniform" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Input Default Port" -msgstr "Definir Porta de Entrada por Defeito" +msgstr "Definir Porta de Entrada Padrão" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add Node to Visual Shader" @@ -8242,8 +8564,8 @@ msgid "Dodge operator." msgstr "Operador Desvio." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Operador HardLight" +msgid "HardLight operator." +msgstr "Operador HardLight." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8881,13 +9203,14 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" "Expressão personalizada em Linguagem Godot Shader, colocada sobre o shader " "resultante. Pode colocar várias definições de função e chamá-las depois nas " -"Expressões. Pode também declarar variantes, uniformes e constantes." +"Expressões. Também pode declarar variantes, uniformes e constantes." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -8959,6 +9282,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?" @@ -9010,6 +9341,15 @@ msgid "Add..." msgstr "Adicionar..." #: 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 "" +"Se marcada, a predefinição estará disponÃvel para uso em distribuição um-" +"clique.\n" +"Apenas uma predefinição por plataforma pode ser marcada como executável." + +#: editor/project_export.cpp msgid "Export Path" msgstr "Exportar Caminho" @@ -9038,22 +9378,20 @@ msgid "Resources to export:" msgstr "Recursos a 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 Ficheiros não-recursos (separados por vÃrgula, ex: *." -"json, *.txt)" +"Filtros para exportar ficheiros/pastas não-recursos\n" +"(separados por vÃrgula, ex: *.json, *.txt, docs/*)" #: 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 Ficheiros do Projeto (separados por vÃrgula, ex: *." -"json, *.txt)" +"Filtros para excluir ficheiros/pastas do projeto\n" +"(separados por vÃrgula, ex: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9061,7 +9399,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" @@ -9115,6 +9457,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:" @@ -9125,7 +9475,7 @@ msgstr "Gerir Modelos de Exportação" #: editor/project_export.cpp msgid "Export With Debug" -msgstr "Exportar com depuração" +msgstr "Exportar com Depuração" #: editor/project_manager.cpp msgid "The path does not exist." @@ -9420,6 +9770,10 @@ msgid "Projects" msgstr "Projetos" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "Última modificação" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Analisar" @@ -9504,18 +9858,6 @@ msgid "Device" msgstr "Dispositivo" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Pressione uma tecla..." @@ -9653,7 +9995,7 @@ msgstr "Evento Ação de Entrada movido" #: editor/project_settings_editor.cpp msgid "Override for Feature" -msgstr "Sobrepor por caracterÃstica" +msgstr "Sobrepor por CaracterÃstica" #: editor/project_settings_editor.cpp msgid "Add Translation" @@ -9701,7 +10043,7 @@ msgstr "Geral" #: editor/project_settings_editor.cpp msgid "Override For..." -msgstr "Sobrepor por..." +msgstr "Sobrepor Por..." #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "The editor must be restarted for changes to take effect." @@ -9789,7 +10131,7 @@ msgstr "Plugins" #: editor/property_editor.cpp msgid "Preset..." -msgstr "Predefinido..." +msgstr "Predefinição..." #: editor/property_editor.cpp msgid "Zero" @@ -9957,7 +10299,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" @@ -10096,13 +10438,12 @@ msgstr "" "para os seus valores 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\" irá reverter todas as propriedades do Nó " -"para os seus valores padrão." +"Ativar \"Carregar como Espaço Reservado\" vai desativar \"Filhos Editáveis\" " +"e fazer com que todas as propriedades do nó revertam para valores padrão." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10441,19 +10782,16 @@ msgid "Will load an existing script file." msgstr "Vai carregar ficheiro de script existente." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Nome de classe" +msgstr "Nome de Classe:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Modelo" +msgstr "Modelo:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Script incorporado" +msgstr "Script Incorporado:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10756,10 +11094,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "Esperado um string de comprimento 1 (um caráter)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "O argumento \"step\" é zero!" @@ -10898,6 +11232,11 @@ msgid "Cursor Clear Rotation" msgstr "Limpar rotação do Cursor" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Apagar seleção" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Limpar Seleção" @@ -11046,8 +11385,16 @@ 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." +msgstr "Sobrepõe-se a função incorporada existente." #: modules/visual_script/visual_script_editor.cpp msgid "Create a new function." @@ -11094,7 +11441,6 @@ msgid "Add Function" msgstr "Adicionar Função" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "Remover porta de entrada" @@ -11107,24 +11453,12 @@ msgid "Add Signal" 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" +msgstr "Remover Porta de Entrada" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" -msgstr "Remover porta de saÃda" +msgstr "Remover Porta de SaÃda" #: modules/visual_script/visual_script_editor.cpp msgid "Change Expression" @@ -11148,7 +11482,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." @@ -11171,10 +11505,6 @@ msgid "Add Preload Node" 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 "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" msgstr "Adicionar Nó da Ãrvore" @@ -11183,6 +11513,8 @@ msgid "" "Can't drop properties because script '%s' is not used in this scene.\n" "Drop holding 'Shift' to just copy the signature." msgstr "" +"ImpossÃvel largar propriedades porque o script '%s' não é usado neste cena.\n" +"Largue com 'Shift' para copiar apenas a assinatura." #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11209,9 +11541,8 @@ msgid "Connect Nodes" msgstr "Conectar Nós" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Desconectar Nós do gráfico" +msgstr "Desconectar Nós" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11246,26 +11577,24 @@ msgid "Paste VisualScript Nodes" msgstr "Colar Nós VisualScript" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "ImpossÃvel copiar o Nó Função." +msgstr "ImpossÃvel criar função com um nó função." #: modules/visual_script/visual_script_editor.cpp msgid "Can't create function of nodes from nodes of multiple functions." -msgstr "" +msgstr "ImpossÃvel criar função de nós com nós de várias funções." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +msgid "Select at least one node with sequence port." +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 msgid "Create Function" -msgstr "Mudar nome da Função" +msgstr "Criar Função" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11296,9 +11625,20 @@ msgid "Members:" 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 +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 "Função:" +msgstr "function_name" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11321,14 +11661,12 @@ msgid "Cut Nodes" msgstr "Cortar Nós" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Mudar nome da Função" +msgstr "Criar Função" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Atualizar" +msgstr "Atualizar Gráfico" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11515,30 +11853,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 " @@ -11554,7 +11872,7 @@ msgstr "O Ãcone obrigatório não está especificado na predefinição." #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Parar Servidor HTTP" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11589,10 +11907,18 @@ msgid "Using default boot splash image." msgstr "A usar imagem padrão de inicialização." #: platform/uwp/export/export.cpp +msgid "Invalid package short name." +msgstr "Nome curto de pacote inválido." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "Nome único de pacote inválido." #: platform/uwp/export/export.cpp +msgid "Invalid package publisher display name." +msgstr "Nome de autor de pacote inválido." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "GUID do produto inválido." @@ -11632,7 +11958,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)." @@ -12247,6 +12573,35 @@ 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" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "Ajustar à Grelha" @@ -12897,9 +13252,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" @@ -13229,9 +13581,6 @@ msgstr "Constantes não podem ser modificadas." #~ msgid "Replace By" #~ msgstr "Substituir por" -#~ msgid "Case Sensitive" -#~ msgstr "SensÃvel a maiúsculas" - #~ msgid "Backwards" #~ msgstr "Para trás" diff --git a/editor/translations/ro.po b/editor/translations/ro.po index e3f53a56f3..02886b9b34 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -1,6 +1,6 @@ # Romanian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Calin Sopterean <csopterean@gmail.com>, 2018. # Filip <filipanton@tutanota.com>, 2018. @@ -8,12 +8,13 @@ # TigerxWood <TigerxWood@gmail.com>, 2018. # Grigore Antoniuc <grisa181@gmail.com>, 2018. # Boby Ilea <boby.ilea@gmail.com>, 2019. +# EVOKZH <avip.ady@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-26 03:53+0000\n" -"Last-Translator: Boby Ilea <boby.ilea@gmail.com>\n" +"PO-Revision-Date: 2019-11-09 22:04+0000\n" +"Last-Translator: EVOKZH <avip.ady@gmail.com>\n" "Language-Team: Romanian <https://hosted.weblate.org/projects/godot-engine/" "godot/ro/>\n" "Language: ro\n" @@ -22,11 +23,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 3.9.1-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 msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Argument de tip invalid pentru convert(), folosiÈ›i constante TYPE_*" + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp @@ -160,19 +165,16 @@ msgid "Anim Change Call" msgstr "Anim Schimbare apelare" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Keyframe Time" -msgstr "Anim SchimbaÈ›i Timpul Cadru Cheie" +msgstr "Anim Timpul multifuncÈ›ional pentru modificarea cheii" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transition" -msgstr "Anim SchimbaÈ›i TranziÈ›ie" +msgstr "Anim TranziÈ›ie multifuncÈ›ională" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Anim Multi Change Transform" -msgstr "Anim Schimbare transformare" +msgstr "Anim Transformare multifuncÈ›ională" #: editor/animation_track_editor.cpp #, fuzzy @@ -192,7 +194,7 @@ msgstr "Schimbă Numele AnimaÈ›iei:" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "" +msgstr "SchimbaÈ›i Bucla AnimaÈ›iei" #: editor/animation_track_editor.cpp msgid "Property Track" @@ -221,9 +223,8 @@ msgid "Animation Playback Track" msgstr "OpreÈ™te rularea animaÈ›iei. (S)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation length (frames)" -msgstr "Lungime AnimaÈ›ie (în secunde)." +msgstr "Lungime AnimaÈ›ie (în frame-uri)." #: editor/animation_track_editor.cpp #, fuzzy @@ -438,6 +439,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Anim AdăugaÈ›i Pistă" @@ -548,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 "Modificare" @@ -744,6 +750,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 @@ -829,6 +839,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" @@ -1015,7 +1030,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" @@ -1505,7 +1520,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" @@ -1770,6 +1786,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" @@ -2064,6 +2085,16 @@ msgstr "CăutaÈ›i în Ajutor" #: editor/editor_help_search.cpp #, fuzzy +msgid "Case Sensitive" +msgstr "ÃŽnchide Scena" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Arată AsistenÈ›ii" + +#: editor/editor_help_search.cpp +#, fuzzy msgid "Display All" msgstr "ÃŽnlocuiÈ›i Tot" @@ -2107,6 +2138,30 @@ msgstr "Membri" msgid "Class" msgstr "Clasă:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metode" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Semnale" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Permanent" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Proprietăți" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Proprietăți" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2775,7 +2830,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" @@ -3015,8 +3071,8 @@ msgid "Play" msgstr "Rulează" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "ÃŽntrerupe scena" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3124,6 +3180,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" @@ -3180,6 +3241,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." @@ -3502,6 +3567,14 @@ msgid "Importing:" msgstr "Se importă:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3630,6 +3703,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" @@ -3713,6 +3791,11 @@ msgstr "Scenă Derivată Nouă..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Alege o Scenă Principală" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Deschide o scenă" @@ -4499,6 +4582,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Anim AdăugaÈ›i Pistă" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "FaceÈ›i FuncÈ›ia" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4743,6 +4840,11 @@ msgstr "Mod Mutare" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "TranziÈ›ie" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "TranziÈ›ie" @@ -4829,6 +4931,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" @@ -5091,6 +5198,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" @@ -5208,6 +5341,15 @@ msgid "Grid Step:" msgstr "Pas Grilă:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 paÈ™i" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Compensare RotaÈ›ie:" @@ -5217,6 +5359,11 @@ msgstr "Pas RotaÈ›ie:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "Dimensiune:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "Mută ghidul vertical" @@ -5297,6 +5444,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" @@ -5310,6 +5536,20 @@ msgstr "Modifică Ancorele" #: 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 #, fuzzy msgid "Lock Selected" msgstr "Selectează" @@ -5462,6 +5702,11 @@ msgid "Use Rotation Snap" msgstr "FoloseÈ™te RotaÈ›ia Snap" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "Utilizează Snap" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Snap Relativ" @@ -5612,7 +5857,7 @@ msgstr "Inserează Notă (Melodii existente)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5971,11 +6216,27 @@ msgstr "Creează Mesh de Contur" msgid "Outline Size:" msgstr "Dimensiunea Conturului:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Elimini obiectul %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Actualizează din Scenă" + +#: 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" @@ -6640,6 +6901,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 "" @@ -6772,10 +7050,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 "" @@ -6872,11 +7146,6 @@ msgid "Source" msgstr "Resursă" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Semnale" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6905,6 +7174,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7564,21 +7838,40 @@ msgstr "Creează Mesh de Contur" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Se creează Previzualizările Mesh-ului" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Crează Poligon" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Creare Poligon de Navigare" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Creare Poligon de Navigare" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Creează Poligon de Ocluziune" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Creează Poligon de Ocluziune" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Mesh-ul este gol!" @@ -7662,6 +7955,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "ÃŽncărcarea resursei a eÈ™uat." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7950,6 +8248,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7966,8 +8265,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Permanent" +#, fuzzy +msgid "Theme File" +msgstr "DeschideÈ›i un FiÈ™ier" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8086,6 +8386,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 "" @@ -8104,6 +8417,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:" @@ -8341,6 +8689,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Deplasare poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Deplasare poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Creare Poligon de Navigare" @@ -8635,8 +8993,9 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "Dimensiune (raport):" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -9232,9 +9591,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9299,6 +9659,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 "" @@ -9345,6 +9714,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "Exportă Proiectul" @@ -9394,6 +9769,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " FiÈ™iere" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9449,6 +9829,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 "" @@ -9716,6 +10105,10 @@ msgid "Projects" msgstr "Proiect" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9803,18 +10196,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -11085,10 +11466,6 @@ 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 "" @@ -11227,6 +11604,11 @@ msgid "Cursor Clear Rotation" msgstr "Curăță RotaÈ›ia Cursorului" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Toată selecÈ›ia" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Curăță SelecÈ›ia" @@ -11372,6 +11754,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 " @@ -11439,16 +11831,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" @@ -11498,10 +11880,6 @@ 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 "" @@ -11584,7 +11962,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11626,6 +12004,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 "" @@ -11827,27 +12220,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 "" @@ -11898,11 +12274,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Nume nevalid." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Nume nevalid." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Nume nevalid." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Nume de Proiect Nevalid." @@ -12439,6 +12825,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "ÃŽntrerupe scena" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "Snap pe grilă" @@ -12660,10 +13049,6 @@ msgstr "" #~ msgstr "RMB: Șterge Punctul." #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Vizualizează FiÈ™ierele" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "Zoom-aÈ›i ÃŽn" @@ -12683,10 +13068,6 @@ msgstr "" #~ msgstr "Obiecte Tema InterfaÈ›a Grafică:" #, fuzzy -#~ msgid "Property: " -#~ msgstr "Proprietăți" - -#, fuzzy #~ msgid "Toggle folder status as Favorite." #~ msgstr "Marchează statutul directorului ca Favorit" diff --git a/editor/translations/ru.po b/editor/translations/ru.po index 4e6bd592b3..d865d8b829 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -1,6 +1,6 @@ # Russian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Ðркадий ÐÐ²Ð°Ñ <savvot@gmail.com>, 2018. # Artem Varaksa <aymfst@gmail.com>, 2018. @@ -57,12 +57,16 @@ # Maxim Samburskiy <alpacones@outlook.com>, 2019. # Dima Koshel <form.eater@gmail.com>, 2019. # 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-10-22 02:53+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" @@ -71,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.9.1-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 @@ -79,6 +83,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Ðеверный тип аргумента Ð´Ð»Ñ convert(), иÑпользуйте TYPE_* конÑтанты." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "ОжидалаÑÑŒ Ñтрока длиной 1 (Ñимвол)." + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." @@ -210,29 +218,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" @@ -472,6 +475,10 @@ msgid "Not possible to add a new track without a root" msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ новый трек без корневого узла" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Добавить Дорожку Безье" @@ -527,7 +534,6 @@ msgstr "" "один трек." #: editor/animation_track_editor.cpp -#, fuzzy msgid "" "This animation belongs to an imported scene, so changes to imported tracks " "will not be saved.\n" @@ -539,25 +545,24 @@ msgid "" "Alternatively, use an import preset that imports animations to separate " "files." msgstr "" -"Ðта Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾ÑитÑÑ Ðº импортированной Ñцене, поÑтому Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² " -"импортированных дорожках не ÑохранÑÑŽÑ‚ÑÑ.\n" +"Ð”Ð°Ð½Ð½Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ‚ импортированной Ñцене, поÑтому изменениÑ, " +"внеÑенные в импортированные треки, не будут Ñохранены.\n" "\n" -"Чтобы включить возможноÑть Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑких дорожек, перейдите к " -"наÑтройкам импорта Ñцены и уÑтановите Ñледующие параметры\n" -"\"ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ > Хранение(Animation > Storage)\" в меню \"Файлы(Files)\", " -"выберите \"ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ > СохранÑть пользовательÑкие дорожки(Animation > Keep " -"Custom Tracks)\", а затем импортируйте заново.\n" -"Кроме того, можно иÑпользовать предуÑтановку импорта, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÑ‚ " -"анимацию Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²." +"Чтобы активировать возможноÑть Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑких треков, перейдите " +"к наÑтройкам импорта Ñцены и уÑтановите\n" +"\"ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ > Хранилище\" в значение \"Файлы\", а также включите пункт " +"\"ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ > СохранÑть пользовательÑкие треки\", и заново импортируйте " +"Ñцену.\n" +"Ð’ качеÑтве альтернативы иÑпользуйте преÑет импорта, который импортирует " +"анимации в отдельные файлы." #: editor/animation_track_editor.cpp msgid "Warning: Editing imported animation" msgstr "Предупреждение: Редактирование импортированной анимации" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "Путь к узлу AnimationPlayer, Ñодержащему анимацию, не задан." +msgstr "Выберите узел AnimationPlayer Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¹." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." @@ -587,8 +592,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 "Редактировать" @@ -689,9 +695,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 @@ -703,9 +708,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" @@ -744,14 +748,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" @@ -778,6 +780,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 @@ -820,12 +826,11 @@ msgstr "ПриÑоединить к Узлу:" #: editor/connections_dialog.cpp msgid "Connect to Script:" -msgstr "Соединить Ñо Ñкриптом:" +msgstr "ПриÑоединить к Ñкрипту:" #: editor/connections_dialog.cpp -#, fuzzy msgid "From Signal:" -msgstr "Сигналы:" +msgstr "От Ñигнала:" #: editor/connections_dialog.cpp msgid "Scene does not contain any script." @@ -858,8 +863,12 @@ msgstr "Дополнительные параметры вызова:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Выбрать метод" + +#: editor/connections_dialog.cpp msgid "Advanced" -msgstr "Дополнительные параметры" +msgstr "Дополнительно" #: editor/connections_dialog.cpp msgid "Deferred" @@ -1035,7 +1044,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 "Путь" @@ -1207,12 +1216,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 " @@ -1221,8 +1228,8 @@ msgid "" msgstr "" "Движок Godot опираетÑÑ Ð½Ð° Ñ€Ñд Ñторонних беÑплатных и открытых библиотек, " "ÑовмеÑтимых Ñ ÑƒÑловиÑми лицензии MIT. Ðиже приводитÑÑ Ð¸Ñчерпывающий ÑпиÑок " -"вÑех Ñторонних компонентов вмеÑте Ñ Ð¸Ñ… авторÑкими правами и уÑловиÑми " -"лицензионного ÑоглашениÑ." +"вÑех Ñторонних компонентов вмеÑте Ñ Ð¸Ñ… ÑоответÑтвующими заÑвлениÑми об " +"авторÑких правах и уÑловиÑми лицензии." #: editor/editor_about.cpp msgid "All Components" @@ -1237,7 +1244,6 @@ msgid "Licenses" msgstr "Лицензии" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Error opening package file, not in ZIP format." msgstr "Ошибка при открытии файла пакета, не в формате zip." @@ -1307,9 +1313,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" @@ -1510,7 +1515,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 "Ðазвание" @@ -1585,16 +1591,16 @@ msgid "" "Target platform requires 'ETC' texture compression for GLES2. Enable 'Import " "Etc' in Project Settings." msgstr "" -"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует Ñжатие текÑтур 'ETC' Ð´Ð»Ñ GLES2. Включите 'Импорт " -"Etc' в наÑтройках проекта." +"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует Ñжатие текÑтур «ETC» Ð´Ð»Ñ GLES2. Включите «Import " +"Etc» в ÐаÑтройках проекта." #: editor/editor_export.cpp msgid "" "Target platform requires 'ETC2' texture compression for GLES3. Enable " "'Import Etc 2' in Project Settings." msgstr "" -"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует компреÑÑию текÑтур 'ETC2' Ð´Ð»Ñ GLES2. Включите " -"'Import Etc 2' в наÑтройках проекта." +"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует компреÑÑию текÑтур «ETC2» Ð´Ð»Ñ GLES2. Включите " +"«Import Etc 2» в ÐаÑтройках проекта." #: editor/editor_export.cpp msgid "" @@ -1603,9 +1609,9 @@ msgid "" "Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" -"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует ÑÐ¶Ð°Ñ‚Ð¸Ñ Ñ‚ÐµÐºÑтур 'ETC' Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð° драйвера к GLES2.\n" -"Включите 'Импорт Etc' в ÐаÑтройках Проекта или отключите 'Откат Драйвера " -"Включен'." +"Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° требует ÑÐ¶Ð°Ñ‚Ð¸Ñ Ñ‚ÐµÐºÑтур «ETC» Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð° драйвера к GLES2.\n" +"Включите «Import Etc» в ÐаÑтройках проекта или отключите «Driver Fallback " +"Enabled»." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -1641,29 +1647,24 @@ msgid "Asset Library" msgstr "Библиотека реÑурÑов" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Scene Tree Editing" -msgstr "Дерево Ñцены (Узлы):" +msgstr "Редактирование дерева Ñцены" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Import Dock" -msgstr "Импорт" +msgstr "Панель «Импорт»" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Node Dock" -msgstr "Режим перемещениÑ" +msgstr "Панель «Узел»" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "FileSystem and Import Docks" -msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема" +msgstr "Панели Â«Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема» и «Импорт»" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Erase profile '%s'? (no undo)" -msgstr "Заменить вÑÑ‘ (без возможноÑти отмены)" +msgstr "Стереть профиль «%s»? (Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ)" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" @@ -1687,14 +1688,12 @@ msgid "(Editor Disabled)" msgstr "(Редактор отключен)" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Class Options:" -msgstr "ОпиÑание клаÑÑа:" +msgstr "Параметры клаÑÑа:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Enable Contextual Editor" -msgstr "Открыть Ñледующий редактор" +msgstr "Включить контекÑтный редактор" #: editor/editor_feature_profile.cpp msgid "Enabled Properties:" @@ -1710,33 +1709,31 @@ msgstr "ДоÑтупные клаÑÑÑ‹:" #: editor/editor_feature_profile.cpp msgid "File '%s' format is invalid, import aborted." -msgstr "Ðеверный формат файла \"% s\", импорт прерван." +msgstr "Ðеверный формат файла \"%s\", импорт прерван." #: editor/editor_feature_profile.cpp msgid "" "Profile '%s' already exists. Remove it first before importing, import " "aborted." msgstr "" -"Профиль '%s' уже ÑущеÑтвует. Удалите его перед импортом, импорт отменен." +"Профиль \"%s\" уже ÑущеÑтвует. Удалите его перед импортированием, импорт " +"прерван." #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Error saving profile to path: '%s'." -msgstr "Ошибка при загрузке шаблона '%s'" +msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð² \"%s\"." #: editor/editor_feature_profile.cpp msgid "Unset" msgstr "СброÑить" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Current Profile:" -msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:" +msgstr "Текущий профиль:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Make Current" -msgstr "Выбранный:" +msgstr "Сделать текущим" #: editor/editor_feature_profile.cpp #: editor/plugins/animation_player_editor_plugin.cpp @@ -1754,37 +1751,36 @@ msgid "Export" msgstr "ÐкÑпорт" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Available Profiles:" -msgstr "ДоÑтупные узлы:" +msgstr "ДоÑтупные профили:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Class Options" -msgstr "ОпиÑание клаÑÑа" +msgstr "Параметры клаÑÑа" #: editor/editor_feature_profile.cpp msgid "New profile name:" msgstr "Ðовое имÑ:" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Erase Profile" -msgstr "Стереть облаÑть" +msgstr "Стереть профиль" + +#: editor/editor_feature_profile.cpp +msgid "Godot Feature Profile" +msgstr "Профиль возможноÑтей Godot" #: editor/editor_feature_profile.cpp msgid "Import Profile(s)" msgstr "Импортировать проект" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Export Profile" -msgstr "ÐкÑпортировать проект" +msgstr "ÐкÑпортировать профиль" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Manage Editor Feature Profiles" -msgstr "Управление шаблонами ÑкÑпорта" +msgstr "Управление профилÑми редактора" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select Current Folder" @@ -1893,30 +1889,27 @@ msgstr "ПеремеÑтить избранное вниз" #: editor/editor_file_dialog.cpp msgid "Go to previous folder." -msgstr "Перейти к родительÑкой папке." +msgstr "Перейти к предыдущей папке." #: editor/editor_file_dialog.cpp -#, fuzzy msgid "Go to next folder." -msgstr "Перейти к родительÑкой папке." +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 -#, fuzzy msgid "Refresh files." -msgstr "ПоиÑк файлов" +msgstr "Обновить файлы." #: editor/editor_file_dialog.cpp msgid "(Un)favorite current folder." msgstr "Добавить или удалить текущую папку из избранных." #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Toggle the visibility of hidden files." -msgstr "Скрыть файлы" +msgstr "Переключить видимоÑть Ñкрытых файлов." #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." @@ -1978,9 +1971,8 @@ msgid "Inherited by:" msgstr "УнаÑледован:" #: editor/editor_help.cpp -#, fuzzy msgid "Brief Description" -msgstr "Краткое опиÑание:" +msgstr "Краткое опиÑание" #: editor/editor_help.cpp msgid "Properties" @@ -2011,9 +2003,8 @@ msgid "Class Description" msgstr "ОпиÑание клаÑÑа" #: editor/editor_help.cpp -#, fuzzy msgid "Online Tutorials" -msgstr "Онлайн уроки:" +msgstr "Онлайн-уроки" #: editor/editor_help.cpp msgid "" @@ -2052,7 +2043,16 @@ 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 "Case Sensitive" +msgstr "ЧувÑтвительноÑть региÑтра" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Показывать помощники" #: editor/editor_help_search.cpp msgid "Display All" @@ -2090,6 +2090,29 @@ msgstr "Тип члена" msgid "Class" msgstr "КлаÑÑ" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Методы" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Сигнал" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "КонÑтанта" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Параметр:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "СвойÑтва темы" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Параметр:" @@ -2167,9 +2190,8 @@ msgid "Outgoing RSET" msgstr "ИÑходÑщий RSET" #: editor/editor_node.cpp editor/project_manager.cpp -#, fuzzy msgid "New Window" -msgstr "Окно" +msgstr "Ðовое окно" #: editor/editor_node.cpp msgid "Project export failed with error code %d." @@ -2313,13 +2335,13 @@ msgstr "" "чтобы лучше понÑть Ñтот процеÑÑ." #: editor/editor_node.cpp -#, fuzzy 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 "" -"Ðтот реÑÑƒÑ€Ñ Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ‚ к Ñцене, инÑтанцированной или унаÑледованной.\n" -"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ будут Ñохранены при Ñохранении текущей Ñцены." +"Ðтот реÑÑƒÑ€Ñ Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ‚ Ñцене, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±Ñ‹Ð»Ð° инÑтанцирована или " +"унаÑледована.\n" +"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² нём не будут Ñохранены при Ñохранении текущей Ñцены." #: editor/editor_node.cpp msgid "" @@ -2330,7 +2352,6 @@ msgstr "" "наÑтройки в панеле импорта, а затем повторно импортируйте." #: editor/editor_node.cpp -#, fuzzy 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" @@ -2338,28 +2359,27 @@ msgid "" "understand this workflow." msgstr "" "Ðта Ñцена была импортирована, так что Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ будут Ñохранены.\n" -"ИнÑтанÑинг или наÑледование позволит внеÑти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² неё.\n" -"ПожалуйÑта, прочитайте документацию, имеющую отношение к импорту Ñцены, " -"чтобы лучше понÑть Ñтот процеÑÑ." +"ИнÑтанцирование или наÑледование позволит внеÑти в неё изменениÑ.\n" +"ПожалуйÑта, прочитайте документацию об импортировании Ñцен, чтобы лучше " +"понÑть Ñтот процеÑÑ." #: editor/editor_node.cpp -#, fuzzy 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 "" "Ðто удаленный объект, поÑтому Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ будут Ñохранены.\n" -"ПожалуйÑта, прочитайте документацию отноÑÑщуюÑÑ Ðº отладке, чтобы лучше " -"понÑть Ñтот процеÑÑ." +"ПожалуйÑта, прочитайте документацию, каÑающуюÑÑ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸, чтобы лучше понÑть " +"Ñтот процеÑÑ." #: editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "Ðет определённой Ñцены, чтобы работать." +msgstr "Ðет открытой Ñцены Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка." #: editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." -msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена никогда не была Ñохранена, Ñохраните его до выполнениÑ." +msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена никогда не была Ñохранена, Ñохраните её перед запуÑком." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -2499,9 +2519,8 @@ msgid "Close Scene" msgstr "Закрыть Ñцену" #: editor/editor_node.cpp -#, fuzzy msgid "Reopen Closed Scene" -msgstr "Закрыть Ñцену" +msgstr "Открыть ранее закрытую Ñцену" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." @@ -2567,9 +2586,8 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" -"Ðе назначена Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñцена. Хотите выбрать?\n" -"Позже вы можете указать её в параметре \"main_scene\" раÑположенном\n" -"в \"ÐаÑтройки проекта - ОÑновное - application\"." +"Ðе назначена Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñцена, хотите выбрать?\n" +"Ð’Ñ‹ можете изменить её позже в ÐаÑтройках проекта (ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Â«application»)." #: editor/editor_node.cpp msgid "" @@ -2577,9 +2595,8 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" -"Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ñцена '%s' не ÑущеÑтвует. Хотите выбрать другую?\n" -"Позже вы можете указать её в параметре \"main_scene\" раÑположенном\n" -"в \"ÐаÑтройки проекта - ОÑновное - application\"." +"Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ñцена «%s» не ÑущеÑтвует, хотите выбрать другую?\n" +"Ð’Ñ‹ можете изменить её позже в ÐаÑтройках проекта (ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Â«application»)." #: editor/editor_node.cpp msgid "" @@ -2587,9 +2604,9 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" -"Выбранный файл '%s' не ÑвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ Ñцены. Хотите выбрать другой файл?\n" -"Позже вы можете указать её в параметре \"main_scene\" раÑположенном\n" -"в \"ÐаÑтройки проекта - ОÑновное - application\"." +"Выбранный файл «%s» не ÑвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ Ñцены, хотите выбрать другой?\n" +"Ð’Ñ‹ можете изменить главную Ñцену позже в ÐаÑтройках проекта (ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ " +"«application»)." #: editor/editor_node.cpp msgid "Save Layout" @@ -2618,9 +2635,8 @@ msgid "Close Tab" msgstr "Закрыть вкладку" #: editor/editor_node.cpp -#, fuzzy msgid "Undo Close Tab" -msgstr "Закрыть вкладку" +msgstr "Отменить закрытие вкладки" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Close Other Tabs" @@ -2675,9 +2691,8 @@ msgid "Go to previously opened scene." msgstr "Перейти к предыдущей открытой Ñцене." #: editor/editor_node.cpp -#, fuzzy msgid "Copy Text" -msgstr "Копировать путь" +msgstr "Копировать текÑÑ‚" #: editor/editor_node.cpp msgid "Next tab" @@ -2701,7 +2716,7 @@ msgstr "ÐÐ¾Ð²Ð°Ñ Ñцена" #: editor/editor_node.cpp msgid "New Inherited Scene..." -msgstr "ÐÐ¾Ð²Ð°Ñ ÑƒÐ½Ð°ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¡Ñ†ÐµÐ½Ð°..." +msgstr "ÐÐ¾Ð²Ð°Ñ ÑƒÐ½Ð°ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñцена..." #: editor/editor_node.cpp msgid "Open Scene..." @@ -2749,38 +2764,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 "Контроль верÑий" #: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Set Up Version Control" -msgstr "ÐаÑтроить управление верÑиÑми" +msgstr "ÐаÑтроить контроль верÑий" #: editor/editor_node.cpp -#, fuzzy msgid "Shut Down Version Control" -msgstr "Выключить управление верÑиÑми" +msgstr "Выключить контроль верÑий" #: editor/editor_node.cpp msgid "Export..." msgstr "ÐкÑпортировать..." #: editor/editor_node.cpp -#, fuzzy msgid "Install Android Build Template..." -msgstr "УÑтановить шаблон Ñборки Android" +msgstr "УÑтановить шаблон Ñборки Android..." #: editor/editor_node.cpp msgid "Open Project Data Folder" @@ -2791,9 +2802,8 @@ msgid "Tools" msgstr "ИнÑтрументы" #: editor/editor_node.cpp -#, fuzzy msgid "Orphan Resource Explorer..." -msgstr "Обзор подключённых реÑурÑов" +msgstr "Обзор реÑурÑов-Ñирот..." #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2896,9 +2906,8 @@ msgid "Editor" msgstr "Редактор" #: editor/editor_node.cpp -#, fuzzy msgid "Editor Settings..." -msgstr "ÐаÑтройки редактора" +msgstr "ÐаÑтройки редактора..." #: editor/editor_node.cpp msgid "Editor Layout" @@ -2909,40 +2918,36 @@ msgid "Take Screenshot" msgstr "Сделать Ñнимок Ñкрана" #: editor/editor_node.cpp -#, fuzzy msgid "Screenshots are stored in the Editor Data/Settings Folder." -msgstr "Открыть папку Данные/ÐаÑтройки редактора" +msgstr "Снимки Ñкрана хранÑÑ‚ÑÑ Ð² папке данных/наÑтроек редактора." #: editor/editor_node.cpp msgid "Toggle Fullscreen" msgstr "Переключить полноÑкранный режим" #: editor/editor_node.cpp -#, fuzzy msgid "Toggle System Console" -msgstr "Переключить видимоÑть CanvasItem" +msgstr "Переключить ÑиÑтемную конÑоль" #: editor/editor_node.cpp msgid "Open Editor Data/Settings Folder" -msgstr "Открыть папку Данные/ÐаÑтройки редактора" +msgstr "Открыть папку данных/наÑтроек редактора" #: editor/editor_node.cpp msgid "Open Editor Data Folder" -msgstr "Открыть папку редактора данных" +msgstr "Открыть папку данных редактора" #: editor/editor_node.cpp msgid "Open Editor Settings Folder" msgstr "Открыть папку наÑтроек редактора" #: 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" @@ -2987,8 +2992,8 @@ msgid "Play" msgstr "ВоÑпроизвеÑти" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "ПриоÑтановить Ñцену" +msgid "Pause the scene execution for debugging." +msgstr "ПриоÑтановить выполнение Ñцены Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3032,7 +3037,6 @@ msgid "Update Continuously" msgstr "Ðепрерывное обновление" #: editor/editor_node.cpp -#, fuzzy msgid "Update When Changed" msgstr "ОбновлÑть при изменениÑÑ…" @@ -3067,9 +3071,8 @@ msgstr "" "шаблоны." #: editor/editor_node.cpp -#, fuzzy msgid "Manage Templates" -msgstr "Управление шаблонами ÑкÑпорта" +msgstr "Управление шаблонами" #: editor/editor_node.cpp msgid "" @@ -3091,20 +3094,24 @@ msgstr "" "включена Ð¾Ð¿Ñ†Ð¸Ñ Â«Ð˜Ñпользовать пользовательÑкую Ñборку»." #: 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 уже уÑтановлен и не будет перезапиÑан.\n" -"Перед повторной попыткой удалите каталог \"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 "ÐкÑпортировать проект" @@ -3161,10 +3168,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" @@ -3175,13 +3186,12 @@ msgid "Thumbnail..." msgstr "Миниатюра..." #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Main Script:" -msgstr "Открыть Ñкрипт" +msgstr "ОÑновной Ñкрипт:" #: editor/editor_plugin_settings.cpp msgid "Edit Plugin" -msgstr "Редактировать дополнение" +msgstr "Редактировать плагин" #: editor/editor_plugin_settings.cpp msgid "Installed Plugins:" @@ -3249,9 +3259,8 @@ msgid "Calls" msgstr "Вызовы" #: editor/editor_properties.cpp -#, fuzzy msgid "Edit Text:" -msgstr "Редактировать тему..." +msgstr "Редактировать текÑÑ‚:" #: editor/editor_properties.cpp editor/script_create_dialog.cpp msgid "On" @@ -3421,7 +3430,6 @@ msgid "Import From Node:" msgstr "Импортировать из Узла:" #: editor/export_template_manager.cpp -#, fuzzy msgid "Redownload" msgstr "Перезагрузить" @@ -3483,6 +3491,15 @@ msgid "Importing:" msgstr "ИмпортируетÑÑ:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "Ошибка при Ñоздании объекта подпиÑи." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3523,26 +3540,24 @@ 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 "Ошибка запроÑа адреÑа ÑÑылки: " +msgstr "Ошибка при запроÑе URL:" #: editor/export_template_manager.cpp msgid "Connecting to Mirror..." -msgstr "Подключение к зеркалам..." +msgstr "Подключение к зеркалу..." #: editor/export_template_manager.cpp msgid "Disconnected" @@ -3587,9 +3602,8 @@ msgid "SSL Handshake Error" msgstr "Ошибка Ñ€ÑƒÐºÐ¾Ð¿Ð¾Ð¶Ð°Ñ‚Ð¸Ñ SSH" #: editor/export_template_manager.cpp -#, fuzzy msgid "Uncompressing Android Build Sources" -msgstr "РаÑпаковка аÑÑетов" +msgstr "РаÑпаковка иÑходников Ñборки Android" #: editor/export_template_manager.cpp msgid "Current Version:" @@ -3612,6 +3626,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 "Менеджер шаблонов ÑкÑпорта" @@ -3690,6 +3708,10 @@ msgid "New Inherited Scene" msgstr "ÐÐ¾Ð²Ð°Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð°Ñ Ñцена" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Сделать главной Ñценой" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Открыть Ñцены" @@ -3726,9 +3748,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..." @@ -3796,9 +3817,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" @@ -3821,13 +3841,12 @@ msgid "Filters:" msgstr "Фильтры:" #: editor/find_in_files.cpp -#, fuzzy msgid "" "Include the files with the following extensions. Add or remove them in " "ProjectSettings." msgstr "" -"Включает в ÑÐµÐ±Ñ Ñ„Ð°Ð¹Ð»Ñ‹ Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼Ð¸ раÑширениÑми. Добавьте или удалите их в " -"ProjectSettings." +"Включать файлы Ñо Ñледующими раÑширениÑми. Добавьте или удалите их в " +"ÐаÑтройках проекта." #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3879,28 +3898,25 @@ 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 msgid "Filter nodes" -msgstr "Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÑƒÐ·Ð»Ð¾Ð²" +msgstr "Фильтр узлов" #: editor/groups_editor.cpp msgid "Nodes in Group" @@ -4012,9 +4028,8 @@ msgid "Import As:" msgstr "Импортировать как:" #: editor/import_dock.cpp -#, fuzzy msgid "Preset" -msgstr "ПредуÑтановки" +msgstr "ПреÑет" #: editor/import_dock.cpp msgid "Reimport" @@ -4110,7 +4125,7 @@ msgstr "СвойÑтва объекта." #: editor/inspector_dock.cpp msgid "Filter properties" -msgstr "СвойÑтва фильтра" +msgstr "Фильтр ÑвойÑтв" #: editor/inspector_dock.cpp msgid "Changes may be lost!" @@ -4121,9 +4136,8 @@ msgid "MultiNode Set" msgstr "Мульти-узловый набор" #: editor/node_dock.cpp -#, fuzzy msgid "Select a single node to edit its signals and groups." -msgstr "Выберите узел Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñигналов и групп." +msgstr "Выберите один узел Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñигналов и групп." #: editor/plugin_config_dialog.cpp msgid "Edit a Plugin" @@ -4423,6 +4437,18 @@ 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 "Узел переименован" @@ -4438,9 +4464,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" @@ -4578,9 +4603,8 @@ msgid "Enable Onion Skinning" msgstr "Включить режим кальки" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Onion Skinning Options" -msgstr "Режим кальки" +msgstr "Параметры режима кальки" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" @@ -4658,6 +4682,11 @@ msgid "Move Node" msgstr "ПеремеÑтить узел" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Переходы" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Добавить переход" @@ -4742,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 msgid "AnimationTree" @@ -4912,14 +4946,12 @@ msgid "Request failed, return code:" msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ удалÑÑ, код:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed." msgstr "Ðе удалоÑÑŒ выполнить запроÑ." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Cannot save response to:" -msgstr "Ðевозможно Ñохранить тему в файл:" +msgstr "Ðевозможно Ñохранить ответ в:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." @@ -4930,19 +4962,16 @@ msgid "Request failed, too many redirects" msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошёл, Ñлишком много перенаправлений" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Redirect loop." msgstr "ЦикличеÑкое перенаправление." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed, timeout" -msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ удалÑÑ, код:" +msgstr "Ошибка запроÑа, превышено Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "ВремÑ" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." @@ -4950,11 +4979,11 @@ msgstr "ÐеÑовпадение Ñ…Ñша загрузки, возможно фР#: editor/plugins/asset_library_editor_plugin.cpp msgid "Expected:" -msgstr "ОжидаетÑÑ:" +msgstr "ОжидалоÑÑŒ:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Got:" -msgstr "Получил:" +msgstr "Получено:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed sha256 hash check" @@ -4994,23 +5023,47 @@ 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 "Первый" +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" @@ -5022,21 +5075,19 @@ msgstr "Ð’Ñе" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Ðет результатов Ð´Ð»Ñ \"%s\"." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "Переимпортировать..." +msgstr "Импорт..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Plugins..." -msgstr "Плагины" +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 @@ -5048,9 +5099,8 @@ msgid "Site:" msgstr "Сайт:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support" -msgstr "Поддержка..." +msgstr "Поддержка" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" @@ -5061,7 +5111,6 @@ msgid "Testing" msgstr "ТеÑтируемые" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Loading..." msgstr "Загрузка..." @@ -5114,6 +5163,15 @@ msgid "Grid Step:" msgstr "Шаг Ñетки:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "ÐŸÐµÑ€Ð²Ð¸Ñ‡Ð½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ ÐšÐ°Ð¶Ð´Ð°Ñ:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "шаги" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "ОтÑтуп поворота:" @@ -5122,9 +5180,12 @@ msgid "Rotation Step:" msgstr "Шаг поворота:" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy +msgid "Scale Step:" +msgstr "Шаг шкалы:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" -msgstr "Перемещение вертикальной направлÑющей" +msgstr "Перемещать вертикальную направлÑющую" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Vertical Guide" @@ -5135,9 +5196,8 @@ msgid "Remove Vertical Guide" msgstr "Удалить вертикальную направлÑющую" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Horizontal Guide" -msgstr "ПеремеÑтить горизонтальную направлÑющую" +msgstr "Перемещать горизонтальную направлÑющую" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create Horizontal Guide" @@ -5186,13 +5246,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" @@ -5208,6 +5334,24 @@ 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 "" +"Переопределение игровой камеры\n" +"ПереопределÑет игровую камеру Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ камеры редактора вью-порта." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"Переопределение игровой камеры\n" +"Ðет запущенного ÑкземплÑра игры." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "Заблокировать выбранное" @@ -5231,19 +5375,16 @@ msgid "Paste Pose" msgstr "Ð’Ñтавить позу" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Guides" -msgstr "ОчиÑтить позу" +msgstr "ОчиÑтить направлÑющие" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Custom Bone(s) from Node(s)" -msgstr "Сделать ПользовательÑкие КоÑть(и) от Узла(ов)" +msgstr "Создать пользовательÑкую(ие) коÑть(и) из узла(ов)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Bones" -msgstr "ОчиÑтить позу" +msgstr "ОчиÑтить коÑти" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" @@ -5323,29 +5464,24 @@ msgid "Pan Mode" msgstr "Режим оÑмотра" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Ruler Mode" -msgstr "Режим запуÑка:" +msgstr "Режим линейки" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Переключить привÑзки." +msgstr "Переключить умную привÑзку." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "ИÑпользовать привÑзку" +msgstr "ИÑпользовать умную привÑзку" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Переключить привÑзки." +msgstr "Переключить привÑзку к Ñетке." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "ПривÑзка по Ñетке" +msgstr "ИÑпользовать привÑзку к Ñетке" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5356,6 +5492,10 @@ 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 "ОтноÑÐ¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка" @@ -5377,22 +5517,18 @@ msgid "Snap to Parent" msgstr "ПривÑзка к родителю" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Anchor" msgstr "ПривÑзка к Ñкорю узла" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Sides" msgstr "ПривÑзка к Ñторонам узла" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Center" msgstr "ПривÑзка к центру узла" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Other Nodes" msgstr "ПривÑзка к другим узлам" @@ -5442,9 +5578,8 @@ msgid "View" msgstr "Обзор" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Показать Ñетку" +msgstr "Ð’Ñегда показывать Ñетку" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5484,29 +5619,24 @@ msgid "Preview Canvas Scale" msgstr "ПредпроÑмотр маÑштаба холÑта" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Translation mask for inserting keys." msgstr "МаÑка Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»Ñемых ключей." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotation mask for inserting keys." msgstr "МаÑка поворота Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»Ñемых ключей." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale mask for inserting keys." msgstr "МаÑка маÑштаба Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»Ñемых ключей." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Insert keys (based on mask)." -msgstr "Ð’Ñтавить ключи (в завиÑимоÑти от маÑки)" +msgstr "Ð’Ñтавить ключи (на оÑнове маÑки)." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5515,12 +5645,11 @@ msgstr "" "размер изменён (завиÑит от маÑки).\n" "Ключи добавлÑÑŽÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в ÑущеÑтвующие дорожки, новые дорожки не будут " "Ñозданы.\n" -"Первые ключи должны быть добавлены вручную." +"Ð’ первый раз ключи должны быть добавлены вручную." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Auto Insert Key" -msgstr "ÐвтоматичеÑки вÑтавлÑть ключ" +msgstr "ÐвтовÑтавка ключа" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5570,7 +5699,6 @@ msgid "Error instancing scene from %s" msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñцены из %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Change Default Type" msgstr "Изменить тип по умолчанию" @@ -5698,19 +5826,16 @@ msgid "Remove Point" msgstr "Удалить точку" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Left Linear" msgstr "Левый линейный" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right Linear" msgstr "Правый линейный" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Load Preset" -msgstr "Загрузить заготовку" +msgstr "Загрузить преÑет" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove Curve Point" @@ -5725,9 +5850,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Удерживайте Shift, чтобы изменить каÑательные индивидуально" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "ПКМ: Удалить точку" +msgstr "ПКМ: Добавить точку" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5864,11 +5988,27 @@ msgstr "Создать полиÑетку обводки" msgid "Outline Size:" msgstr "Размер обводки:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Удалить Ñлемент %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +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 "Добавить Ñлемент" @@ -6005,7 +6145,6 @@ msgid "Generation Time (sec):" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ (Ñек):" #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "The geometry's faces don't contain any area." msgstr "Грани данной геометрии не Ñодержат никакой облаÑти." @@ -6195,7 +6334,6 @@ msgid "Split Segment (in curve)" msgstr "Разделить Ñегмент (в кривой)" #: editor/plugins/physical_bone_plugin.cpp -#, fuzzy msgid "Move Joint" msgstr "Передвинуть ÑуÑтав" @@ -6468,9 +6606,8 @@ msgid "Error writing TextFile:" msgstr "Ошибка при запиÑи:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Could not load file at:" -msgstr "Ðевозможно найти тайл:" +msgstr "Ðе удалоÑÑŒ загрузить файл:" #: editor/plugins/script_editor_plugin.cpp msgid "Error saving file!" @@ -6493,9 +6630,8 @@ msgid "Error Importing" msgstr "Ошибка Импорта" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New Text File..." -msgstr "Создать текÑтовый файл..." +msgstr "Ðовый текÑтовый файл..." #: editor/plugins/script_editor_plugin.cpp msgid "Open File" @@ -6506,6 +6642,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 "Импортировать тему" @@ -6522,7 +6675,6 @@ msgid "Save Theme As..." msgstr "Сохранить тему как..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "%s Class Reference" msgstr "%s Справка по клаÑÑу" @@ -6537,18 +6689,16 @@ msgid "Find Previous" msgstr "Ðайти предыдущее" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Filter scripts" -msgstr "СвойÑтва фильтра" +msgstr "Фильтр Ñкриптов" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." msgstr "Включить Ñортировку по алфавиту в ÑпиÑке методов." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Filter methods" -msgstr "Режим фильтра:" +msgstr "Фильтр методов" #: editor/plugins/script_editor_plugin.cpp msgid "Sort" @@ -6583,9 +6733,8 @@ msgid "Open..." msgstr "Открыть..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Reopen Closed Script" -msgstr "Открыть Ñкрипт" +msgstr "Открыть ранее закрытый Ñкрипт" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" @@ -6636,10 +6785,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 "Шаг в" @@ -6666,18 +6811,16 @@ msgid "Debug with External Editor" msgstr "Отладка Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ внешнего редактора" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open Godot online documentation." -msgstr "Открыть онлайн документацию Godot" +msgstr "Открыть онлайн-документацию Godot." #: editor/plugins/script_editor_plugin.cpp msgid "Request Docs" msgstr "Проблема" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Help improve the Godot documentation by giving feedback." -msgstr "Помогите улучшить документацию Godot, предоÑтавив обратную ÑвÑзь" +msgstr "Помогите улучшить документацию Godot, оÑтавьте Ñообщение об ошибке." #: editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." @@ -6722,32 +6865,27 @@ msgid "Search Results" msgstr "Результаты поиÑка" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Clear Recent Scripts" -msgstr "ОчиÑтить поÑледние Ñцены" +msgstr "ОчиÑтить недавние Ñкрипты" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Connections to method:" -msgstr "ПриÑоединить к узлу:" +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 -#, fuzzy msgid "" "Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." -msgstr "Ðичего не подключено к входу \"%s\" узла \"%s\"." +msgstr "" +"ОтÑутÑтвует подключённый метод '%s' Ð´Ð»Ñ Ñигнала '%s' от узла '%s' к узлу " +"'%s'." #: editor/plugins/script_text_editor.cpp msgid "Line" @@ -6766,6 +6904,12 @@ msgid "Only resources from filesystem can be dropped." msgstr "Можно перетащить только реÑÑƒÑ€Ñ Ð¸Ð· файловой ÑиÑтемы." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"ÐÐµÐ»ÑŒÐ·Ñ Ð±Ñ€Ð¾Ñать узлы, потому что в Ñтой Ñцене не иÑпользуетÑÑ Ñкрипт '%s'." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "ПоиÑк" @@ -6854,9 +6998,8 @@ msgid "Complete Symbol" msgstr "СпиÑок автозавершениÑ" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Evaluate Selection" -msgstr "МаÑштабировать выбранное" +msgstr "ВычиÑлить выделенное" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" @@ -6883,9 +7026,8 @@ msgid "Contextual Help" msgstr "КонтекÑÑ‚Ð½Ð°Ñ Ñправка" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Toggle Bookmark" -msgstr "Переключить Ñвободный обзор" +msgstr "Переключить закладку" #: editor/plugins/script_text_editor.cpp msgid "Go to Next Bookmark" @@ -6925,13 +7067,12 @@ msgid "Go to Previous Breakpoint" msgstr "Перейти к предыдущей точке оÑтановки" #: editor/plugins/shader_editor_plugin.cpp -#, fuzzy msgid "" "This shader has been modified on on disk.\n" "What action should be taken?" msgstr "" -"Следующие файлы новее на диÑке.\n" -"Какие меры должны быть принÑты?:" +"Ðтот шейдер был изменён на диÑке.\n" +"Какое дейÑтвие должно быть предпринÑто?" #: editor/plugins/shader_editor_plugin.cpp msgid "Shader" @@ -6942,14 +7083,12 @@ msgid "This skeleton has no bones, create some children Bone2D nodes." msgstr "У Ñтого Ñкелета нет коÑтей, Ñоздайте дочерние Bone2D узлы." #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Create Rest Pose from Bones" -msgstr "Создать Позу ÐŸÐ¾ÐºÐ¾Ñ Ð¸Ð· КоÑтей" +msgstr "Создать позу Ð¿Ð¾ÐºÐ¾Ñ Ð¸Ð· коÑтей" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Set Rest Pose to Bones" -msgstr "Задать Позу ÐŸÐ¾ÐºÐ¾Ñ ÐšÐ¾ÑÑ‚Ñм" +msgstr "Задать позу Ð¿Ð¾ÐºÐ¾Ñ ÐºÐ¾ÑÑ‚Ñм" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Skeleton2D" @@ -7225,12 +7364,10 @@ msgid "XForm Dialog" msgstr "XForm диалоговое окно" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Nodes To Floor" -msgstr "ПодравнÑть Узел Ñ ÐŸÐ¾Ð»Ð¾Ð¼" +msgstr "ПривÑзать узлы к полу" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Couldn't find a solid floor to snap the selection to." msgstr "Ðе удалоÑÑŒ найти Ñплошной пол, к которому можно привÑзать выделение." @@ -7245,9 +7382,8 @@ msgstr "" "Alt+ПКМ: Выбор по ÑпиÑку" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Use Local Space" -msgstr "Режим локального проÑтранÑтва (%s)" +msgstr "ИÑпользовать локальное проÑтранÑтво" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" @@ -7278,7 +7414,6 @@ msgid "Right View" msgstr "Вид Ñправа" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Switch Perspective/Orthogonal View" msgstr "Переключить перÑпективный/ортогональный вид" @@ -7304,7 +7439,6 @@ msgid "Transform" msgstr "Преобразование" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Object to Floor" msgstr "ПривÑзать объект к полу" @@ -7350,9 +7484,8 @@ msgstr "Отображать Ñетку" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Settings..." -msgstr "ÐаÑтройки" +msgstr "ÐаÑтройки..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -7419,23 +7552,41 @@ msgid "Nameless gizmo" msgstr "БезымÑÐ½Ð½Ð°Ñ ÑˆÑ‚ÑƒÐºÐ¾Ð²Ð¸Ð½Ð°" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Mesh2D" -msgstr "Создать 2D Mesh" +msgstr "Создать Mesh2D" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Создание предпроÑмотра" #: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Создать Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Создать CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Создать CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Создан LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Создан LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Спрайт пуÑÑ‚!" @@ -7489,9 +7640,8 @@ msgid "Simplification: " msgstr "Упрощение: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "РоÑÑ‚ (пикÑели): " +msgstr "Сжатие (пикÑели): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7506,9 +7656,8 @@ msgid "Settings:" msgstr "Параметры:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "No Frames Selected" -msgstr "Кадрировать выбранное" +msgstr "Ðе выбраны кадры" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add %d Frame(s)" @@ -7519,6 +7668,11 @@ msgid "Add Frame" msgstr "Добавить кадр" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Ðевозможно загрузить изображение:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "ОШИБКÐ: Ðевозможно загрузить кадр!" @@ -7543,9 +7697,8 @@ msgid "(empty)" msgstr "(пуÑто)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Move Frame" -msgstr "Ð’Ñтавить кадр" +msgstr "ПеремеÑтить кадр" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animations:" @@ -7592,29 +7745,24 @@ msgid "Move (After)" msgstr "ПеремеÑтить (поÑле)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Select Frames" -msgstr "Стек" +msgstr "Выбрать кадры" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Horizontal:" -msgstr "Отразить по горизонтали" +msgstr "Горизонтальные:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Vertical:" -msgstr "Вершины" +msgstr "Вертикальные:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Select/Clear All Frames" -msgstr "Выбрать вÑе" +msgstr "Выбрать/очиÑтить вÑе кадры" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Create Frames from Sprite Sheet" -msgstr "Создать из Ñцены" +msgstr "Создать кадры из Ñпрайт-лиÑта" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "SpriteFrames" @@ -7682,9 +7830,8 @@ msgid "Remove All" msgstr "Удалить вÑе" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Edit Theme" -msgstr "Редактировать тему..." +msgstr "Редактировать тему" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme editing menu." @@ -7711,23 +7858,20 @@ msgid "Create From Current Editor Theme" msgstr "Создать из текущей темы редактора" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Toggle Button" -msgstr "Кнопка мыши" +msgstr "Кнопка-переключатель" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Button" -msgstr "СреднÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши" +msgstr "Ð—Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" msgstr "Ðлемент" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Item" -msgstr "Отключено" +msgstr "Отключённый Ñлемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Check Item" @@ -7754,14 +7898,12 @@ msgid "Submenu" msgstr "Подменю" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 1" -msgstr "Ðлемент" +msgstr "ПодÑлемент 1" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 2" -msgstr "Ðлемент" +msgstr "ПодÑлемент 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" @@ -7772,9 +7914,8 @@ msgid "Many" msgstr "Много" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled LineEdit" -msgstr "Отключено" +msgstr "Отключённое текÑтовое поле" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" @@ -7789,9 +7930,8 @@ msgid "Tab 3" msgstr "Вкладка 3" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Editable Item" -msgstr "Редактируемые потомки" +msgstr "Редактируемый Ñлемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Subtree" @@ -7806,6 +7946,7 @@ msgid "Data Type:" msgstr "Тип информации:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Иконка" @@ -7822,8 +7963,8 @@ msgid "Color" msgstr "Цвет" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "ПоÑтоÑнный" +msgid "Theme File" +msgstr "Файл темы" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7867,19 +8008,16 @@ msgid "Transpose" msgstr "ТранÑпонировать" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Disable Autotile" -msgstr "Ðвтотайлы" +msgstr "Отключить автотайлы" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Enable Priority" -msgstr "Редактировать приоритет тайла" +msgstr "Включить приоритет" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Filter tiles" -msgstr "ОтÑортировать файлы..." +msgstr "Фильтр тайлов" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Give a TileSet resource to this TileMap to use its tiles." @@ -7890,40 +8028,34 @@ msgid "Paint Tile" msgstr "РиÑовать тайл" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "" "Shift+LMB: Line Draw\n" "Shift+Ctrl+LMB: Rectangle Paint" msgstr "" -"Shift+RMB: ÐариÑовать линию\n" -"Shift+Ctrl+RMB: ÐариÑовать прÑмоугольник" +"Shift+ЛКМ: ÐариÑовать линию\n" +"Shift+Ctrl+ЛКМ: ÐариÑовать прÑмоугольник" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" msgstr "Выбрать тайл" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate Left" msgstr "Повернуть влево" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate Right" msgstr "Повернуть вправо" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Flip Horizontally" msgstr "Отразить по горизонтали" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Flip Vertically" msgstr "Отразить по вертикали" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear Transform" msgstr "ОчиÑтить преобразование" @@ -7944,6 +8076,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 "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÐšÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ‚Ð°" @@ -7961,43 +8107,70 @@ msgstr "Выберите предыдущую форму, Ñлемент тайР#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Region Mode" -msgstr "Режим запуÑка:" +msgid "Region" +msgstr "Режим региона" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Collision Mode" -msgstr "Режим Перехода" +msgid "Collision" +msgstr "Режим ÑтолкновениÑ" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Occlusion Mode" -msgstr "Редактировать полигон перекрытиÑ" +msgid "Occlusion" +msgstr "Режим перекрытиÑ" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Navigation Mode" -msgstr "Создать полиÑетку навигации" +msgid "Navigation" +msgstr "Режим навигации" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Bitmask Mode" -msgstr "Режим поворота" +msgid "Bitmask" +msgstr "Режим битовой маÑки" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Priority Mode" -msgstr "Режим ÑкÑпортированиÑ:" +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 "Режим региона" + +#: 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 "Режим оÑмотра" +msgstr "Режим иконки" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Z Index Mode" -msgstr "Режим оÑмотра" +msgstr "Режим Z индекÑа" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." @@ -8194,6 +8367,16 @@ msgid "Edit Tile Z Index" msgstr "Редактирование Z индекÑа плитки" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Сделать Полигон Выпуклым" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Сделать Полигон Вогнутым" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Создать полигон Ñтолкновений" @@ -8210,9 +8393,8 @@ msgid "TileSet" msgstr "Ðабор Тайлов" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No VCS addons are available." -msgstr "Ð˜Ð¼Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÑкого узла, еÑли оно доÑтупно" +msgstr "Ðет доÑтупных VCS плагинов." #: editor/plugins/version_control_editor_plugin.cpp editor/rename_dialog.cpp msgid "Error" @@ -8243,14 +8425,12 @@ msgid "Initialize" msgstr "Инициализировать" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Staging area" msgstr "ОблаÑть коммита" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Detect new changes" -msgstr "Обнаружить новые изменениÑ" +msgstr "Проверить изменениÑ" #: editor/plugins/version_control_editor_plugin.cpp msgid "Changes" @@ -8258,15 +8438,15 @@ msgstr "ИзменениÑ" #: editor/plugins/version_control_editor_plugin.cpp msgid "Modified" -msgstr "Изменено" +msgstr "Изменён" #: editor/plugins/version_control_editor_plugin.cpp msgid "Renamed" -msgstr "Переименовано" +msgstr "Переименован" #: editor/plugins/version_control_editor_plugin.cpp msgid "Deleted" -msgstr "Удалено" +msgstr "Удалён" #: editor/plugins/version_control_editor_plugin.cpp #, fuzzy @@ -8274,23 +8454,20 @@ msgid "Typechange" msgstr "Изменить" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage Selected" -msgstr "Удалить выделенное" +msgstr "ИндекÑ. выбранные" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage All" -msgstr "Сохранить вÑÑ‘" +msgstr "ИндекÑ. вÑÑ‘" #: editor/plugins/version_control_editor_plugin.cpp msgid "Add a commit message" msgstr "Добавьте Ñообщение коммита" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit Changes" -msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°" +msgstr "Закоммитить изменениÑ" #: editor/plugins/version_control_editor_plugin.cpp #: modules/gdnative/gdnative_library_singleton_editor.cpp @@ -8309,16 +8486,15 @@ 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)" msgstr "(только GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Добавить выход +" +msgstr "Добавить выход" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8333,9 +8509,8 @@ msgid "Boolean" msgstr "ЛогичеÑкое" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "СÑмплы" +msgstr "СÑмплер" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8346,24 +8521,20 @@ msgid "Add output port" msgstr "Добавить выходной порт" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port type" -msgstr "Изменить тип по умолчанию" +msgstr "Изменить тип входного порта" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change output port type" -msgstr "Изменить тип по умолчанию" +msgstr "Изменить тип выходного порта" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port name" -msgstr "Изменить Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð°" +msgstr "Изменить Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ порта" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change output port name" -msgstr "Изменить Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð°" +msgstr "Изменить Ð¸Ð¼Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ порта" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Remove input port" @@ -8374,14 +8545,12 @@ msgid "Remove output port" msgstr "Удалить выходной порт" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Set expression" -msgstr "Изменить выражение" +msgstr "Задать выражение" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Resize VisualShader node" -msgstr "Визуальный Шейдер" +msgstr "Изменить размеры узла визуального шейдера" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" @@ -8425,14 +8594,12 @@ msgid "Light" msgstr "Свет" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Show resulted shader code." -msgstr "Создать узел" +msgstr "Показать полученный код шейдера." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Create Shader Node" -msgstr "Создать узел" +msgstr "Создать узел шейдера" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color function." @@ -8443,9 +8610,8 @@ msgid "Color operator." msgstr "Оператор цвета." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Grayscale function." -msgstr "Сделать функцию" +msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚Ñ‚ÐµÐ½ÐºÐ¾Ð² Ñерого." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." @@ -8456,12 +8622,10 @@ msgid "Converts RGB vector to HSV equivalent." msgstr "Конвертирует вектор RGB в HSV Ñквивалент." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sepia function." -msgstr "Переименовать функцию" +msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ñепии." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Burn operator." msgstr "Оператор выгораниÑ." @@ -8470,22 +8634,19 @@ msgid "Darken operator." msgstr "Оператор затемнениÑ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Difference operator." msgstr "Оператор разницы." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Dodge operator." msgstr "Оператор выцветаниÑ." #: editor/plugins/visual_shader_editor_plugin.cpp #, fuzzy -msgid "HardLight operator" -msgstr "Оператор жёÑткого Ñвета." +msgid "HardLight operator." +msgstr "Оператор жёÑткого Ñвета" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Lighten operator." msgstr "Оператор оÑветлениÑ." @@ -8494,22 +8655,18 @@ msgid "Overlay operator." msgstr "Оператор наложениÑ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Screen operator." msgstr "Оператор Ñкрана." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "SoftLight operator." msgstr "Оператор мÑгкого Ñвета." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color constant." msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ ÐºÐ¾Ð½Ñтанта." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color uniform." msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ uniform." @@ -8530,7 +8687,6 @@ msgid "Greater Than or Equal (>=)" msgstr "Больше или равно (>=)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns an associated vector if the provided scalars are equal, greater or " "less." @@ -8539,14 +8695,12 @@ msgstr "" "меньше." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns the boolean result of the comparison between INF and a scalar " "parameter." msgstr "Возвращает логичеÑкий результат ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ INF и ÑкалÑрного параметра." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns the boolean result of the comparison between NaN and a scalar " "parameter." @@ -8565,7 +8719,6 @@ msgid "Not Equal (!=)" msgstr "Ðе равно (!=)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns an associated vector if the provided boolean value is true or false." msgstr "" @@ -8573,7 +8726,6 @@ msgstr "" "true или false." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns an associated scalar if the provided boolean value is true or false." msgstr "" @@ -8581,12 +8733,10 @@ msgstr "" "true или false." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Returns the boolean result of the comparison between two parameters." msgstr "Возвращает логичеÑкий результат ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð²ÑƒÑ… параметров." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Returns the boolean result of the comparison between INF (or NaN) and a " "scalar parameter." @@ -8595,12 +8745,10 @@ msgstr "" "параметра." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Boolean constant." msgstr "ЛогичеÑÐºÐ°Ñ ÐºÐ¾Ð½Ñтанта." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Boolean uniform." msgstr "ЛогичеÑÐºÐ°Ñ uniform." @@ -8609,16 +8757,14 @@ msgid "'%s' input parameter for all shader modes." msgstr "Входной параметр «%s» Ð´Ð»Ñ Ð²Ñех режимов шейдера." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Input parameter." -msgstr "ПривÑзка к родителю" +msgstr "Входной параметр." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader modes." msgstr "Входной параметр «%s» Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð² вершинного и фрагментного шейдеров." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "'%s' input parameter for fragment and light shader modes." msgstr "" "Входной параметр «%s» Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð² фрагментного шейдера и шейдера оÑвещениÑ." @@ -8718,7 +8864,6 @@ msgid "" msgstr "ВычиÑлÑет ближайшее целое чиÑло, большее или равное аргументу." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Constrains a value to lie between two further values." msgstr "Ограничивает значение лежать между Ð´Ð²ÑƒÐ¼Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ значениÑми." @@ -8831,9 +8976,13 @@ 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" +"Возвращает 0.0, еÑли 'x' меньше, чем 'edge0', и 1.0, еÑли x больше, чем " +"'edge1'. Ð’ оÑтальных ÑлучаÑÑ… возвращаемое значение интерполируетÑÑ " +"полиномами Ðрмита в промежутке от 0.0 до 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "Step function( scalar(edge), scalar(x) ).\n" "\n" @@ -8841,7 +8990,7 @@ msgid "" msgstr "" "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¨Ð°Ð³( ÑкалÑÑ€(граница), ÑкалÑÑ€(Ñ…) ).\n" "\n" -"Возвращает 0.0, еÑли x меньше чем граница, иначе — 1.0." +"Возвращает 0.0, еÑли «x» меньше чем «граница», иначе — 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the tangent of the parameter." @@ -8852,7 +9001,6 @@ msgid "Returns the hyperbolic tangent of the parameter." msgstr "Возвращает гиперболичеÑкий Ñ‚Ð°Ð½Ð³ÐµÐ½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Finds the truncated value of the parameter." msgstr "Ðаходит уÑечённое до целого значение параметра." @@ -8869,7 +9017,6 @@ msgid "Multiplies scalar by scalar." msgstr "Умножает ÑкалÑÑ€ на ÑкалÑÑ€." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Returns the remainder of the two scalars." msgstr "Возвращает оÑтаток от двух ÑкалÑров." @@ -8878,22 +9025,18 @@ msgid "Subtracts scalar from scalar." msgstr "Вычитает ÑкалÑÑ€ из ÑкалÑра." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar constant." -msgstr "Изменить чиÑловую конÑтанту" +msgstr "СкалÑÑ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñтанта." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar uniform." -msgstr "Изменить чиÑловую единицу" +msgstr "СкалÑÑ€Ð½Ð°Ñ uniform." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Perform the cubic texture lookup." msgstr "ВыполнÑет поиÑк кубичеÑкой текÑтуры." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Perform the texture lookup." msgstr "ВыполнÑет поиÑк текÑтуры." @@ -8913,9 +9056,8 @@ msgid "2D texture uniform lookup with triplanar." msgstr "Изменить текÑтурную единицу" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform function." -msgstr "Окно преобразованиÑ..." +msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8937,18 +9079,16 @@ msgstr "" "Ñтолбцов — количеÑтву компонентов в «r»." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Composes transform from four vectors." msgstr "СоÑтавлÑет преобразование из четырёх векторов." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Decomposes transform to four vectors." msgstr "РаÑкладывает преобразование на четыре вектора." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the determinant of a transform." -msgstr "ВычиÑлÑет детерминант Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ (матрицы транÑформации)." +msgstr "ВычиÑлÑет детерминант преобразованиÑ." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the inverse of a transform." @@ -8967,24 +9107,20 @@ msgid "Multiplies vector by transform." msgstr "Умножает вектор на преобразование." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform constant." -msgstr "Преобразование прервано." +msgstr "Преобразование-конÑтанта." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform uniform." -msgstr "Преобразование прервано." +msgstr "Преобразование-uniform." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector function." -msgstr "Ðазначение функции." +msgstr "Ð’ÐµÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector operator." -msgstr "Изменить векторный оператор" +msgstr "Векторный оператор." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes vector from three scalars." @@ -9063,6 +9199,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" +"Возвращает 0.0, еÑли 'x' меньше, чем 'edge0', и 1.0, еÑли 'x' больше, чем " +"'edge1'. Ð’ оÑтальных ÑлучаÑÑ… возвращаемое значение интерполируетÑÑ " +"полиномами Ðрмита в промежутке от 0.0 до 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9072,6 +9213,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" +"Возвращает 0.0, еÑли 'x' меньше, чем 'edge0', и 1.0, еÑли 'x' больше, чем " +"'edge1'. Ð’ оÑтальных ÑлучаÑÑ… возвращаемое значение интерполируетÑÑ " +"полиномами Ðрмита в промежутке от 0.0 до 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9079,6 +9225,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" +"Возвращает 0.0, еÑли 'x' меньше, чем 'edge', и 1.0 в противном Ñлучае." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9086,6 +9235,9 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Step function( scalar(edge), vector(x) ).\n" +"\n" +"Возвращает 0.0, еÑли 'x' меньше, чем 'edge', и 1.0 в противном Ñлучае." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds vector to vector." @@ -9108,14 +9260,12 @@ msgid "Subtracts vector from vector." msgstr "Вычитает вектор из вектора." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector constant." -msgstr "Изменить векторную конÑтанту" +msgstr "Векторную конÑтанта." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector uniform." -msgstr "Ðазначить форму." +msgstr "Ð’ÐµÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9132,28 +9282,31 @@ 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 msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" -"ПользовательÑкое выражение Ñзыка шейдеров Godot, которое помещаетÑÑ Ð² " -"верхней чаÑти шейдера. Ð’Ñ‹ можете размеÑтить внутри различные объÑÐ²Ð»ÐµÐ½Ð¸Ñ " -"функций и вызвать их позже в ВыражениÑÑ…. Ð’Ñ‹ также можете объÑвить varyings, " -"uniforms и конÑтанты." +"ПользовательÑкое выражение Ñзыка шейдеров Godot, которое помещаетÑÑ Ð¿Ð¾Ð²ÐµÑ€Ñ… " +"шейдера. Ð’Ñ‹ можете размеÑтить внутри различные объÑÐ²Ð»ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ и вызвать " +"их позже в ВыражениÑÑ…. Ð’Ñ‹ также можете объÑвить varyings, uniforms и " +"конÑтанты." #: 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 -#, fuzzy msgid "" "(Fragment/Light mode only) (Vector) Derivative in 'x' using local " "differencing." @@ -9162,7 +9315,6 @@ msgstr "" "локального дифференцированиÑ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "(Fragment/Light mode only) (Scalar) Derivative in 'x' using local " "differencing." @@ -9171,7 +9323,6 @@ msgstr "" "локального дифференцированиÑ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "(Fragment/Light mode only) (Vector) Derivative in 'y' using local " "differencing." @@ -9180,7 +9331,6 @@ msgstr "" "локального дифференцированиÑ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "(Fragment/Light mode only) (Scalar) Derivative in 'y' using local " "differencing." @@ -9189,7 +9339,6 @@ msgstr "" "локального дифференцированиÑ." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and " "'y'." @@ -9198,7 +9347,6 @@ msgstr "" "производных по «x» и «y»." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "" "(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and " "'y'." @@ -9211,12 +9359,10 @@ msgid "VisualShader" msgstr "Визуальный Шейдер" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Edit Visual Property" msgstr "Редактировать Визуальное СвойÑтво" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Visual Shader Mode Changed" msgstr "Режим Визуального Шейдера был изменен" @@ -9225,6 +9371,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' из ÑпиÑка?" @@ -9246,7 +9401,7 @@ msgid "" "This might be due to a configuration issue in the export preset or your " "export settings." msgstr "" -"Ðе удалоÑÑŒ ÑкÑпортировать проект Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹ '%s'.\n" +"Ðе удалоÑÑŒ ÑкÑпортировать проект Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹ «%s».\n" "Ðто может быть ÑвÑзано Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¾Ð¹ конфигурации в предуÑтановке ÑкÑпорта или " "наÑтройках ÑкÑпорта." @@ -9259,7 +9414,6 @@ msgid "Exporting All" msgstr "ÐкÑпорт вÑех" #: editor/project_export.cpp -#, fuzzy msgid "The given export path doesn't exist:" msgstr "Данный путь ÑкÑпорта не ÑущеÑтвует:" @@ -9276,6 +9430,15 @@ 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 "" +"ЕÑли Ñтот флажок уÑтановлен, Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÑƒÑтановка будет доÑтупна Ð´Ð»Ñ " +"иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² развертывании одним щелчком мыши.\n" +"Только одна предуÑтановка на платформу может быть помечена как работающаÑ." + +#: editor/project_export.cpp msgid "Export Path" msgstr "Путь ÑкÑпорта" @@ -9304,20 +9467,20 @@ msgid "Resources to export:" msgstr "РеÑурÑÑ‹ Ð´Ð»Ñ ÑкÑпорта:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Фильтр Ð´Ð»Ñ ÑкÑпорта не реÑурÑных файлов (через запÑтую, например: *.json, *." -"txt)" +"Фильтры Ð´Ð»Ñ ÑкÑпорта нереÑурÑных файлов/папок\n" +"(через запÑтую, например: *.json, *.txt, docs/*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" -msgstr "Фильтр Ð´Ð»Ñ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ (через запÑтую, например: *.json, *.txt)" +msgstr "" +"Фильтры Ð´Ð»Ñ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²/папок из проекта\n" +"(через запÑтую, например: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9328,12 +9491,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:" @@ -9380,6 +9547,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 "Шаблоны ÑкÑпорта Ð´Ð»Ñ Ñтой платформы отÑутÑтвуют:" @@ -9548,9 +9723,8 @@ msgid "Unnamed Project" msgstr "БезымÑнный проект" #: editor/project_manager.cpp -#, fuzzy msgid "Missing Project" -msgstr "Импортировать ÑущеÑтвующий проект" +msgstr "ОтÑутÑтвующий проект" #: editor/project_manager.cpp msgid "Error: Project is missing on the filesystem." @@ -9558,14 +9732,13 @@ msgstr "Ошибка: Проект отÑутÑтвует в файловой Ñ #: editor/project_manager.cpp msgid "Can't open project at '%s'." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ проект в \"%s\"." +msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ проект в \"%s\"." #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" msgstr "Ð’Ñ‹ уверены, что хотите открыть более одного проекта?" #: editor/project_manager.cpp -#, fuzzy msgid "" "The following project settings file does not specify the version of Godot " "through which it was created.\n" @@ -9577,8 +9750,8 @@ msgid "" "Warning: You won't be able to open the project with previous versions of the " "engine anymore." msgstr "" -"Файл наÑтроек проекта не указывает верÑию верÑии движка, на котором он был " -"Ñгенерирован:\n" +"Ð’ Ñледующем файле наÑтроек проекта не указана верÑÐ¸Ñ Godot, в которой данный " +"проект был Ñоздан.\n" "\n" "%s\n" "\n" @@ -9587,7 +9760,6 @@ msgstr "" "Внимание: Ð’Ñ‹ больше не Ñможете открыть проект предыдущими верÑиÑми движка." #: 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" @@ -9615,58 +9787,59 @@ msgstr "" "неÑовмеÑтимы Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ верÑией." #: 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" -"ПожалуйÑта, отредактируйте проект и уÑтановите главную Ñцену в «ÐаÑтройки " -"проекта» в категории «Приложение»." +"Ðевозможно запуÑтить проект: не назначена Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñцена.\n" +"ПожалуйÑта, отредактируйте проект и уÑтановите главную Ñцену в ÐаÑтройках " +"проекта в категории Application." #: 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 "" -"Ðе могу запуÑтить проект: аÑÑеты должны быть импортированы.\n" -"ПожалуйÑта, отредактируйте проект, Ñто инициирует начальный импорт." +"Ðевозможно запуÑтить проект: реÑурÑÑ‹ должны быть импортированы.\n" +"ПожалуйÑта, откройте проект Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, Ñто Ñпровоцирует начальный " +"импорт." #: editor/project_manager.cpp -#, fuzzy msgid "Are you sure to run %d projects at once?" -msgstr "Ð’Ñ‹ уверены, что хотите запуÑтить более одного проекта?" +msgstr "Ð’Ñ‹ уверены, что хотите запуÑтить %d проектов одновременно?" #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove %d projects from the list?\n" "The project folders' contents won't be modified." -msgstr "Удалить проект из ÑпиÑка? (Содержимое папки не будет изменено)" +msgstr "" +"Удалить %d проектов из ÑпиÑка?\n" +"Содержимое папок проектов не будет изменено." #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove this project from the list?\n" "The project folder's contents won't be modified." -msgstr "Удалить проект из ÑпиÑка? (Содержимое папки не будет изменено)" +msgstr "" +"Удалить данный проект из ÑпиÑка?\n" +"Содержимое папки проекта не будет изменено." #: editor/project_manager.cpp -#, fuzzy msgid "" "Remove all missing projects from the list?\n" "The project folders' contents won't be modified." -msgstr "Удалить проект из ÑпиÑка? (Содержимое папки не будет изменено)" +msgstr "" +"Удалить вÑе отÑутÑтвующие проекты из ÑпиÑка?\n" +"Содержимое папок проектов не будет изменено." #: editor/project_manager.cpp -#, fuzzy msgid "" "Language changed.\n" "The interface will update after restarting the editor or project manager." msgstr "" -"Язык изменилÑÑ.\n" -"ПользовательÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð±ÑƒÐ´ÐµÑ‚ обновлен при Ñледующем запуÑке редактора." +"Язык изменён.\n" +"Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑÑ Ð¿Ð¾Ñле перезапуÑка редактора или менеджера проектов." #: editor/project_manager.cpp msgid "" @@ -9681,9 +9854,12 @@ msgid "Project Manager" msgstr "Менеджер проектов" #: editor/project_manager.cpp -#, fuzzy msgid "Projects" -msgstr "Проект" +msgstr "Проекты" + +#: editor/project_manager.cpp +msgid "Last Modified" +msgstr "ПоÑледнее изменение" #: editor/project_manager.cpp msgid "Scan" @@ -9698,9 +9874,8 @@ msgid "New Project" msgstr "Ðовый проект" #: editor/project_manager.cpp -#, fuzzy msgid "Remove Missing" -msgstr "Удалить точку" +msgstr "Удалить отÑутÑтвующие" #: editor/project_manager.cpp msgid "Templates" @@ -9715,13 +9890,12 @@ msgid "Can't run project" msgstr "Ðе удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить проект" #: 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 "" -"Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ñƒ Ð²Ð°Ñ Ð½ÐµÑ‚ каких-либо проектов.\n" -"Хотите изучить официальные примеры в библиотеке шаблонов?" +"Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ñƒ Ð²Ð°Ñ Ð½ÐµÑ‚ никаких проектов.\n" +"Хотите изучить официальные примеры в Библиотеке реÑурÑов?" #: editor/project_settings_editor.cpp msgid "Key " @@ -9772,18 +9946,6 @@ msgid "Device" msgstr "УÑтройÑтво" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Ðажмите любую клавишу..." @@ -10022,24 +10184,23 @@ msgstr "РеÑурÑÑ‹:" #: editor/project_settings_editor.cpp msgid "Remaps by Locale:" -msgstr "Заменить на Ñзык:" +msgstr "Переназначить в локали:" #: editor/project_settings_editor.cpp msgid "Locale" -msgstr "Язык" +msgstr "Локаль" #: editor/project_settings_editor.cpp msgid "Locales Filter" -msgstr "Фильтры локализации" +msgstr "Фильтр локалей" #: editor/project_settings_editor.cpp msgid "Show All Locales" -msgstr "Показать вÑе Ñзыки" +msgstr "Показать вÑе локали" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Show Selected Locales Only" -msgstr "Показать только выбранные Ñзыки" +msgstr "Показать только выбранные локали" #: editor/project_settings_editor.cpp msgid "Filter mode:" @@ -10047,7 +10208,7 @@ msgstr "Режим фильтра:" #: editor/project_settings_editor.cpp msgid "Locales:" -msgstr "Языки:" +msgstr "Локали:" #: editor/project_settings_editor.cpp msgid "AutoLoad" @@ -10126,7 +10287,6 @@ msgid "Suffix" msgstr "СуффикÑ" #: editor/rename_dialog.cpp -#, fuzzy msgid "Advanced Options" msgstr "Дополнительные параметры" @@ -10289,9 +10449,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" @@ -10329,30 +10488,27 @@ msgstr "Узел должен принадлежать редактируемоР#: editor/scene_tree_dock.cpp msgid "Instantiated scenes can't become root" -msgstr "Мгновенные Ñцены не могут быть корневыми" +msgstr "ИнÑтанцированные Ñцены не могут Ñтать корневыми" #: editor/scene_tree_dock.cpp msgid "Make node as Root" msgstr "Сделать узел корневым" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete %d nodes?" -msgstr "Удалить узлы" +msgstr "Удалить %d узлов?" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete the root node \"%s\"?" -msgstr "Удалить узел(Ñ‹) графа шейдера" +msgstr "Удалить корневой узел «%s»?" #: editor/scene_tree_dock.cpp msgid "Delete node \"%s\" and its children?" msgstr "Удалить узел «%s» и его дочерние Ñлементы?" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Delete node \"%s\"?" -msgstr "Удалить узлы" +msgstr "Удалить узел «%s»?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." @@ -10375,22 +10531,21 @@ msgstr "" "узла будут возвращены к значениÑм по умолчанию." #: 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 "" -"Отключение параметра \"editable_instance\" приведет к тому, что вÑе ÑвойÑтва " -"узла будут возвращены к значениÑм по умолчанию." +"Включение опции «Загрузить как заполнитель» отключит опцию «Редактируемые " +"потомки» и приведет к тому, что вÑе ÑвойÑтва узла будут возвращены к " +"значениÑм по умолчанию." #: editor/scene_tree_dock.cpp msgid "Make Local" msgstr "Сделать локальным" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "New Scene Root" -msgstr "Ðовый Корневой Узел Сцены" +msgstr "Ðовый корень Ñцены" #: editor/scene_tree_dock.cpp msgid "Create Root Node:" @@ -10429,9 +10584,8 @@ msgid "Remove Node(s)" msgstr "Удалить узел(узлы)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Change type of node(s)" -msgstr "Изменить Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð°" +msgstr "Изменить тип узла(ов)" #: editor/scene_tree_dock.cpp msgid "" @@ -10482,9 +10636,8 @@ msgid "Change Type" msgstr "Изменить тип" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Reparent to New Node" -msgstr "Переподчинить узел" +msgstr "Переподчинить на новый узел" #: editor/scene_tree_dock.cpp msgid "Make Scene Root" @@ -10507,9 +10660,8 @@ msgid "Delete (No Confirm)" msgstr "Удалить (без подтверждениÑ)" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Add/Create a New Node." -msgstr "Добавить/Ñоздать новый узел" +msgstr "Добавить/Ñоздать новый узел." #: editor/scene_tree_dock.cpp msgid "" @@ -10544,55 +10696,48 @@ msgid "Toggle Visible" msgstr "Переключить видимоÑть" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Unlock Node" -msgstr "Выбрать узел" +msgstr "Разблокировать узел" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Button Group" -msgstr "Кнопка 7" +msgstr "Группа кнопок" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "(Connecting From)" -msgstr "Ошибка подключениÑ" +msgstr "(Подключение от)" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" msgstr "Конфигурации узла, предупреждение:" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node has %s connection(s) and %s group(s).\n" "Click to show signals dock." msgstr "" -"Узел Ñодержит ÑвÑзи и группы\n" +"Узел имеет %s ÑвÑзей и %s групп.\n" "Ðажмите, чтобы показать панель Ñигналов." #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node has %s connection(s).\n" "Click to show signals dock." msgstr "" -"Узел Ñодержит ÑвÑзи.\n" +"Узел Ñодержит %s ÑвÑзей.\n" "Ðажмите, чтобы показать панель Ñигналов." #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node is in %s group(s).\n" "Click to show groups dock." msgstr "" -"Узел принадлежит к группе.\n" +"Узел находитÑÑ Ð² %s группе(ах).\n" "Ðажмите, чтобы показать панель групп." #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Open Script:" -msgstr "Открыть Ñкрипт" +msgstr "Открыть Ñкрипт:" #: editor/scene_tree_editor.cpp msgid "" @@ -10643,39 +10788,32 @@ msgid "Select a Node" msgstr "Выбрать узел" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Path is empty." -msgstr "Ðе указан путь" +msgstr "Ðе указан путь." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty." -msgstr "ПуÑтое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" +msgstr "ПуÑтое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Path is not local." -msgstr "Путь не локальный" +msgstr "Путь не локальный." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid base path." -msgstr "ÐедопуÑтимый базовый путь" +msgstr "ÐедопуÑтимый базовый путь." #: editor/script_create_dialog.cpp -#, fuzzy msgid "A directory with the same name exists." -msgstr "Каталог Ñ Ñ‚Ð°ÐºÐ¸Ð¼ же именем ÑущеÑтвует" +msgstr "Каталог Ñ Ñ‚Ð°ÐºÐ¸Ð¼ же именем ÑущеÑтвует." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid extension." -msgstr "ÐедопуÑтимое раÑширение" +msgstr "ÐедопуÑтимое раÑширение." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Wrong extension chosen." -msgstr "Выбрано неверное раÑширение" +msgstr "Выбрано неверное раÑширение." #: editor/script_create_dialog.cpp msgid "Error loading template '%s'" @@ -10699,68 +10837,56 @@ msgid "N/A" msgstr "Ð/Д" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script / Choose Location" -msgstr "Открыть Скрипт/Выбрать МеÑто" +msgstr "Открыть Скрипт / Выбрать МеÑто" #: editor/script_create_dialog.cpp msgid "Open Script" msgstr "Открыть Ñкрипт" #: editor/script_create_dialog.cpp -#, fuzzy msgid "File exists, it will be reused." -msgstr "Файл ÑущеÑтвует, будет иÑпользован повторно" +msgstr "Файл ÑущеÑтвует, будет иÑпользован повторно." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid class name." -msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа" +msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid inherited parent name or path." -msgstr "Ðеверное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ путь наÑледуемого предка" +msgstr "Ðеверное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ путь наÑледуемого предка." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Script is valid." -msgstr "Скрипт корректен" +msgstr "Скрипт корректен." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Allowed: a-z, A-Z, 0-9, _ and ." -msgstr "ДопуÑкаютÑÑ: a-z, A-Z, 0-9 и _" +msgstr "ДопуÑкаютÑÑ: a-z, A-Z, 0-9, _ и ." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in script (into scene file)." -msgstr "Ð’Ñтроенный Ñкрипт (в файл Ñцены)" +msgstr "Ð’Ñтроенный Ñкрипт (в файл Ñцены)." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Will create a new script file." -msgstr "Создать новый Ñкрипт" +msgstr "Будет Ñоздан новый файл Ñкрипта." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Will load an existing script file." -msgstr "Загрузить ÑущеÑтвующий Ñкрипт" +msgstr "Будет загружен ÑущеÑтвующий Ñкрипт." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Ð˜Ð¼Ñ ÐšÐ»Ð°ÑÑа" +msgstr "Ð˜Ð¼Ñ ÐºÐ»Ð°ÑÑа:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Шаблон" +msgstr "Шаблон:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Ð’Ñтроенный Скрипт" +msgstr "Ð’Ñтроенный Ñкрипт:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10775,38 +10901,32 @@ msgid "Bytes:" msgstr "Байты:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Warning:" -msgstr "ПредупреждениÑ:" +msgstr "Предупреждение:" #: editor/script_editor_debugger.cpp msgid "Error:" msgstr "Ошибка:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error" -msgstr "Копировать ошибку" +msgstr "Ошибка C++" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Error:" -msgstr "Ошибка:" +msgstr "Ошибка C++:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Source" -msgstr "ИÑточник" +msgstr "ИÑходный код C++" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Source:" -msgstr "ИÑточник" +msgstr "ИÑходный код:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "C++ Source:" -msgstr "ИÑточник" +msgstr "ИÑходный код C++:" #: editor/script_editor_debugger.cpp msgid "Stack Trace" @@ -10817,18 +10937,16 @@ msgid "Errors" msgstr "Ошибки" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Child process connected." -msgstr "Дочерний процеÑÑ ÑвÑзан" +msgstr "Дочерний процеÑÑ ÑвÑзан." #: editor/script_editor_debugger.cpp msgid "Copy Error" msgstr "Копировать ошибку" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Skip Breakpoints" -msgstr "Точки оÑтанова" +msgstr "ПропуÑтить точки оÑтанова" #: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" @@ -10847,9 +10965,8 @@ msgid "Profiler" msgstr "Профайлер" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Network Profiler" -msgstr "ÐкÑпортировать проект" +msgstr "Сетевой профайлер" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -11073,10 +11190,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "ОжидалаÑÑŒ Ñтрока длиной 1 (Ñимвол)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "Ðргумент шага равен нулю!" @@ -11143,12 +11256,12 @@ msgstr "Удалить выделенную Ñетку" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Fill Selection" -msgstr "Злить выделенную GridMap" +msgstr "Залить выделенную GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy msgid "GridMap Paste Selection" -msgstr "Удалить выделенную Ñетку" +msgstr "Ð’Ñтавить выделенную Ñетку" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Paint" @@ -11215,6 +11328,11 @@ msgid "Cursor Clear Rotation" msgstr "КурÑор очиÑтить поворот" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "ОчиÑтить выделенное" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "ОчиÑтить выделение" @@ -11233,7 +11351,7 @@ msgstr "РаÑÑтоÑние выбора:" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy msgid "Filter meshes" -msgstr "Режим фильтра:" +msgstr "Фильтр полиÑеток" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Give a MeshLibrary resource to this GridMap to use its meshes." @@ -11365,32 +11483,36 @@ 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 "Ðе должно конфликтовать Ñ ÑущеÑтвующим вÑтроенным именем типа." +msgstr "Переопределить ÑущеÑтвующую вÑтроенную функцию." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new function." -msgstr "Создать новый прÑмоугольник." +msgstr "Создать новую функцию." #: modules/visual_script/visual_script_editor.cpp msgid "Variables:" msgstr "Переменные:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new variable." -msgstr "Создать новый прÑмоугольник." +msgstr "Создать новую переменную." #: modules/visual_script/visual_script_editor.cpp msgid "Signals:" msgstr "Сигналы:" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create a new signal." -msgstr "Создать новый полигон." +msgstr "Создать новый Ñигнал." #: modules/visual_script/visual_script_editor.cpp msgid "Name is not a valid identifier:" @@ -11417,7 +11539,6 @@ msgid "Add Function" msgstr "Добавить функцию" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "Удалить входной порт" @@ -11430,22 +11551,10 @@ msgid "Add Signal" 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 "Удалить входной порт" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" msgstr "Удалить выходной порт" @@ -11494,10 +11603,6 @@ 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 "Добавить узел(узлы) из дерева" @@ -11506,14 +11611,17 @@ 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" -msgstr "Добавить получающее ÑвойÑтво" +msgstr "Добавить геттер" #: modules/visual_script/visual_script_editor.cpp msgid "Add Setter Property" -msgstr "Добавить уÑтанавливающее ÑвойÑтво" +msgstr "Добавить Ñеттер" #: modules/visual_script/visual_script_editor.cpp msgid "Change Base Type" @@ -11532,9 +11640,8 @@ msgid "Connect Nodes" msgstr "ПриÑоединить узлы" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Разъединить узлы графа" +msgstr "Разъединить узлы" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11574,21 +11681,23 @@ msgid "Can't create function with a function node." msgstr "Ðе удаётÑÑ Ñкопировать узел функцию." #: modules/visual_script/visual_script_editor.cpp +#, fuzzy msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" +"Ðевозможно Ñоздать функцию из узлов, принадлежащим неÑкольким функциÑм." #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." -msgstr "" +#, fuzzy +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 "" +msgstr "Попробуйте выбрать только одну поÑледовательноÑть." #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "Переименовать функцию" +msgstr "Создать функцию" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11613,21 +11722,31 @@ msgstr "Редактирование Ñигнала:" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Make Tool:" -msgstr "Сделать локальным" +msgstr "Сделать инÑтрумент:" #: modules/visual_script/visual_script_editor.cpp 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 "ФункциÑ:" +msgstr "имÑ_функции" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Select or create a function to edit its graph." -msgstr "Выберите или Ñоздайте функцию Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€Ð°Ñ„Ð°" +msgstr "Выберите или Ñоздайте функцию Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€Ð°Ñ„Ð°." #: modules/visual_script/visual_script_editor.cpp msgid "Delete Selected" @@ -11646,14 +11765,12 @@ msgid "Cut Nodes" msgstr "Вырезать узлы" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Переименовать функцию" +msgstr "Сделать функцию" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Обновить" +msgstr "Обновить граф" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11783,13 +11900,11 @@ msgstr "" "редактора." #: 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." @@ -11842,27 +11957,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 не указан - невозможно наÑтроить проект." @@ -11876,7 +11974,7 @@ msgstr "Требуемый значок не указан в предуÑтанР#: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "ОÑтановить HTTP-Ñервер" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11911,10 +12009,20 @@ msgid "Using default boot splash image." msgstr "ИÑпользовать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки по умолчанию." #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package short name." +msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°:" + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "Ðеверное уникальное Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°." #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package publisher display name." +msgstr "Ðеверное уникальное Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "Ðеверный GUID продукта." @@ -12154,42 +12262,36 @@ msgstr "" "редактируемой Ñцены, как прÑмого родителÑ." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVRCamera must have an ARVROrigin node as its parent." -msgstr "ARVRCamera должна иметь узел ARVROrigin в качеÑтве предка" +msgstr "ARVRCamera должна иметь узел ARVROrigin в качеÑтве предка." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVRController must have an ARVROrigin node as its parent." -msgstr "ARVRController должен иметь узел ARVROrigin в качеÑтве предка" +msgstr "ARVRController должен иметь узел ARVROrigin в качеÑтве предка." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "" "The controller ID must not be 0 or this controller won't be bound to an " "actual controller." msgstr "" "Идентификатор контроллера не должен быть равен 0 или Ñтот контроллер не " -"будет привÑзан к фактичеÑкому контроллеру" +"будет привÑзан к фактичеÑкому контроллеру." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVRAnchor must have an ARVROrigin node as its parent." -msgstr "ARVRAnchor должен иметь узел ARVROrigin в качеÑтве предка" +msgstr "ARVRAnchor должен иметь узел ARVROrigin в качеÑтве предка." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "" "The anchor ID must not be 0 or this anchor won't be bound to an actual " "anchor." msgstr "" "Идентификатор ÑÐºÐ¾Ñ€Ñ Ð½Ðµ должен быть равен 0 или Ñтот Ñкорь не будет привÑзан " -"к фактичеÑкому Ñкорю" +"к фактичеÑкому Ñкорю." #: scene/3d/arvr_nodes.cpp -#, fuzzy msgid "ARVROrigin requires an ARVRCamera child node." -msgstr "ARVROrigin требует дочерний узел ARVRCamera" +msgstr "ARVROrigin требует дочерний узел ARVRCamera." #: scene/3d/baked_lightmap.cpp msgid "%d%%" @@ -12294,7 +12396,7 @@ msgstr "" #: scene/3d/light.cpp msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows." -msgstr "" +msgstr "SpotLight Ñ ÑƒÐ³Ð»Ð¾Ð¼ более 90 градуÑов не может отбраÑывать тени." #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." @@ -12357,16 +12459,16 @@ msgstr "" "Измените размер дочерней формы коллизии." #: scene/3d/remote_transform.cpp -#, fuzzy msgid "" "The \"Remote Path\" property must point to a valid Spatial or Spatial-" "derived node to work." -msgstr "СвойÑтво Path должно указывать на дейÑтвительный Spatial узел." +msgstr "" +"СвойÑтво «Remote Path» должно указывать на дейÑтвительный Spatial или " +"унаÑледованный от Spatial узел." #: scene/3d/soft_body.cpp -#, fuzzy msgid "This body will be ignored until you set a mesh." -msgstr "Ðто тело будет игнорироватьÑÑ, пока вы не уÑтановите Ñетку" +msgstr "Ðто тело будет игнорироватьÑÑ, пока вы не уÑтановите Ñетку." #: scene/3d/soft_body.cpp msgid "" @@ -12380,13 +12482,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 "" @@ -12452,9 +12553,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." @@ -12470,16 +12570,15 @@ msgstr "HSV" #: scene/gui/color_picker.cpp msgid "Raw" -msgstr "Raw" +msgstr "Сырой" #: scene/gui/color_picker.cpp msgid "Switch between hexadecimal and code values." msgstr "Переключение между шеÑтнадцатеричными и кодовыми значениÑми." #: scene/gui/color_picker.cpp -#, fuzzy msgid "Add current color as a preset." -msgstr "Добавить текущий цвет как преÑет" +msgstr "Добавить текущий цвет как преÑет." #: scene/gui/container.cpp #, fuzzy @@ -12522,12 +12621,10 @@ msgstr "" "Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - нормально, но они будут Ñкрыты при запуÑке." #: scene/gui/range.cpp -#, fuzzy msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0." -msgstr "ЕÑли exp_edit равен true min_value должно быть > 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 " @@ -12548,8 +12645,8 @@ msgid "" "Default Environment as specified in Project Settings (Rendering -> " "Environment -> Default Environment) could not be loaded." msgstr "" -"Среда по умолчанию, как определено в наÑтройках проекта (Rendering -> " -"Environment -> Default Environment) не может быть загружена." +"Окружение по умолчанию, указанное в ÐаÑтройках проекта (Rendering -> " +"Environment -> Default Environment) не может быть загружено." #: scene/main/viewport.cpp msgid "" @@ -12592,6 +12689,31 @@ 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 "ПриоÑтановить Ñцену" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #~ msgid "Snap to Grid" #~ msgstr "ПривÑзка к Ñетке" @@ -13070,9 +13192,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Rotate 270 degrees" #~ msgstr "Поворот на 270 градуÑов" -#~ msgid "Warning" -#~ msgstr "Предупреждение" - #~ msgid "Variable" #~ msgstr "ПеременнаÑ" @@ -13199,9 +13318,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Out-In" #~ msgstr "Из-Ð’" -#~ msgid "Transitions" -#~ msgstr "Переходы" - #~ msgid "Change Anim Len" #~ msgstr "Изменить длину анимации" @@ -13410,9 +13526,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Replace By" #~ msgstr "Заменить на" -#~ msgid "Case Sensitive" -#~ msgstr "ЧувÑтвительноÑть региÑтра" - #~ msgid "Backwards" #~ msgstr "Ð’ обратном направлении" @@ -13560,9 +13673,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Re-Import Changed Resources" #~ msgstr "Переимпортировать изменённые реÑурÑÑ‹" -#~ msgid "Loading Export Templates" -#~ msgstr "Загрузка шаблонов ÑкÑпорта" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13871,9 +13981,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Loading Image:" #~ msgstr "Загрузка изображениÑ:" -#~ msgid "Couldn't load image:" -#~ msgstr "Ðевозможно загрузить изображение:" - #~ msgid "Converting Images" #~ msgstr "Преобразование изображений" @@ -14058,9 +14165,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgstr "" #~ "Ðе могу прочитать файл Ñертификата. Уверены, что путь и пароль верны?" -#~ msgid "Error creating the signature object." -#~ msgstr "Ошибка при Ñоздании объекта подпиÑи." - #~ msgid "Error creating the package signature." #~ msgstr "Ошибка при Ñоздании подпиÑи пакета." @@ -14161,9 +14265,6 @@ msgstr "КонÑтанты не могут быть изменены." #~ msgid "Create Android keystore" #~ msgstr "Создать keystore Ð´Ð»Ñ Android" -#~ msgid "Full name" -#~ msgstr "Полное имÑ" - #~ msgid "Organizational unit" #~ msgstr "Подразделение" @@ -14267,9 +14368,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 a5775be438..99e23b323f 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -1,6 +1,6 @@ # Sinhala translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Yohan Sandun <Yohan99ysk@gmail.com>, 2018. msgid "" @@ -24,6 +24,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -421,6 +425,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "ලුහුබදින්නෙක් à¶‘à¶šà·Š කරන්න" @@ -526,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 "" @@ -714,6 +723,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 +803,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp #, fuzzy msgid "Advanced" msgstr "සමà¶à·”ලිà¶à¶ºà·’" @@ -962,7 +979,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 +1444,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 +1685,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 "" @@ -1933,6 +1955,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1968,6 +1998,27 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "ලක්ෂණය ලුහුබදින්න" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2575,7 +2626,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 "" @@ -2783,7 +2835,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2887,6 +2939,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 +2999,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 "" @@ -3251,6 +3311,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3373,6 +3441,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 "" @@ -3449,6 +3521,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4165,6 +4241,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Anim පසුරු:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "à·à·Šâ€à¶»à·€à·Šâ€à¶º පසුරු:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "à·à·Šâ€à¶»à·’à¶:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4396,6 +4487,11 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Anim සංක්රමණය වෙනස් කරන්න" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Anim සංක්රමණය වෙනස් කරන්න" @@ -4475,6 +4571,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" @@ -4729,6 +4830,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 "" @@ -4832,6 +4957,14 @@ 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 "" @@ -4840,6 +4973,10 @@ 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 "" @@ -4910,6 +5047,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 "" @@ -4923,6 +5130,20 @@ 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 "" @@ -5060,6 +5281,10 @@ 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 "" @@ -5199,7 +5424,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5544,11 +5769,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6174,6 +6413,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 +6556,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 "" @@ -6394,10 +6646,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6424,6 +6672,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7059,19 +7312,36 @@ msgid "Create Mesh2D" msgstr "à·ƒà·à¶¯à¶±à·Šà¶±" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create LightOccluder2D" msgstr "à·ƒà·à¶¯à¶±à·Šà¶±" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "à·ƒà·à¶¯à¶±à·Šà¶±" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7148,6 +7418,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7423,6 +7697,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7439,7 +7714,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7551,6 +7826,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 "" @@ -7568,6 +7855,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 "නිවේà·à¶± මà·à¶¯à·’ලිය" @@ -7780,6 +8098,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -8048,7 +8374,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8639,9 +8965,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8705,6 +9032,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 "" @@ -8750,6 +9085,12 @@ 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 "" @@ -8798,6 +9139,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8849,6 +9194,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 "" @@ -9106,6 +9459,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9186,18 +9543,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10410,10 +10755,6 @@ 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 "" @@ -10550,6 +10891,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "à¶à·à¶»à·à¶œà¶à·Š යà¶à·”රු මක෠දමන්න" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10692,6 +11038,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 "" @@ -10756,15 +11111,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 "මෙම ලුහුබදින්න෠ඉවà¶à·Š කරන්න." @@ -10814,10 +11160,6 @@ 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 "" @@ -10897,7 +11239,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10938,6 +11280,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 "à·à·Šâ€à¶»à·’à¶:" @@ -11136,27 +11491,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 "" @@ -11205,10 +11543,18 @@ 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 "" diff --git a/editor/translations/sk.po b/editor/translations/sk.po index 88eddf57db..b7795ea7b7 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -1,6 +1,6 @@ # Slovak translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # J08nY <johnenter@gmail.com>, 2016. # MineGame 159 <minegame459@gmail.com>, 2018. @@ -29,6 +29,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Chybný argument convert(), použite TYPE_* konÅ¡tanty." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -429,6 +433,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -531,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 "" @@ -724,6 +733,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 +817,11 @@ msgstr "" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "Filter:" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "Vyvážený" @@ -985,7 +1003,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 +1479,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 +1729,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 "" @@ -1991,6 +2014,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -2029,6 +2060,29 @@ msgstr "" msgid "Class" msgstr "Trieda:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Prejdite na Metódu" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Signály" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Filter:" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2645,7 +2699,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 "" @@ -2856,7 +2911,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2962,6 +3017,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 +3081,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 "" @@ -3335,6 +3399,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3460,6 +3532,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 "" @@ -3539,6 +3616,11 @@ msgstr "Popis:" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "UložiÅ¥ súbor" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "OtvoriÅ¥ súbor(y)" @@ -4284,6 +4366,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Klipy Animácie:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Zvukové Klipy:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funkcie:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4521,6 +4618,11 @@ msgstr "VložiÅ¥" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Prechody" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Prechody" @@ -4604,6 +4706,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" @@ -4863,6 +4970,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 "" @@ -4966,6 +5099,14 @@ 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 "" @@ -4975,6 +5116,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "ZmeniÅ¥ veľkosÅ¥ výberu" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "Popis:" @@ -5050,6 +5196,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 "" @@ -5063,6 +5279,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "VÅ¡etky vybrané" @@ -5204,6 +5434,10 @@ 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 "" @@ -5345,7 +5579,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5699,11 +5933,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6346,6 +6594,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 "" @@ -6477,10 +6742,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 "" @@ -6576,11 +6837,6 @@ msgid "Source" msgstr "Prostriedok" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Signály" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6607,6 +6863,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7255,21 +7516,39 @@ msgid "Create Mesh2D" msgstr "VytvoriÅ¥ adresár" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "VytvoriÅ¥ adresár" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "VytvoriÅ¥ adresár" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "VytvoriÅ¥ adresár" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "VytvoriÅ¥ adresár" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "VytvoriÅ¥ adresár" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7349,6 +7628,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7635,6 +7918,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7651,8 +7935,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "" +#, fuzzy +msgid "Theme File" +msgstr "OtvoriÅ¥ súbor" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -7767,6 +8052,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:" @@ -7785,6 +8083,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" @@ -8019,6 +8350,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "VytvoriÅ¥ adresár" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "VytvoriÅ¥ adresár" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "VytvoriÅ¥ adresár" @@ -8305,7 +8646,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8898,9 +9239,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8965,6 +9307,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 "" @@ -9010,6 +9361,12 @@ 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 "" @@ -9058,6 +9415,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "Súbor:" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9110,6 +9472,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 "" @@ -9372,6 +9743,10 @@ msgid "Projects" msgstr "Zakladatelia Projektu" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9455,18 +9830,6 @@ msgid "Device" msgstr "Zariadenie" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10715,10 +11078,6 @@ msgid "GDNative" msgstr "" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "argument \"step\"/krok je nulový!" @@ -10860,6 +11219,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "VÅ¡etky vybrané" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "VÅ¡etky vybrané" @@ -11004,6 +11368,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 "" @@ -11071,16 +11445,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é" @@ -11130,10 +11494,6 @@ 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 "" @@ -11215,7 +11575,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11260,6 +11620,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:" @@ -11460,27 +11835,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 "" @@ -11532,11 +11890,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Nesprávna veľkosÅ¥ pÃsma." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Nesprávna veľkosÅ¥ pÃsma." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Nesprávna veľkosÅ¥ pÃsma." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Nesprávna veľkosÅ¥ pÃsma." @@ -12086,6 +12454,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + #, fuzzy #~ msgid "Theme Properties:" #~ msgstr "Filter:" @@ -12128,9 +12502,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?" @@ -12161,10 +12532,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 8b9ed3f61a..88acbfc946 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -1,6 +1,6 @@ # Slovenian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # matevž lapajne <sivar.lapajne@gmail.com>, 2016-2018. # Matjaž Vitas <matjaz.vitas@gmail.com>, 2017-2018. @@ -33,6 +33,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Neveljavna vrsta argumenta za convert(), uporabite TYPE_* konstanto." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -447,6 +451,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Animacija Dodaj sled" @@ -558,8 +566,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 +763,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 +851,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 +1041,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 +1527,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 +1792,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" @@ -2065,6 +2089,16 @@ msgstr "IÅ¡Äi PomoÄ" #: editor/editor_help_search.cpp #, fuzzy +msgid "Case Sensitive" +msgstr "Zapri Prizor" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Iskanje" + +#: editor/editor_help_search.cpp +#, fuzzy msgid "Display All" msgstr "Zamenjaj Vse" @@ -2108,6 +2142,30 @@ msgstr "ÄŒlani" msgid "Class" msgstr "Razred:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metode" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Signali" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Konstanta" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Lastnosti" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Lastnosti" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2768,7 +2826,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" @@ -3006,8 +3065,8 @@ msgid "Play" msgstr "Zaženi" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Zaustavi prizor" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3116,6 +3175,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 +3236,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 "" @@ -3492,6 +3560,14 @@ msgid "Importing:" msgstr "Uvažanje:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3620,6 +3696,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" @@ -3702,6 +3783,11 @@ msgstr "Nov Podedovan Prizor..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Izberi Glavno Sceno" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Odpri Sceno" @@ -4489,6 +4575,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Animacija Dodaj sled" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funkcije:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4734,6 +4834,11 @@ msgstr "NaÄin Premika" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Prehod" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Prehod" @@ -4820,6 +4925,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" @@ -5082,6 +5192,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" @@ -5198,6 +5334,15 @@ msgid "Grid Step:" msgstr "Mrežni Korak:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 koraka" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Rotacijski Odmik:" @@ -5207,6 +5352,11 @@ msgstr "Rotacijski Korak:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "Prilagodi Velikost:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "Premakni navpiÄni vodnik" @@ -5287,6 +5437,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" @@ -5300,6 +5527,20 @@ msgstr "Spremeni SidriÅ¡Äa" #: 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 #, fuzzy msgid "Lock Selected" msgstr "Izbira Orodja" @@ -5453,6 +5694,11 @@ msgid "Use Rotation Snap" msgstr "Uporabi Rotacijsko Pripenjanje" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "Uporabi Pripenjanje" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Pripni Relativno" @@ -5602,7 +5848,7 @@ msgstr "V Animacijo Vstavi KljuÄ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5954,11 +6200,26 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#, 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 "" @@ -6613,6 +6874,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 "" @@ -6745,10 +7023,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 "" @@ -6845,11 +7119,6 @@ msgid "Source" msgstr "Viri" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Signali" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6878,6 +7147,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7538,21 +7812,40 @@ msgstr "Ustvari Nov %s" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Ustvari Predogled Modela" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Ustvarite Poligon" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Ustvarite Poligon" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Ustvarite Poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Ustvarite Mapo" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Ustvarite Mapo" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Model je prazen!" @@ -7635,6 +7928,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Napaka pri nalaganju vira." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7920,6 +8218,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7936,8 +8235,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Konstanta" +#, fuzzy +msgid "Theme File" +msgstr "Odpri v Datoteki" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8057,6 +8357,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 "" @@ -8075,6 +8388,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" @@ -8314,6 +8662,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Ustvarite Poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Ustvarite Poligon" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Ustvarite Poligon" @@ -8608,7 +8966,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9204,9 +9562,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9272,6 +9631,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 "" @@ -9318,6 +9686,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "Izvozi Projekt" @@ -9367,6 +9741,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Datoteke" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9422,6 +9801,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 "" @@ -9688,6 +10076,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Preglej" @@ -9774,18 +10166,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -11053,10 +11433,6 @@ msgid "GDNative" msgstr "" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "stopnja argumenta je niÄ!" @@ -11197,6 +11573,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "GridMap IzbriÅ¡i Izbor" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "PoÄisti izbrano" @@ -11349,6 +11730,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." @@ -11415,16 +11806,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" @@ -11474,10 +11855,6 @@ msgid "Add Preload Node" msgstr "Dodaj prednaloženo vozliÅ¡Äe" #: 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 "Dodaj Gradnik(e) iz Drevesa" @@ -11560,7 +11937,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11602,6 +11979,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:" @@ -11806,28 +12198,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 "" @@ -11878,11 +12253,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Neveljavno ime." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Neveljaven indeks lastnosti imena." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Neveljaven indeks lastnosti imena." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Neveljavno Ime Projekta." @@ -12448,6 +12833,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstante ni možno spreminjati." +#~ msgid "Pause the scene" +#~ msgstr "Zaustavi prizor" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "Pripni na mrežo" @@ -12662,10 +13050,6 @@ msgstr "Konstante ni možno spreminjati." #~ msgstr "Približaj" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Ogled datotek" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "Približaj" @@ -12685,10 +13069,6 @@ msgstr "Konstante ni možno spreminjati." #~ msgstr "Elementi GUI Teme:" #, fuzzy -#~ msgid "Property: " -#~ msgstr "Lastnosti" - -#, fuzzy #~ msgid "Toggle folder status as Favorite." #~ msgstr "Nastavi mapo status kot Priljubljeno" diff --git a/editor/translations/sq.po b/editor/translations/sq.po index dbea1057fc..fc175ff061 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -1,6 +1,6 @@ # Albanian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Igli <iglibh@outlook.com>, 2018. # Enrik Qose <enrikqose@gmail.com>, 2019. @@ -25,6 +25,10 @@ msgstr "" "konstantet TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -411,6 +415,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -512,8 +520,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 +710,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 +794,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 +980,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 +1464,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 +1733,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ë" @@ -1995,6 +2019,16 @@ msgid "Search Help" msgstr "Kërko Ndihmë" #: editor/editor_help_search.cpp +#, fuzzy +msgid "Case Sensitive" +msgstr "Mbyll Skenën" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Kërko" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Shfaqi të Gjitha" @@ -2030,6 +2064,30 @@ msgstr "Tipi i Anëtarit" msgid "Class" msgstr "Klasa" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metodat" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Sinjalet" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Vetitë:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Vetitë e Temës" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Vetitë:" @@ -2695,7 +2753,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" @@ -2930,8 +2989,8 @@ msgid "Play" msgstr "Luaj" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pusho skenën" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3038,6 +3097,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 +3158,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 "" @@ -3416,6 +3484,14 @@ msgid "Importing:" msgstr "Duke Importuar:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3547,6 +3623,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" @@ -3628,6 +3709,11 @@ msgstr "Skenë e Re e Trashëguar..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Zgjidh një Skenë Kryesore" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Hap Skenën" @@ -4360,6 +4446,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Klipe Audio:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Klipe Audio:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funksionet:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4590,6 +4691,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4669,6 +4774,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" @@ -4929,6 +5039,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 "" @@ -5035,6 +5171,14 @@ 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 "" @@ -5043,6 +5187,10 @@ 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 "" @@ -5115,6 +5263,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 "" @@ -5128,6 +5344,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "Zgjidh" @@ -5267,6 +5497,10 @@ 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 "" @@ -5406,7 +5640,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5754,11 +5988,26 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "LibrariaMesh..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6387,6 +6636,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 "" @@ -6516,10 +6782,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 "" @@ -6613,11 +6875,6 @@ msgid "Source" msgstr "Resursi" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Sinjalet" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6643,6 +6900,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7287,20 +7549,39 @@ msgstr "Krijo %s të ri" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Duke Krijuar Shikimin Paraprak të Mesh-ave" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Krijo një Poligon" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Krijo një Poligon" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Krijo një Poligon" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Krijo një Folder" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Krijo një Folder" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7379,6 +7660,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Dështoi të ngarkojë resursin." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7656,6 +7942,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7672,8 +7959,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "" +#, fuzzy +msgid "Theme File" +msgstr " Skedarët" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7785,6 +8073,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 "" @@ -7801,6 +8102,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 "" @@ -8011,6 +8341,16 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Bëje Unik" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Bëje Unik" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -8292,7 +8632,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8881,9 +9221,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8947,6 +9288,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 "" @@ -8992,6 +9342,12 @@ 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 "" @@ -9040,6 +9396,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Skedarët" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9091,6 +9452,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 "" @@ -9354,6 +9724,10 @@ msgid "Projects" msgstr "Projekti" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9436,18 +9810,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10686,10 +11048,6 @@ 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 "" @@ -10827,6 +11185,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Fshi të Selektuarat" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10971,6 +11334,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'." @@ -11036,16 +11409,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" @@ -11095,10 +11458,6 @@ 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 "" @@ -11178,7 +11537,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11220,6 +11579,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:" @@ -11418,27 +11791,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 "" @@ -11487,10 +11843,20 @@ msgid "Using default boot splash image." msgstr "" #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package short name." +msgstr "Emër i palejuar." + +#: platform/uwp/export/export.cpp msgid "Invalid package unique name." msgstr "" #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package publisher display name." +msgstr "Emër i palejuar." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "" @@ -12020,6 +12386,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "Pusho skenën" + #~ msgid "Properties:" #~ msgstr "Vetitë:" diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index fd8f5d95b3..9b940d334c 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -1,6 +1,6 @@ # Serbian (cyrillic) translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # # ÐлекÑандар Урошевић <nicecubedude@gmail.com>, 2017. @@ -25,6 +25,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -444,6 +448,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Додај нову траку" @@ -554,8 +562,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 +759,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 +848,11 @@ msgstr "Додатни аргументи позива:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "ПоÑтавке објекта." + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "ПоÑтавке залепљавања" @@ -1023,7 +1041,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 +1528,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 +1796,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 датотека/е" @@ -2069,6 +2093,15 @@ msgid "Search Help" msgstr "Потражи помоћ" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Разликовање великих и малих Ñлова" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Покажи помагаче" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "Прикажи нормалу" @@ -2113,6 +2146,30 @@ msgstr "Чланови" msgid "Class" msgstr "КлаÑа:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Методе" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Сигнали" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "КонÑтантан" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "ОÑобине" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "ОÑобине" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2775,7 +2832,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 "Пројекат" @@ -3015,8 +3073,8 @@ msgid "Play" msgstr "Покрени" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Паузирај Ñцену" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3125,6 +3183,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 +3244,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." @@ -3506,6 +3573,14 @@ msgid "Importing:" msgstr "Увожење:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3636,6 +3711,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 "Менаџер извозних шаблона" @@ -3727,6 +3807,11 @@ msgstr "Ðова наÑлеђена Ñцена..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Одабери главну Ñцену" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Отвори Ñцену" @@ -4515,6 +4600,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Звучни Ñлушалац" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Звучни Ñлушалац" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Промени векторÑку функцију" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4759,6 +4859,11 @@ msgstr "Режим померања" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Померај" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Померај" @@ -4845,6 +4950,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 @@ -5108,6 +5218,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 "први" @@ -5217,6 +5353,15 @@ msgid "Grid Step:" msgstr "Корак мреже:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 корака" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Ротација офÑета:" @@ -5226,6 +5371,11 @@ msgstr "Ротације корака:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "Скала:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "Помери вертикални водич" @@ -5306,6 +5456,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 "Само Ñидра" @@ -5319,6 +5550,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "Избор алатки" @@ -5471,6 +5716,11 @@ msgid "Use Rotation Snap" msgstr "КориÑти лепљење ротације" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "КориÑти лепљење" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Залепи релативно" @@ -5623,7 +5873,7 @@ msgstr "Убаци кључ (поÑтојеће траке)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5984,11 +6234,27 @@ msgstr "Ðаправи ивичну мрежу" msgid "Outline Size:" msgstr "Величина ивице:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Обриши Ñтвар %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +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 "Додај Ñтвар" @@ -6656,6 +6922,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 "Увези тему" @@ -6791,10 +7074,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 "Корак у" @@ -6895,11 +7174,6 @@ msgstr "" "Извор: " #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Сигнали" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6928,6 +7202,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "Само реÑурÑи из датотечног ÑиÑтема Ñе могу убацити." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Lookup Symbol" msgstr "Потпун Ñимбол" @@ -7604,21 +7883,40 @@ msgstr "Ðаправи ивичну мрежу" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Ðаправи приказ мрежа" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Ðаправи полигон" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Ðаправи навигациони полигон" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Ðаправи навигациони полигон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Ðаправи оÑенчен полигон" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Ðаправи оÑенчен полигон" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Мрежа је празна!" @@ -7704,6 +8002,11 @@ msgid "Add Frame" msgstr "Додај оквир" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Грешка при учитавању реÑурÑа." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "Грешка: неуÑпех при учитавању реÑурÑа оквира!" @@ -8004,6 +8307,7 @@ msgid "Data Type:" msgstr "Тип податка:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Икона" @@ -8020,8 +8324,9 @@ msgid "Color" msgstr "Боја" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "КонÑтантан" +#, fuzzy +msgid "Theme File" +msgstr "Сачувај тему" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8143,6 +8448,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 "Следећа Ñкриптица" @@ -8162,6 +8480,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 "Режим ротације" @@ -8404,6 +8757,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Помери полигон" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Помери полигон" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Ðаправи навигациони полигон" @@ -8703,8 +9066,9 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "Промени Ñкаларни оператор" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -9308,9 +9672,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9377,6 +9742,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“ Ñа лиÑте?" @@ -9426,6 +9800,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "Извези пројекат" @@ -9481,6 +9861,11 @@ msgid "Make Patch" msgstr "Ðаправи закрп" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Датотеке" + +#: editor/project_export.cpp msgid "Features" msgstr "КарактериÑтике" @@ -9536,6 +9921,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 "Извозни шаблони за ову платформу ниÑу пронађени:" @@ -9805,6 +10199,10 @@ msgid "Projects" msgstr "Пројекат" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9888,18 +10286,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -11184,10 +11570,6 @@ 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 "" @@ -11329,6 +11711,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Обриши одабрано" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Обриши избор" @@ -11474,6 +11861,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 "Ðеважеће име. Име је резервиÑано за поÑтојећи уграђени тип." @@ -11539,16 +11936,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 "Обриши тачку" @@ -11598,10 +11985,6 @@ 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 "" @@ -11684,7 +12067,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11726,6 +12109,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 "" @@ -11927,27 +12325,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 "" @@ -12004,11 +12385,21 @@ msgstr "ÐеуÑпех при учитавању датотеке Ñа ÑличР#: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Ðеважеће име." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Ðеважеће име." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Ðеважеће име." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Ðеважеће име." @@ -12548,6 +12939,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "Паузирај Ñцену" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "Залепи за мрежу" @@ -12865,10 +13259,6 @@ msgstr "" #~ msgstr "Ставке теме графичког интерфејÑа:" #, fuzzy -#~ msgid "Property: " -#~ msgstr "ОÑобине" - -#, fuzzy #~ msgid "Toggle folder status as Favorite." #~ msgstr "Директоријум као омиљени" @@ -13159,9 +13549,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "Заменити Ñа" -#~ msgid "Case Sensitive" -#~ msgstr "Разликовање великих и малих Ñлова" - #~ msgid "Backwards" #~ msgstr "Ðатраг" diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index 5a1d545141..9710a5f670 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -1,6 +1,6 @@ # Serbian (latin) translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Milos Ponjavusic <brane@branegames.com>, 2018. # BLu <blmasfon@gmail.com>, 2018. @@ -28,6 +28,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -426,6 +430,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Dodaj Bezier Kanal" @@ -530,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 "" @@ -723,6 +732,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 +812,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -971,7 +988,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 +1453,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 +1695,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 "" @@ -1945,6 +1967,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1981,6 +2011,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Kontanta" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2590,7 +2640,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 "" @@ -2799,7 +2850,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2903,6 +2954,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 +3014,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 "" @@ -3268,6 +3327,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3390,6 +3457,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 "" @@ -3466,6 +3537,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4185,6 +4260,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Anim Klipovi:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Audio Klipovi:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Funkcije:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4417,6 +4507,11 @@ msgstr "" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "Tranzicije" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Tranzicije" @@ -4499,6 +4594,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" @@ -4754,6 +4853,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 "" @@ -4857,6 +4980,14 @@ 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 "" @@ -4865,6 +4996,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "Skaliraj Selekciju" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -4936,6 +5072,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 "" @@ -4949,6 +5155,20 @@ 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 "" @@ -5087,6 +5307,10 @@ 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 "" @@ -5227,7 +5451,7 @@ msgstr "Animacija dodaj kljuÄ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5574,11 +5798,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6209,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 "" @@ -6335,10 +6590,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 "" @@ -6429,10 +6680,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6459,6 +6706,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7100,21 +7352,39 @@ msgid "Create Mesh2D" msgstr "Napravi" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "Napravi" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Napravi" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Napravi" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Napravi" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Napravi" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7193,6 +7463,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7473,6 +7747,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7489,8 +7764,8 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Kontanta" +msgid "Theme File" +msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7603,6 +7878,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 "" @@ -7619,6 +7906,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 "" @@ -7843,6 +8161,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Napravi" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Napravi" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Napravi" @@ -8116,7 +8444,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8710,9 +9038,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8776,6 +9105,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 "" @@ -8821,6 +9158,12 @@ 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 "" @@ -8869,6 +9212,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8920,6 +9267,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 "" @@ -9177,6 +9532,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9259,18 +9618,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10489,10 +10836,6 @@ 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 "" @@ -10631,6 +10974,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Sve sekcije" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10774,6 +11122,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 "" @@ -10839,16 +11197,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" @@ -10898,10 +11246,6 @@ 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 "" @@ -10981,7 +11325,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11022,6 +11366,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:" @@ -11220,27 +11577,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 "" @@ -11289,10 +11629,18 @@ 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 "" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index e62eadd859..b0727bc604 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -1,6 +1,6 @@ # Swedish translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # bergmarklund <davemcgroin@gmail.com>, 2017, 2018. # Christoffer Sundbom <christoffer_karlsson@live.se>, 2017. @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-22 02:53+0000\n" +"PO-Revision-Date: 2019-11-25 04:05+0000\n" "Last-Translator: Mattias Münster <mattiasmun@gmail.com>\n" "Language-Team: Swedish <https://hosted.weblate.org/projects/godot-engine/" "godot/sv/>\n" @@ -25,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9.1-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 @@ -33,6 +33,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Ogiltligt typargument till convert(), använd TYPE_* konstanter." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -57,15 +61,15 @@ msgstr "Ogiltigt index av typ %s för bastyp %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "" +msgstr "Ogiltigt namn pÃ¥ index '%s' för bastyp %s" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr "" +msgstr "Ogiltiga argument för att bygga '%s'" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "" +msgstr "I anrop till '%s':" #: core/ustring.cpp msgid "B" @@ -137,7 +141,7 @@ msgstr "Flytta Bezierpunkt" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Anim Duplicera Nycklar" +msgstr "Anim Duplicera Nycklarna" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" @@ -432,22 +436,24 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp -#, fuzzy +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" -msgstr "Anim Lägg till spÃ¥r" +msgstr "Lägg till Bezier-spÃ¥r" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a key." -msgstr "" +msgstr "Kurva är felaktig sÃ¥ det gÃ¥r inte att skapa en nyckel." #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" -msgstr "" +msgstr "Kurvan är inte av rumstyp sÃ¥ det gÃ¥r inte att skapa en nyckel" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Transform Track Key" -msgstr "Transformera" +msgstr "Lägg till kurvförändringsnyckel" #: editor/animation_track_editor.cpp #, fuzzy @@ -543,8 +549,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" @@ -739,6 +746,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 @@ -824,6 +835,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" @@ -1012,7 +1028,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" @@ -1141,7 +1157,7 @@ msgstr "Projektgrundare" #: editor/editor_about.cpp msgid "Lead Developer" -msgstr "Lead Developer" +msgstr "Ledande utvecklare" #: editor/editor_about.cpp #, fuzzy @@ -1305,7 +1321,7 @@ msgstr "Dämpa" #: editor/editor_audio_buses.cpp msgid "Bypass" -msgstr "Bypass" +msgstr "GÃ¥ förbi" #: editor/editor_audio_buses.cpp msgid "Bus options" @@ -1503,7 +1519,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" @@ -1531,7 +1548,7 @@ msgstr "(tom)" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[osparad]" #: editor/editor_dir_dialog.cpp #, fuzzy @@ -1767,6 +1784,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" @@ -1996,7 +2017,7 @@ msgstr "Egenskaper" #: editor/editor_help.cpp msgid "Enumerations" -msgstr "Enumerations" +msgstr "Uppräkningar" #: editor/editor_help.cpp msgid "enum " @@ -2059,6 +2080,16 @@ msgstr "Sök Hjälp" #: editor/editor_help_search.cpp #, fuzzy +msgid "Case Sensitive" +msgstr "Skiftlägeskänsligt" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Sök" + +#: editor/editor_help_search.cpp +#, fuzzy msgid "Display All" msgstr "Ersätt Alla" @@ -2101,6 +2132,30 @@ msgstr "Medlemmar" msgid "Class" msgstr "Klass" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metoder" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "Signaler" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Konstant" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Egenskaper" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Egenskaper" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2527,7 +2582,7 @@ msgstr "Kan inte hitta skriptfältet för addon plugin vid: 'res://addons/%s'." #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s'." -msgstr "Kunde inte ladda addon script frÃ¥n sökväg: '%s'" +msgstr "Kunde inte ladda addon script frÃ¥n sökväg: '%s'." #: editor/editor_node.cpp #, fuzzy @@ -2770,7 +2825,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" @@ -2860,7 +2916,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Visible Navigation" -msgstr "" +msgstr "Synlig Navigation" #: editor/editor_node.cpp msgid "" @@ -2916,7 +2972,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Toggle Fullscreen" -msgstr "" +msgstr "Fullskärm" #: editor/editor_node.cpp #, fuzzy @@ -2980,15 +3036,15 @@ msgstr "Om" #: editor/editor_node.cpp msgid "Play the project." -msgstr "" +msgstr "Spela projektet." #: editor/editor_node.cpp msgid "Play" msgstr "Spela" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Pausa scenen" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3044,7 +3100,7 @@ msgstr "" #: editor/editor_node.cpp msgid "FileSystem" -msgstr "" +msgstr "FilSystem" #: editor/editor_node.cpp msgid "Inspector" @@ -3093,7 +3149,12 @@ msgstr "" #: editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "" +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" @@ -3105,7 +3166,7 @@ msgstr "Exportera Bibliotek" #: editor/editor_node.cpp msgid "Merge With Existing" -msgstr "" +msgstr "Sammanfoga Med Existerande" #: editor/editor_node.cpp msgid "Password:" @@ -3121,7 +3182,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Load Errors" -msgstr "" +msgstr "Ladda Felmeddelanden" #: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp msgid "Select" @@ -3129,11 +3190,11 @@ msgstr "Välj" #: editor/editor_node.cpp msgid "Open 2D Editor" -msgstr "" +msgstr "Öppna 2D Redigeraren" #: editor/editor_node.cpp msgid "Open 3D Editor" -msgstr "" +msgstr "Öppna 3D Redigeraren" #: editor/editor_node.cpp msgid "Open Script Editor" @@ -3151,6 +3212,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." @@ -3177,7 +3243,7 @@ msgstr "Redigera Polygon" #: editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "" +msgstr "Installerade Plugins:" #: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp msgid "Update" @@ -3223,7 +3289,7 @@ msgstr "" #: editor/editor_profiler.cpp msgid "Inclusive" -msgstr "" +msgstr "Inkluderande" #: editor/editor_profiler.cpp msgid "Self" @@ -3403,7 +3469,7 @@ msgstr "Bläddra" #: editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "" +msgstr "Scen Filsökväg:" #: editor/editor_sub_scene.cpp msgid "Import From Node:" @@ -3473,6 +3539,14 @@ msgid "Importing:" msgstr "Importerar:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3481,7 +3555,7 @@ msgstr "" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve." -msgstr "" +msgstr "Kan inte lösa." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3491,7 +3565,7 @@ msgstr "Kan inte ansluta." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "No response." -msgstr "" +msgstr "Inget svar." #: editor/export_template_manager.cpp msgid "Request Failed." @@ -3601,6 +3675,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 "" @@ -3685,6 +3764,11 @@ msgstr "Ny Ärvd Scen..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "Välj en Huvudscen" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "Öppna Scen" @@ -3772,7 +3856,7 @@ msgstr "Skapa Mapp" #: editor/filesystem_dock.cpp msgid "Re-Scan Filesystem" -msgstr "" +msgstr "Scanna Om Filsystemet" #: editor/filesystem_dock.cpp #, fuzzy @@ -3941,7 +4025,7 @@ msgstr "Grupper" #: editor/import/resource_importer_scene.cpp msgid "Import as Single Scene" -msgstr "" +msgstr "Importera som enstaka scen" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Animations" @@ -3953,15 +4037,15 @@ msgstr "Importera med Separata Material" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects" -msgstr "" +msgstr "Importera med Separata Objekt" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials" -msgstr "" +msgstr "Importera med Seperata Objekt+Material" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Animations" -msgstr "" +msgstr "Importera med Separata Objekt+Animationer" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials+Animations" @@ -3969,15 +4053,15 @@ msgstr "Importera med Separata Material+Animationer" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials+Animations" -msgstr "" +msgstr "Importera med Separata Objekt+Material+Animationer" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes" -msgstr "" +msgstr "Importera som Flera Scener" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes+Materials" -msgstr "" +msgstr "Importera som Flera Scener+Material" #: editor/import/resource_importer_scene.cpp #: editor/plugins/mesh_library_editor_plugin.cpp @@ -3991,7 +4075,7 @@ msgstr "Importerar Scen..." #: editor/import/resource_importer_scene.cpp msgid "Generating Lightmaps" -msgstr "" +msgstr "Genererar Lightmaps" #: editor/import/resource_importer_scene.cpp msgid "Generating for Mesh: " @@ -4011,7 +4095,7 @@ msgstr "" #: editor/import/resource_importer_scene.cpp msgid "Error running post-import script:" -msgstr "" +msgstr "Fel uppstod efter importering av skript:" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -4019,11 +4103,11 @@ msgstr "Sparar..." #: editor/import_dock.cpp msgid "Set as Default for '%s'" -msgstr "" +msgstr "Ange som Standard för '%s'" #: editor/import_dock.cpp msgid "Clear Default for '%s'" -msgstr "" +msgstr "Rensa Standarden för '%s'" #: editor/import_dock.cpp msgid " Files" @@ -4040,7 +4124,7 @@ msgstr "Ã…terställ Zoom" #: editor/import_dock.cpp msgid "Reimport" -msgstr "" +msgstr "Importera om" #: editor/import_dock.cpp msgid "Save scenes, re-import and restart" @@ -4105,7 +4189,7 @@ msgstr "Öppna i Hjälp" #: editor/inspector_dock.cpp msgid "Create a new resource in memory and edit it." -msgstr "" +msgstr "Skapa en ny resurs i minnet och ändra den." #: editor/inspector_dock.cpp msgid "Load an existing resource from disk and edit it." @@ -4139,7 +4223,7 @@ msgstr "Filtrera noder" #: editor/inspector_dock.cpp msgid "Changes may be lost!" -msgstr "" +msgstr "Ändringar kan gÃ¥ förlorade!" #: editor/multi_node_edit.cpp msgid "MultiNode Set" @@ -4468,6 +4552,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Animklipp:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Ljudklipp:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Functions" +msgstr "Funktioner" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4492,7 +4590,7 @@ msgstr "Redigerbara Barn" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" -msgstr "" +msgstr "SlÃ¥ pÃ¥/av Autoplay" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" @@ -4715,6 +4813,11 @@ msgstr "Flytta Nod(er)" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "ÖvergÃ¥ng" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "Lägg Till Översättning" @@ -4801,6 +4904,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" @@ -5062,6 +5170,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 "" @@ -5169,6 +5303,14 @@ 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 "" @@ -5177,6 +5319,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "Skala:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -5251,6 +5398,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 "" @@ -5264,6 +5489,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "Välj" @@ -5408,6 +5647,10 @@ 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 "" @@ -5550,7 +5793,7 @@ msgstr "Anim Infoga Nyckel" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5907,11 +6150,27 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Uppdatera frÃ¥n scen" + +#: 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 "" @@ -6561,6 +6820,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" @@ -6695,10 +6971,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 "" @@ -6794,11 +7066,6 @@ msgid "Source" msgstr "Källa:" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Signaler" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6827,6 +7094,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7137,7 +7409,7 @@ msgstr "Vy OvanifrÃ¥n." #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "Vy UnderifrÃ¥n" +msgstr "Vy UnderifrÃ¥n." #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom" @@ -7487,21 +7759,40 @@ msgstr "Skapa Ny" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Förhandsgranska" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Skapa Prenumeration" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Skapa Prenumeration" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Skapa Prenumeration" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Skapa Mapp" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Skapa Mapp" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "Sökvägen är tom" @@ -7584,6 +7875,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Misslyckades att ladda resurs." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7628,7 +7924,7 @@ msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" -msgstr "Loop" +msgstr "Slinga" #: editor/plugins/sprite_frames_editor_plugin.cpp #, fuzzy @@ -7872,6 +8168,7 @@ msgid "Data Type:" msgstr "Datatyp:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Ikon" @@ -7888,8 +8185,9 @@ msgid "Color" msgstr "Färg" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Konstant" +#, fuzzy +msgid "Theme File" +msgstr "Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8006,6 +8304,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" @@ -8025,6 +8336,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" @@ -8262,6 +8607,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Skapa Prenumeration" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Gör Patch" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Skapa Prenumeration" @@ -8552,7 +8907,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9147,9 +9502,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9214,6 +9570,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 "" @@ -9261,6 +9626,12 @@ msgid "Add..." msgstr "Lägg till..." #: 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 #, fuzzy msgid "Export Path" msgstr "Exportera Projekt" @@ -9310,6 +9681,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 "" @@ -9365,6 +9741,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 "" @@ -9635,6 +10020,10 @@ msgid "Projects" msgstr "Projekt" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Skanna" @@ -9719,18 +10108,6 @@ msgid "Device" msgstr "Enhet" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Skift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp #, fuzzy msgid "Press a Key..." msgstr "Tryck pÃ¥ en Knapp..." @@ -10779,9 +11156,8 @@ msgid "Profiler" msgstr "" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Network Profiler" -msgstr "Exportera Projekt" +msgstr "Nätverksprofilerare" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -11010,10 +11386,6 @@ msgid "GDNative" msgstr "GDNative" #: 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 "" @@ -11154,6 +11526,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Alla urval" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Rensa Urval" @@ -11299,6 +11676,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." @@ -11364,16 +11751,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" @@ -11423,10 +11800,6 @@ 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 "" @@ -11509,7 +11882,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11552,6 +11925,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:" @@ -11754,27 +12142,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 "" @@ -11828,11 +12199,21 @@ msgstr "" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Ogiltigt namn." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Ogiltigt namn." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "Ogiltigt namn." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "Projektnamn:" @@ -12352,7 +12733,7 @@ msgstr "" #: scene/gui/tree.cpp msgid "(Other)" -msgstr "" +msgstr "(Annat)" #: scene/main/scene_tree.cpp msgid "" @@ -12399,6 +12780,15 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "Pausa scenen" + +#~ msgid "Shift+" +#~ msgstr "Skift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + #, fuzzy #~ msgid "Add input +" #~ msgstr "Lägg till Signal" @@ -12531,10 +12921,6 @@ msgstr "" #~ msgstr "Uppdatera Alltid" #, fuzzy -#~ msgid "Raw Mode" -#~ msgstr "Raw-Läge" - -#, fuzzy #~ msgid "Path to Node:" #~ msgstr "Sökväg till Node:" @@ -12631,10 +13017,6 @@ msgstr "" #~ "Skapa och tilldela en?" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "Visa Filer" - -#, fuzzy #~ msgid "Save Theme As" #~ msgstr "Spara Tema Som" @@ -12655,10 +13037,6 @@ msgstr "" #~ msgstr "Publika Metoder:" #, fuzzy -#~ msgid "Property: " -#~ msgstr "Egenskaper" - -#, fuzzy #~ msgid "Toggle folder status as Favorite." #~ msgstr "Växla Favorit" @@ -12702,9 +13080,6 @@ msgstr "" #~ msgid "Rotate 270 degrees" #~ msgstr "Rotera 270 grader" -#~ msgid "Warning" -#~ msgstr "Varning" - #, fuzzy #~ msgid "Variable" #~ msgstr "Variabel" @@ -12833,10 +13208,6 @@ msgstr "" #~ msgstr "Ersätt Med" #, fuzzy -#~ msgid "Case Sensitive" -#~ msgstr "Skiftlägeskänsligt" - -#, fuzzy #~ msgid "Backwards" #~ msgstr "Baklänges" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index 08faf73931..570f4ff728 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -1,6 +1,6 @@ # Tamil translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # # Senthil Kumar K <logickumar@gmail.com>, 2017. @@ -26,6 +26,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -421,6 +425,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯" @@ -525,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 "" @@ -715,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 @@ -791,6 +804,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -963,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 "" @@ -1428,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 "" @@ -1669,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 "" @@ -1935,6 +1957,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1970,6 +2000,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2579,7 +2629,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 "" @@ -2788,7 +2839,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2891,6 +2942,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 +3002,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 "" @@ -3256,6 +3315,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3378,6 +3445,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 "" @@ -3454,6 +3525,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4169,6 +4244,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4402,6 +4491,11 @@ msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகà #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:" @@ -4483,6 +4577,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" @@ -4737,6 +4835,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 "" @@ -4840,6 +4962,14 @@ 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 "" @@ -4848,6 +4978,10 @@ 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 "" @@ -4917,6 +5051,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 "" @@ -4930,6 +5132,20 @@ 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 "" @@ -5068,6 +5284,10 @@ 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 "" @@ -5207,7 +5427,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5549,11 +5769,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6181,6 +6415,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 "" @@ -6307,10 +6558,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 "" @@ -6401,10 +6648,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6430,6 +6673,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7065,19 +7313,35 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7154,6 +7418,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7432,6 +7700,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7448,7 +7717,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7561,6 +7830,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 "" @@ -7577,6 +7858,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 "" @@ -7787,6 +8096,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -8055,7 +8372,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8644,9 +8961,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8710,6 +9028,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 "" @@ -8755,6 +9081,12 @@ 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 "" @@ -8803,6 +9135,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8854,6 +9190,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 "" @@ -9111,6 +9455,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9191,18 +9539,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10417,10 +10753,6 @@ 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 "" @@ -10559,6 +10891,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10702,6 +11039,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 "" @@ -10764,15 +11110,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 "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯" @@ -10822,10 +11159,6 @@ 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 "" @@ -10905,7 +11238,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10945,6 +11278,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 "" @@ -11141,27 +11487,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 "" @@ -11210,10 +11539,18 @@ 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 "" diff --git a/editor/translations/te.po b/editor/translations/te.po index 617809b62d..e7f6f52938 100644 --- a/editor/translations/te.po +++ b/editor/translations/te.po @@ -1,6 +1,6 @@ # Telugu translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # suresh p <suresh9247@gmail.com>, 2019. msgid "" @@ -22,6 +22,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -406,6 +410,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -507,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 "" @@ -694,6 +703,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 +783,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -941,7 +958,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 +1423,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 +1664,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 "" @@ -1912,6 +1934,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1947,6 +1977,26 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Property" +msgstr "" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2554,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 "" @@ -2762,7 +2813,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2865,6 +2916,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 +2976,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 "" @@ -3229,6 +3288,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3351,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 "" @@ -3427,6 +3498,10 @@ msgid "New Inherited Scene" msgstr "" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "" @@ -4136,6 +4211,18 @@ msgid "" 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 "" @@ -4366,6 +4453,10 @@ msgid "Move Node" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4445,6 +4536,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" @@ -4699,6 +4794,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 "" @@ -4802,6 +4921,14 @@ 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 "" @@ -4810,6 +4937,10 @@ 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 "" @@ -4878,6 +5009,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 "" @@ -4891,6 +5090,20 @@ 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 "" @@ -5025,6 +5238,10 @@ 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 "" @@ -5164,7 +5381,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5504,11 +5721,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6134,6 +6365,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 "" @@ -6260,10 +6508,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 "" @@ -6354,10 +6598,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6383,6 +6623,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7017,18 +7262,34 @@ msgid "Create Mesh2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "CollisionPolygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp +msgid "LightOccluder2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7105,6 +7366,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7378,6 +7643,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7394,7 +7660,7 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" +msgid "Theme File" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp @@ -7505,6 +7771,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 "" @@ -7521,6 +7799,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 "" @@ -7729,6 +8035,14 @@ msgid "Edit Tile Z Index" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Convex" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Make Concave" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "" @@ -7992,7 +8306,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8579,9 +8893,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8645,6 +8960,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 "" @@ -8690,6 +9013,12 @@ 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 "" @@ -8738,6 +9067,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8789,6 +9122,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 "" @@ -9046,6 +9387,10 @@ msgid "Projects" msgstr "" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9126,18 +9471,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10346,10 +10679,6 @@ 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 "" @@ -10486,6 +10815,10 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Paste Selects" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10628,6 +10961,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 "" @@ -10688,14 +11029,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 "" @@ -10744,10 +11077,6 @@ 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 "" @@ -10826,7 +11155,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -10866,6 +11195,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 "" @@ -11062,27 +11403,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 "" @@ -11131,10 +11455,18 @@ 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 "" diff --git a/editor/translations/th.po b/editor/translations/th.po index 2bd671a4f4..6de9e03612 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -1,6 +1,6 @@ # Thai translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # # Kaveeta Vivatchai <goodytong@gmail.com>, 2017. @@ -27,6 +27,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "ตัวà¹à¸›à¸£à¹ƒà¸™ convert() ผิดพลาด ใช้ค่าคงที่ TYPE_* เท่านั้น" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "" + +#: 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." @@ -449,6 +453,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "เพิ่มà¹à¸—ร็à¸à¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" @@ -560,8 +568,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 +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 @@ -839,6 +852,11 @@ msgstr "ตัวà¹à¸›à¸£à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•ิม:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "เลืà¸à¸à¹€à¸¡à¸—็à¸à¸”" + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "ตัวเลืà¸à¸à¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”" @@ -1025,7 +1043,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 +1526,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 +1797,11 @@ msgstr "ลบพื้นที่" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "จัดà¸à¸²à¸£à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "นำเข้าโปรเจà¸à¸•์à¹à¸¥à¹‰à¸§" @@ -2065,6 +2089,15 @@ msgid "Search Help" msgstr "ค้นหาในคู่มืà¸" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "ตรงตามà¸à¸±à¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸-ใหà¸à¹ˆ" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "à¹à¸ªà¸”งตัวช่วย" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "à¹à¸ªà¸”งปà¸à¸•ิ" @@ -2109,6 +2142,30 @@ msgstr "ตัวà¹à¸›à¸£" msgid "Class" msgstr "คลาส:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "รายชื่à¸à¹€à¸¡à¸—็à¸à¸”" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "สัà¸à¸à¸²à¸“" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "คงที่" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "คุณสมบัติ:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "คุณสมบัติ" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "คุณสมบัติ:" @@ -2754,7 +2811,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 "โปรเจà¸à¸•์" @@ -2981,8 +3039,8 @@ msgid "Play" msgstr "เล่น" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "หยุดชั่วคราว" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3091,6 +3149,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 +3210,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." @@ -3471,6 +3539,15 @@ msgid "Importing:" msgstr "นำเข้า:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "ผิดพลาดขณะสร้าง signature object" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3597,6 +3674,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 "จัดà¸à¸²à¸£à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸" @@ -3678,6 +3760,11 @@ msgstr "สืบทà¸à¸”ฉาà¸à¹ƒà¸«à¸¡à¹ˆ..." #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "ฉาà¸à¸«à¸¥à¸±à¸" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "เปิดไฟล์ฉาà¸" @@ -4468,6 +4555,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "คลิป" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "ตัวรับเสียง" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "ฟังà¸à¹Œà¸Šà¸±à¸™:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4713,6 +4815,11 @@ msgstr "โหมดเคลื่à¸à¸™à¸¢à¹‰à¸²à¸¢" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "ทรานสิชัน" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "เพิ่มà¸à¸²à¸£à¹à¸›à¸¥" @@ -4800,6 +4907,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" @@ -5062,6 +5174,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 "à¹à¸£à¸à¸ªà¸¸à¸”" @@ -5174,6 +5312,15 @@ msgid "Grid Step:" msgstr "ระยะห่างเส้น:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 ระดับ" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "à¸à¸‡à¸¨à¸²à¹€à¸£à¸´à¹ˆà¸¡à¸•้น:" @@ -5183,6 +5330,11 @@ msgstr "ช่วงà¸à¸‡à¸¨à¸²:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "à¸à¸±à¸•ราส่วน:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "เลื่à¸à¸™à¹€à¸ªà¹‰à¸™à¸™à¸³à¹à¸™à¸§à¸•ั้ง" @@ -5263,6 +5415,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 "ปรับหมุดเท่านั้น" @@ -5276,6 +5510,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "เครื่à¸à¸‡à¸¡à¸·à¸à¹€à¸¥à¸·à¸à¸" @@ -5427,6 +5675,11 @@ msgid "Use Rotation Snap" msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¸«à¸¡à¸¸à¸™" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¹€à¸„ลื่à¸à¸™à¸¢à¹‰à¸²à¸¢" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "จำà¸à¸±à¸”โดยใช้ตำà¹à¸«à¸™à¹ˆà¸‡à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™" @@ -5580,7 +5833,7 @@ msgstr "เพิ่มคีย์ (à¹à¸—ร็à¸à¸—ี่มีà¸à¸¢à¸¹à¹ˆà #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5939,11 +6192,27 @@ msgstr "สร้างเส้นขà¸à¸š Mesh" msgid "Outline Size:" msgstr "ขนาดเส้นรà¸à¸šà¸£à¸¹à¸›:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "ลบไà¸à¹€à¸—ม %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +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 "เพิ่มไà¸à¹€à¸—ม" @@ -6607,6 +6876,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 "นำเข้าธีม" @@ -6740,10 +7026,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 "คำสั่งต่à¸à¹„ป" @@ -6843,11 +7125,6 @@ msgstr "ต้นฉบับ:" #: editor/plugins/script_text_editor.cpp #, fuzzy -msgid "Signal" -msgstr "สัà¸à¸à¸²à¸“" - -#: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Target" msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่à¸à¸¢à¸¹à¹ˆ:" @@ -6876,6 +7153,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "สามารถวางรีซà¸à¸£à¹Œà¸ªà¸ˆà¸²à¸à¸£à¸°à¸šà¸šà¹„ฟล์ได้เท่านั้น" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Lookup Symbol" msgstr "เสนà¸à¹à¸™à¸°à¸„ำเต็ม" @@ -7551,21 +7833,40 @@ msgstr "สร้างเส้นขà¸à¸š Mesh" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸ าพตัวà¸à¸¢à¹ˆà¸²à¸‡ Mesh" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "สร้างรูปหลายเหลี่ยม" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "สร้างรูปทรงนำทาง" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "สร้างรูปทรงนำทาง" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "สร้างรูปหลายเหลี่ยมà¸à¸±à¹‰à¸™à¹à¸ªà¸‡" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "สร้างรูปหลายเหลี่ยมà¸à¸±à¹‰à¸™à¹à¸ªà¸‡" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸šà¸±à¸™à¸—ึà¸à¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²!" @@ -7653,6 +7954,11 @@ msgid "Add Frame" msgstr "เพิ่มเฟรม" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "โหลดรูปไม่ได้:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "ผิดพลาด: โหลดรีซà¸à¸£à¹Œà¸ªà¹€à¸Ÿà¸£à¸¡à¹„ม่ได้!" @@ -7949,6 +8255,7 @@ msgid "Data Type:" msgstr "ชนิดข้à¸à¸¡à¸¹à¸¥:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "รูปย่à¸" @@ -7965,8 +8272,9 @@ msgid "Color" msgstr "สี" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "คงที่" +#, fuzzy +msgid "Theme File" +msgstr "ธีม" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8087,6 +8395,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 "ไปชั้นบน" @@ -8106,6 +8428,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 "โหมดà¸à¸²à¸£à¸—ำงาน:" @@ -8351,6 +8708,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "ย้ายรูปหลายเหลี่ยม" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "ย้ายรูปหลายเหลี่ยม" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "สร้างรูปทรงนำทาง" @@ -8654,8 +9021,9 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "à¹à¸à¹‰à¹„ขเครื่à¸à¸‡à¸«à¸¡à¸²à¸¢à¸ªà¹€à¸à¸¥à¸²à¸£à¹Œ" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -9259,9 +9627,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9328,6 +9697,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' จาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸?" @@ -9376,6 +9754,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "ส่งà¸à¸à¸à¹‚ปรเจà¸à¸•์" @@ -9427,6 +9811,11 @@ msgid "Make Patch" msgstr "สร้างà¹à¸žà¸•ช์" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " ไฟล์" + +#: editor/project_export.cpp msgid "Features" msgstr "ฟีเจà¸à¸£à¹Œ" @@ -9481,6 +9870,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 "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸¥à¸•ฟà¸à¸£à¹Œà¸¡à¸™à¸µà¹‰:" @@ -9759,6 +10157,10 @@ msgid "Projects" msgstr "โปรเจà¸à¸•์" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "สà¹à¸à¸™" @@ -9846,18 +10248,6 @@ msgid "Device" msgstr "à¸à¸¸à¸›à¸à¸£à¸“์" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Control+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "à¸à¸”ปุ่ม..." @@ -11166,10 +11556,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "ตัวà¹à¸›à¸£ step เป็นศูนย์!" @@ -11309,6 +11695,11 @@ msgid "Cursor Clear Rotation" msgstr "เคà¸à¸£à¹Œà¹€à¸‹à¸à¸£à¹Œà¸¥à¸šà¸à¸²à¸£à¸«à¸¡à¸¸à¸™" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "ลบที่เลืà¸à¸" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "ลบที่เลืà¸à¸" @@ -11455,6 +11846,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 "ชื่à¸à¸œà¸´à¸”พลาด ต้à¸à¸‡à¹„ม่ใช้ชื่à¸à¹€à¸”ียวà¸à¸±à¸šà¸Šà¸™à¸´à¸”ตัวà¹à¸›à¸£" @@ -11520,16 +11921,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 "ลบจุด" @@ -11579,10 +11970,6 @@ msgid "Add Preload Node" msgstr "เพิ่มโหนด Preload" #: 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 "เพิ่มโหนดจาà¸à¸œà¸±à¸‡" @@ -11666,7 +12053,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11709,6 +12096,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 "ฟังà¸à¹Œà¸Šà¸±à¸™:" @@ -11911,28 +12313,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 "" @@ -11983,10 +12368,20 @@ msgstr "ใช้ภาพขณะเริ่มเà¸à¸¡à¸›à¸£à¸´à¸¢à¸²à¸¢" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "ชื่à¸à¸„ลาสไม่ถูà¸à¸•้à¸à¸‡" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "ชื่à¸à¹€à¸‰à¸žà¸²à¸°à¹„ม่ถูà¸à¸•้à¸à¸‡" #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package publisher display name." +msgstr "ชื่à¸à¹€à¸‰à¸žà¸²à¸°à¹„ม่ถูà¸à¸•้à¸à¸‡" + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "GUID ขà¸à¸‡à¹‚ปรà¹à¸à¸£à¸¡à¹„ม่ถูà¸à¸•้à¸à¸‡" @@ -12586,6 +12981,18 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "หยุดชั่วคราว" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Control+" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "จำà¸à¸±à¸”ด้วยเส้นตาราง" @@ -13061,9 +13468,6 @@ msgstr "" #~ msgid "Rotate 270 degrees" #~ msgstr "หมุน 270 à¸à¸‡à¸¨à¸²" -#~ msgid "Warning" -#~ msgstr "คำเตืà¸à¸™" - #~ msgid "Variable" #~ msgstr "ตัวà¹à¸›à¸£" @@ -13393,9 +13797,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "à¹à¸—นที่ด้วย" -#~ msgid "Case Sensitive" -#~ msgstr "ตรงตามà¸à¸±à¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸-ใหà¸à¹ˆ" - #~ msgid "Backwards" #~ msgstr "ย้à¸à¸™à¸à¸¥à¸±à¸š" @@ -13535,9 +13936,6 @@ msgstr "" #~ msgid "Re-Import Changed Resources" #~ msgstr "นำเข้ารีซà¸à¸£à¹Œà¸ªà¸—ี่à¹à¸à¹‰à¹„ขà¸à¸µà¸à¸„รั้ง" -#~ msgid "Loading Export Templates" -#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลดà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13827,9 +14225,6 @@ msgstr "" #~ msgid "Loading Image:" #~ msgstr "โหลดรูป:" -#~ msgid "Couldn't load image:" -#~ msgstr "โหลดรูปไม่ได้:" - #~ msgid "Converting Images" #~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸›à¸¥à¸‡à¸£à¸¹à¸›" @@ -14007,9 +14402,6 @@ msgstr "" #~ "correct?" #~ msgstr "ไม่สามารถà¸à¹ˆà¸²à¸™à¹„ฟล์ใบรับรà¸à¸‡à¹„ด้ ตำà¹à¸«à¸™à¹ˆà¸‡à¹„ฟล์à¹à¸¥à¸°à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸–ูà¸à¸•้à¸à¸‡à¸«à¸£à¸·à¸à¹„ม่?" -#~ msgid "Error creating the signature object." -#~ msgstr "ผิดพลาดขณะสร้าง signature object" - #~ msgid "Error creating the package signature." #~ msgstr "ผิดพลาดขณะสร้าง signature ขà¸à¸‡à¹à¸žà¸„เà¸à¸ˆ" @@ -14099,9 +14491,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 2673676cb8..7be506be25 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -1,6 +1,6 @@ # Turkish translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Aprın Çor Tigin <kabusturk38@gmail.com>, 2016-2017. # Aykut YILDIRIM <aykutyildirim@windowslive.com>, 2018. @@ -38,12 +38,15 @@ # Bera Koklu <bkoklu001@student.hampton.k12.va.us>, 2019. # Mehmet AKDEMİR <mamoo81@gmail.com>, 2019. # Oguz Ersen <oguzersen@protonmail.com>, 2019. +# isimsiz <isimsiz@mailinator.com>, 2019. +# Muhammet Mustafa Tozlu <m.mustafatozlu@gmail.com>, 2019. +# HALİL ATAÅž <halillatass@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-27 07:47+0000\n" -"Last-Translator: Oguz Ersen <oguzersen@protonmail.com>\n" +"PO-Revision-Date: 2019-11-20 14:07+0000\n" +"Last-Translator: HALİL ATAÅž <halillatass@gmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" "Language: tr\n" @@ -51,7 +54,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.1-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 @@ -61,6 +64,10 @@ msgstr "" "kullanın." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -450,6 +457,10 @@ msgid "Not possible to add a new track without a root" msgstr "Bir kök olmadan yeni bir iz eklemek mümkün deÄŸildir" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Bezier İz Ekle" @@ -530,11 +541,8 @@ msgid "Warning: Editing imported animation" msgstr "Uyarı: İçe aktarılan animasyonu düzenleme" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select an AnimationPlayer node to create and edit animations." -msgstr "" -"Sahne AÄŸacı'ndan animasyonları düzenleyebilmek için bir AnimationPlayer " -"seçin." +msgstr "Animasyonları düzenleyebilmek için Animasyon Oynatıcı düğümü seçin." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." @@ -564,8 +572,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" @@ -666,9 +675,8 @@ msgid "Scale Ratio:" msgstr "Ölçek Oranı:" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select Tracks to Copy" -msgstr "Kopyalanacak izleri seç:" +msgstr "Kopyalanacak izleri seç" #: editor/animation_track_editor.cpp editor/editor_log.cpp #: editor/editor_properties.cpp @@ -680,9 +688,8 @@ msgid "Copy" msgstr "Tıpkıla" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Select All/None" -msgstr "Hiçbir Åžey Seçilmedi" +msgstr "Tümünü Seç/Seçme" #: editor/animation_track_editor_plugins.cpp msgid "Add Audio Track Clip" @@ -753,6 +760,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 @@ -831,6 +842,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ÅŸ" @@ -1007,7 +1023,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" @@ -1479,7 +1495,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" @@ -1610,9 +1627,8 @@ msgid "Asset Library" msgstr "Varlık Kütüphanesi" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Scene Tree Editing" -msgstr "Sahne AÄŸacı (Düğümler):" +msgstr "Sahne AÄŸacı Düzenleme" #: editor/editor_feature_profile.cpp msgid "Import Dock" @@ -1729,6 +1745,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" @@ -1900,13 +1921,12 @@ msgid "ScanSources" msgstr "KaynaklarıTara" #: editor/editor_file_system.cpp -#, fuzzy msgid "" "There are multiple importers for different types pointing to file %s, import " "aborted" msgstr "" -"%s dosyasına iÅŸaret eden farklı tipler için birden fazla içe aktarım var, " -"içe aktarma iptal edildi" +"%s dosyasına iÅŸaret eden farklı türlerde içe aktarılabilir öge var, içe " +"aktarım iptal edildi" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" @@ -2005,6 +2025,15 @@ msgid "Search Help" msgstr "Yardım Ara" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "Büyük Küçük Harf Duyarlı" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Yardımcıları Göster" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Hepsini Görüntüle" @@ -2040,6 +2069,29 @@ msgstr "Üye Tipi" msgid "Class" msgstr "Sınıf" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Metotlar" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Sinyaller" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Sabit" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Özellik:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Tema Özellikleri" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Özellik:" @@ -2277,7 +2329,6 @@ msgstr "" "panelinden ayarlarını deÄŸiÅŸtirin ve yeniden içe aktarın." #: editor/editor_node.cpp -#, fuzzy 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" @@ -2285,9 +2336,8 @@ msgid "" "understand this workflow." msgstr "" "Bu sahne içe aktarılmış, yani yaptığınız deÄŸiÅŸiklikler saklanmayacak.\n" -"Örnekleme veya devretme yapmak, üzerinde deÄŸiÅŸiklik yapmaya izin " -"verecektir.\n" -"Lütfen, bu iÅŸ akışını daha iyi anlamak için dökümantasyondaki sahneleri içe " +"Örnekleme veya Aktarım yaparak deÄŸiÅŸiklik mümkün olacaktır.\n" +"Lütfen, bu iÅŸ akışını daha iyi anlamak için belgelerdeki, sahneleri içe " "aktarma kısmını okuyunuz." #: editor/editor_node.cpp @@ -2692,7 +2742,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" @@ -2717,9 +2768,8 @@ msgid "Export..." msgstr "Dışa Aktar..." #: editor/editor_node.cpp -#, fuzzy msgid "Install Android Build Template..." -msgstr "Android Yapı Åžablonunu Yükle ..." +msgstr "Android İnÅŸa Åžablonunu Yükle ..." #: editor/editor_node.cpp msgid "Open Project Data Folder" @@ -2920,8 +2970,8 @@ msgid "Play" msgstr "Oynat" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Sahneyi duraklat" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3011,22 +3061,29 @@ msgid "" "the \"Use Custom Build\" option should be enabled in the Android export " "preset." msgstr "" +"Bu, kaynak ÅŸablonlarını \"res://android/build\" yoluna yükleyerek, projenizi " +"isteÄŸe dayalı Android inÅŸasına ayarlayacaktır." #: 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 yapı ÅŸablonu zaten yüklü ve üzerine yazılmayacak.\n" -"Bu iÅŸlemi tekrar denemeden önce \"build\" dizinini el ile kaldırın." +"Bu projede Android yapı ÅŸablonu zaten yüklü ve üzerine yazılmayacak.\n" +"Bu iÅŸlemi tekrar denemeden önce \"res://android/build\" dizinini el ile " +"kaldırın." #: editor/editor_node.cpp 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" @@ -3083,6 +3140,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ı." @@ -3193,7 +3255,6 @@ msgid "Assign..." msgstr "Ata..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" msgstr "Geçersiz Yol" @@ -3235,7 +3296,6 @@ msgid "New Script" msgstr "Yeni Betik" #: editor/editor_properties.cpp editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" msgstr "Betik Aç" @@ -3343,9 +3403,8 @@ msgid "Import From Node:" msgstr "Düğümden İçe Aktar:" #: editor/export_template_manager.cpp -#, fuzzy msgid "Redownload" -msgstr "Yeniden Yükle" +msgstr "Yeniden İndir" #: editor/export_template_manager.cpp msgid "Uninstall" @@ -3407,6 +3466,15 @@ msgid "Importing:" msgstr "İçe Aktarım:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "İmza nesnesini oluÅŸturmada sorun." + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3451,13 +3519,12 @@ msgid "Cannot remove temporary file:" msgstr "Geçici dosya kaldırılamıyor:" #: editor/export_template_manager.cpp -#, fuzzy msgid "" "Templates installation failed.\n" "The problematic templates archives can be found at '%s'." msgstr "" -"Åžablon yüklemesi baÅŸarısız oldu. Sorunlu ÅŸablon arÅŸivi ÅŸurada bulunabilir: " -"'%s'." +"Åžablon yüklemesi baÅŸarısız oldu.\n" +"Sorunlu ÅŸablon arÅŸivi ÅŸurada bulunabilir: '%s'." #: editor/export_template_manager.cpp msgid "Error requesting URL:" @@ -3534,6 +3601,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" @@ -3580,9 +3652,8 @@ msgid "No name provided." msgstr "SaÄŸlanan isim yok." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Provided name contains invalid characters." -msgstr "SaÄŸlanan isim geçersiz karakterler içeriyor" +msgstr "SaÄŸlanan isim geçersiz karakterler içeriyor." #: editor/filesystem_dock.cpp msgid "A file or folder with this name already exists." @@ -3613,6 +3684,11 @@ msgid "New Inherited Scene" msgstr "Yeni Miras Alınmış Sahne" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Set As Main Scene" +msgstr "Ana Sahne" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Sahneleri Aç" @@ -3621,12 +3697,10 @@ msgid "Instance" msgstr "Örnek" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to Favorites" msgstr "Favorilere ekle" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from Favorites" msgstr "Favorilerden kaldır" @@ -3651,9 +3725,8 @@ msgid "Move To..." msgstr "Åžuraya Taşı..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "New Scene..." -msgstr "Yeni Sahne" +msgstr "Yeni Sahne..." #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "New Script..." @@ -3693,7 +3766,6 @@ msgid "Re-Scan Filesystem" msgstr "Dosya Düzenini Yeniden Tara" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle Split Mode" msgstr "Bölme modunu Aç / Kapat" @@ -3746,13 +3818,12 @@ msgid "Filters:" msgstr "Süzgeçler:" #: editor/find_in_files.cpp -#, fuzzy msgid "" "Include the files with the following extensions. Add or remove them in " "ProjectSettings." msgstr "" -"Bu uzantıdaki dosyaları dahil et. Uzantıları ProjeAyarlarından ekle ya da " -"sil." +"Åžu uzantılardaki dosyaları dahil et. Proje Ayarlarından ekleme ya da silme " +"yapılabilir." #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3804,9 +3875,8 @@ msgid "Invalid group name." msgstr "Geçersiz grup adı." #: editor/groups_editor.cpp -#, fuzzy msgid "Rename Group" -msgstr "Grupları Düzenle" +msgstr "Grubu Yeniden Adlandır" #: editor/groups_editor.cpp msgid "Delete Group" @@ -3817,7 +3887,6 @@ msgid "Groups" msgstr "Gruplar" #: editor/groups_editor.cpp -#, fuzzy msgid "Nodes Not in Group" msgstr "Düğümler Grupta DeÄŸil" @@ -4048,9 +4117,8 @@ msgid "MultiNode Set" msgstr "MultiNode Kur" #: editor/node_dock.cpp -#, fuzzy msgid "Select a single node to edit its signals and groups." -msgstr "Sinyalleri ve Grupları düzenlemek için bir Düğüm seçin." +msgstr "Sinyallerini ve Gruplarını düzenlemek için bir Düğüm seçin." #: editor/plugin_config_dialog.cpp msgid "Edit a Plugin" @@ -4167,7 +4235,6 @@ msgid "Add Animation Point" msgstr "Animasyon Noktası Ekle" #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Remove BlendSpace1D Point" msgstr "BlendSpace1D Noktasını Kaldır" @@ -4221,9 +4288,8 @@ msgid "Open Animation Node" msgstr "Animasyon Düğümünü Aç" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Triangle already exists." -msgstr "Üçgen zaten var" +msgstr "Üçgen zaten var." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Add Triangle" @@ -4234,7 +4300,6 @@ msgid "Change BlendSpace2D Limits" msgstr "BlendSpace2D Sınırlarını DeÄŸiÅŸtir" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Change BlendSpace2D Labels" msgstr "BlendSpace2D Etiketlerini DeÄŸiÅŸtir" @@ -4286,18 +4351,16 @@ msgstr "Süzgeçleri Düzenle" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Output node can't be added to the blend tree." -msgstr "" +msgstr "Çıktı düğümü iÅŸleme aÄŸacına eklenemiyor." #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Add Node to BlendTree" -msgstr "AÄŸaçtan Düğüm(ler) Ekle" +msgstr "Düğümü İşleme düğümüne ekle" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Node Moved" -msgstr "Biçimi Taşı" +msgstr "Düğüm Taşındı" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Unable to connect, port may be in use or connection may be invalid." @@ -4342,7 +4405,7 @@ msgstr "Animasyon oynatıcısı atanmadı, parça isimleri alınamıyor." #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Player path set is invalid, so unable to retrieve track names." -msgstr "" +msgstr "Oyuncu yolu geçersiz, haliyle iz isimleri alınamadı." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp @@ -4350,6 +4413,23 @@ msgid "" "Animation player has no valid root node path, so unable to retrieve track " "names." msgstr "" +"Animasyon oynatıcı geçerli bir kök dizine sahip deÄŸil, haliyle iz isimleri " +"alınamadı." + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Animasyon Klipleri:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Ses Parçası:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "İşlevler:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp @@ -4426,14 +4506,12 @@ msgid "Duplicate Animation" msgstr "Animasyonu ÇoÄŸalt" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation to copy!" -msgstr "HATA: Kopyalanacak animasyon yok!" +msgstr "Kopyalanacak animasyon yok!" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation resource on clipboard!" -msgstr "HATA: panoda animasyon kaynağı yok!" +msgstr "Panoda animasyon kaynağı yok!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" @@ -4444,9 +4522,8 @@ msgid "Paste Animation" msgstr "Animasyonu Yapıştır" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation to edit!" -msgstr "HATA: Düzenlenecek animasyon yok!" +msgstr "Düzenlenecek animasyon yok!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" @@ -4486,14 +4563,12 @@ msgid "Animation" msgstr "Animasyon" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Edit Transitions..." -msgstr "GeçiÅŸler" +msgstr "GeçiÅŸleri Düzenle..." #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Open in Inspector" -msgstr "Düzenleyicide Aç" +msgstr "Gözetmen Bölümünde Aç" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -4508,9 +4583,8 @@ msgid "Enable Onion Skinning" msgstr "Araları Doldurmayı EtkinleÅŸtir" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Onion Skinning Options" -msgstr "Araları Doldurma" +msgstr "Araları Doldurma Seçenekleri" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" @@ -4553,9 +4627,8 @@ msgid "Include Gizmos (3D)" msgstr "Gizmoları Dahil Et (3B)" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Pin AnimationPlayer" -msgstr "Animasyonu Yapıştır" +msgstr "Animasyon Oynatıcıyı Sabitle" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" @@ -4585,14 +4658,17 @@ msgid "Cross-Animation Blend Times" msgstr "Çapraz-Animasyon Karışma Süreleri" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Move Node" -msgstr "Biçimi Taşı" +msgstr "Düğümü Taşı" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "GeçiÅŸ: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" -msgstr "Çeviri Ekle" +msgstr "GeçiÅŸ Ekle" #: editor/plugins/animation_state_machine_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -4600,9 +4676,8 @@ msgid "Add Node" msgstr "Düğüm Ekle" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "End" -msgstr "Son(lar)" +msgstr "BitiÅŸ" #: editor/plugins/animation_state_machine_editor.cpp msgid "Immediate" @@ -4622,22 +4697,19 @@ msgstr "Seyahat" #: editor/plugins/animation_state_machine_editor.cpp msgid "Start and end nodes are needed for a sub-transition." -msgstr "" +msgstr "Alt geçiÅŸ için baÅŸlangıç ve bitiÅŸ düğümleri gerekli." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "No playback resource set at path: %s." -msgstr "Kaynak yolunda deÄŸil." +msgstr "%s: adresinde arka plan oynatma kaynağı ayarlanmadı." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Node Removed" -msgstr "Silinen:" +msgstr "Düğüm Silindi" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition Removed" -msgstr "GeçiÅŸ Düğümü" +msgstr "GeçiÅŸ Silindi" #: editor/plugins/animation_state_machine_editor.cpp msgid "Set Start Node (Autoplay)" @@ -4654,32 +4726,37 @@ msgstr "" "Yeni baÄŸlantılar için Shift+LMB." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Create new nodes." -msgstr "Yeni %s oluÅŸtur" +msgstr "Yeni düğümler oluÅŸtur." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Connect nodes." -msgstr "Düğümleri BaÄŸla" +msgstr "Düğümleri BaÄŸla." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Remove selected node or transition." -msgstr "Seçilen izleri sil." +msgstr "Seçilen düğüm ya da geçiÅŸi sil." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." msgstr "" +"Bu animasyonu baÅŸlangıçta otomatik oynat ayarını, yeniden baÅŸlat ya da baÅŸa " +"sar ÅŸeklinde ayarla." #: editor/plugins/animation_state_machine_editor.cpp msgid "Set the end animation. This is useful for sub-transitions." msgstr "" +"Animasyon bitiÅŸini ayarla. Bu alt-geçiÅŸler oluÅŸturmak için kullanışlı " +"olacaktır." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "GeçiÅŸ" +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 @@ -4851,14 +4928,12 @@ msgid "Request failed, return code:" msgstr "İstem baÅŸarısız, dönen kod:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed." -msgstr "İstek BaÅŸarısız Oldu." +msgstr "İstek baÅŸarısız." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Cannot save response to:" -msgstr "Tema dosyaya kaydedilemiyor:" +msgstr "Yanıt dosyaya kaydedilemiyor:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Write error." @@ -4869,19 +4944,16 @@ msgid "Request failed, too many redirects" msgstr "İstem BaÅŸarısız, çok fazla yönlendirme" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Redirect loop." -msgstr "Yönlendirme Döngüsü." +msgstr "Döngüyü yönlendir." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request failed, timeout" -msgstr "İstem baÅŸarısız, dönen kod:" +msgstr "İstem baÅŸarısız, zaman aşımı" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Timeout." -msgstr "Zaman" +msgstr "Zaman aşımı." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." @@ -4904,14 +4976,12 @@ msgid "Asset Download Error:" msgstr "Nesne İndirme Hatası:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading (%s / %s)..." -msgstr "İndiriliyor" +msgstr "İndiriliyor (%s / %s)..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading..." -msgstr "İndiriliyor" +msgstr "İndiriliyor..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving..." @@ -4926,9 +4996,8 @@ msgid "Idle" msgstr "BoÅŸta" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Install..." -msgstr "Kur" +msgstr "Kur..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Retry" @@ -4943,14 +5012,38 @@ 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 "First" -msgstr "ilk" +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" + +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Previous" -msgstr "Önceki sekme" +msgstr "Önceki" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Next" @@ -4966,17 +5059,15 @@ msgstr "Hepsi" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "\"%s\" için sonuç yok." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Import..." -msgstr "Yeniden İçe Aktar..." +msgstr "İçe Aktar..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Plugins..." -msgstr "Eklentiler" +msgstr "Eklentiler..." #: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp msgid "Sort:" @@ -4992,9 +5083,8 @@ msgid "Site:" msgstr "Yer:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support" -msgstr "Destek..." +msgstr "Destek" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Official" @@ -5005,7 +5095,6 @@ msgid "Testing" msgstr "Deneme" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Loading..." msgstr "Yükle..." @@ -5059,6 +5148,15 @@ msgid "Grid Step:" msgstr "Izgara Adımı:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 kademe" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "Dönme Kayması:" @@ -5068,84 +5166,162 @@ msgstr "Dönme Adımı:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "Ölçekle:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "Dikey kılavuzu taşı" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Vertical Guide" -msgstr "Yeni dikey kılavuz oluÅŸtur" +msgstr "Dikey Kılavuz OluÅŸtur" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Vertical Guide" msgstr "Dikey kılavuzu kaldır" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move Horizontal Guide" msgstr "Yatay kılavuzu taşı" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Horizontal Guide" msgstr "Yeni yatay kılavuz oluÅŸtur" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove Horizontal Guide" msgstr "Yatay kılavuzu kaldır" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Horizontal and Vertical Guides" msgstr "Yeni yatay ve dikey kılavuzlar oluÅŸtur" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move pivot" -msgstr "Ekseni Taşı" +msgstr "Merkezi Taşı" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem" -msgstr "CanvasItem Düzenle" +msgstr "CanvasItem Döndür" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move anchor" -msgstr "Eylemi Taşı" +msgstr "Çapayı Taşı" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Resize CanvasItem" -msgstr "CanvasItem Düzenle" +msgstr "CanvasItem Yeniden Boyutlandır" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "CanvasItem Düzenle" +msgstr "CanvasItem Esnet" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem" -msgstr "CanvasItem Düzenle" +msgstr "CanvasItem Taşı" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "Children of containers have their anchors and margins values overridden by " "their parent." msgstr "" +"Taşıyıcıların çocukları, ebeveyn tarafından deÄŸiÅŸtirilen kendi çapa ve kenar " +"boÅŸlukları deÄŸerlerine sahip." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Presets for the anchors and margins values of a Control node." -msgstr "" +msgstr "Denetim düğümü için çapa ve kenar boÅŸluk deÄŸerleri Ön tanımlıları." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "When active, moving Control nodes changes their anchors instead of their " "margins." msgstr "" +"Etkin olduÄŸunda, Denetim düğümünü taşımak kenar boÅŸluklarını deÄŸil çapa " +"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" @@ -5161,46 +5337,53 @@ msgstr "Çapaları DeÄŸiÅŸtir" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy +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 "Seçim Aracı" +msgstr "Seçimi Kilitle" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Unlock Selected" -msgstr "Seçilenleri Sil" +msgstr "Seçim Kilidini Aç" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Group Selected" -msgstr "Seçimi Kaldır" +msgstr "Seçilenleri Grupla" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Ungroup Selected" -msgstr "Seçimi Kaldır" +msgstr "Seçilen Grubu Dağıt" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" msgstr "DuruÅŸu Yapıştır" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Guides" -msgstr "DuruÅŸu Temizle" +msgstr "Kılavuzları Temizle" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create Custom Bone(s) from Node(s)" -msgstr "Örüntüden Emisyon Noktaları OluÅŸtur" +msgstr "Düğüm[ler]den istenilen biçimde Kemik[ler] oluÅŸtur" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Bones" -msgstr "DuruÅŸu Temizle" +msgstr "Kemikleri Temizle" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" @@ -5215,11 +5398,12 @@ msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." msgstr "" +"Uyarı: Taşıyıcının alt ögeleri, konum ve büyüklük deÄŸerlerini üst ögeden " +"alırlar." #: 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 -#, fuzzy msgid "Zoom Reset" msgstr "YakınlaÅŸmayı Sıfırla" @@ -5258,9 +5442,8 @@ msgstr "Döndürme Biçimi" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "Ölçek Biçimi (R)" +msgstr "Esnetme Åžekli" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5280,40 +5463,39 @@ msgid "Pan Mode" msgstr "Kaydırma Biçimi" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Ruler Mode" -msgstr "Çalışma Kipi:" +msgstr "Cetvel Åžekli" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Yapılmayı aç/kapat" +msgstr "Akıllı Hizalama aç/kapat." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "Yapışma Kullan" +msgstr "Akıllı Hizalama Kullan" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Yapılmayı aç/kapat" +msgstr "Izgara hizalama aç/kapat." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "Izgara Yapışması" +msgstr "Izgara Hizalama" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snapping Options" -msgstr "Yapışma ayarları" +msgstr "Hizalama Ayarları" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" msgstr "Döndürme Yapışması Kullan" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "Akıllı Hizalama Kullan" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "Göreceli Yapış" @@ -5322,9 +5504,8 @@ msgid "Use Pixel Snap" msgstr "Piksel Yapışması Kullan" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Smart Snapping" -msgstr "Akıllı yapışma" +msgstr "Akıllı Hizalama" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5332,34 +5513,28 @@ msgid "Configure Snap..." msgstr "Yapışmayı Yapılandır..." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Parent" -msgstr "Ebeveyne yapıştır" +msgstr "Üst ögeye Hizala" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Anchor" -msgstr "Düğüm çapasına yapıştır" +msgstr "Düğüm Çapasına hizala" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Sides" -msgstr "Düğüm kenalarına yapış" +msgstr "Düğüm Kenarlarına Hizala" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Node Center" -msgstr "Düğüm çapasına yapıştır" +msgstr "Düğüm Merkezine hizala" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Other Nodes" -msgstr "DiÄŸer düğümlere yapıştır" +msgstr "DiÄŸer düğümlere hizala" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to Guides" -msgstr "Kılavuzlara yapış" +msgstr "Kılavuz çizgilere Hizala" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5382,9 +5557,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "Nesnenin çocuÄŸunun seçilebilme yeteneÄŸini geri kazandırır." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "İskelet..." +msgstr "İskelet Ayarları" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -5392,12 +5566,11 @@ msgstr "Kemikleri Göster" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Custom Bone(s) from Node(s)" -msgstr "" +msgstr "Düğüm[ler]den istenilen ÅŸekilde kemik[ler] yarat" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Custom Bones" -msgstr "Kemikleri Temizle" +msgstr "İsteÄŸe baÄŸlı kemikleri temizle" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5405,9 +5578,8 @@ msgid "View" msgstr "Görüş" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Izgarayı Göster" +msgstr "Daima Izgarayı Göster" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5431,7 +5603,7 @@ msgstr "Görüntükapısını Göster" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "" +msgstr "Gruplama ve Kilitleme ikonlarını Göster" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -5442,39 +5614,41 @@ msgid "Frame Selection" msgstr "Kafes Seçimi" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Preview Canvas Scale" -msgstr "Atlası Önizle" +msgstr "Tuval Esneme Önizlemesi" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Translation mask for inserting keys." -msgstr "" +msgstr "Anahtar Ekleme Çevirim Maskesi." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation mask for inserting keys." -msgstr "" +msgstr "Anahtar Ekleme Döndürme Maskesi." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale mask for inserting keys." -msgstr "" +msgstr "Anahtar Ekleme Esnetme Maskesi." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Insert keys (based on mask)." -msgstr "Anahtar Gir (Var Olan İzler)" +msgstr "Anahtar Gir (maskeye dayalı olarak)." #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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 "" +"Anahtarları otomatik olarak yerleÅŸtir eÄŸer nesne yer deÄŸiÅŸtirdiyse, döndüyse " +"ya da esnetildiyse (maskeye göre).\n" +"Anahtarlar yalnızca mevcut izlere eklenir, yeni izler oluÅŸturulmayacak.\n" +"İlkinde anahtarlar elle girilmeli." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Auto Insert Key" -msgstr "Animasyon Anahtar Gir" +msgstr "Otomatik Anahtar Gir" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -5497,9 +5671,8 @@ msgid "Divide grid step by 2" msgstr "Izgara basamağını 2'ye böl" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Pan View" -msgstr "Arkadan Görünüm" +msgstr "Görünümü Sürükle" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" @@ -5524,7 +5697,6 @@ msgid "Error instancing scene from %s" msgstr "Åžundan: %s sahne örnekleme hatası" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Change Default Type" msgstr "Varsayılan tipi deÄŸiÅŸtir" @@ -5537,9 +5709,8 @@ msgstr "" "Sürükle & bırak + Alt: Düğüm türünü deÄŸiÅŸtir" #: editor/plugins/collision_polygon_editor_plugin.cpp -#, fuzzy msgid "Create Polygon3D" -msgstr "Çoklu OluÅŸturun" +msgstr "Polygon3D oluÅŸtur" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Edit Poly" @@ -5562,9 +5733,8 @@ msgstr "Yayma Maskesini Yükle" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Restart" -msgstr "Åžimdi Yeniden BaÅŸlat" +msgstr "Yeniden BaÅŸlat" #: editor/plugins/cpu_particles_2d_editor_plugin.cpp #: editor/plugins/particles_2d_editor_plugin.cpp @@ -5598,9 +5768,8 @@ msgid "Emission Colors" msgstr "Emisyon Renkleri" #: editor/plugins/cpu_particles_editor_plugin.cpp -#, fuzzy msgid "CPUParticles" -msgstr "Parçacıklar" +msgstr "CPUParçacıklar" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -5613,14 +5782,12 @@ msgid "Create Emission Points From Node" msgstr "Düğümden Emisyon Noktaları OluÅŸtur" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Flat 0" -msgstr "Düz0" +msgstr "Sade 0" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Flat 1" -msgstr "Düz1" +msgstr "Sade 1" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease In" @@ -5647,27 +5814,22 @@ msgid "Load Curve Preset" msgstr "EÄŸri Önayarı Yükle" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Add Point" msgstr "Nokta Ekle" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Remove Point" msgstr "Noktayı kaldır" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Left Linear" -msgstr "Sol doÄŸrusal" +msgstr "Sol DoÄŸrusal" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right Linear" -msgstr "SaÄŸ doÄŸrusal" +msgstr "SaÄŸ DoÄŸrusal" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Load Preset" msgstr "Önayar yükle" @@ -5684,9 +5846,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Tanjantları tek tek düzenlemek için Shift'e basılı tut" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "SaÄŸ tıkla: Nokta Sil" +msgstr "Nokta eklemek için saÄŸ tıkla" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5694,7 +5855,7 @@ msgstr "GI Prob PiÅŸir" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" -msgstr "" +msgstr "Renk GeçiÅŸi Düzenlendi" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" @@ -5729,18 +5890,16 @@ msgid "This doesn't work on scene root!" msgstr "Bu, sahne kökünde çalışmaz!" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Trimesh Static Shape" msgstr "Üçlü Örüntü Yüzeyi OluÅŸtur" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Failed creating shapes!" -msgstr "" +msgstr "Åžekil oluÅŸturma baÅŸarısız!" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Convex Shape(s)" -msgstr "Dışbükey Åžekil OluÅŸtur" +msgstr "Dışbükey Åžekil[ler] OluÅŸtur" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" @@ -5796,9 +5955,8 @@ msgid "Create Trimesh Collision Sibling" msgstr "Üçlü Örüntü Çarpışma KardeÅŸi OluÅŸtur" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "Create Convex Collision Sibling(s)" -msgstr "Dışbükey Çarpışma KardeÅŸi OluÅŸtur" +msgstr "Dışbükey Çarpışma KomÅŸusu OluÅŸtur" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh..." @@ -5824,11 +5982,27 @@ msgstr "Anahat Örüntüsü OluÅŸtur" msgid "Outline Size:" msgstr "Kontur Boyutu:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "%d öğe kaldırılsın mı?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Sahneden Güncelle" + +#: 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" @@ -5944,14 +6118,12 @@ msgstr "Yönlendirici Çokgeni OluÅŸtur" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles" -msgstr "Büyük Harfe Dönüştür" +msgstr "CPUParçacıklar 'a dönüştür" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" -msgstr "Görünebilirlik Dikdörtgeni Üret" +msgstr "Görünebilirlik Dikdörtgeni Üretiliyor" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generate Visibility Rect" @@ -5968,26 +6140,23 @@ msgstr "Nesil Süresi (sn):" #: editor/plugins/particles_editor_plugin.cpp msgid "The geometry's faces don't contain any area." -msgstr "" +msgstr "Geometrik ÅŸeklin yüzeyleri herhangi bir alana sahip deÄŸiller." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "The geometry doesn't contain any faces." -msgstr "Düğüm uzambilgisi (yüzler) içermiyor." +msgstr "Geometrik ÅŸekilde hiç yüzey yok." #: editor/plugins/particles_editor_plugin.cpp msgid "\"%s\" doesn't inherit from Spatial." -msgstr "" +msgstr "\"%s\" Uzamsal ÅŸekilden türetilmemiÅŸ." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "\"%s\" doesn't contain geometry." -msgstr "Düğüm uzambilgisi içermiyor." +msgstr "\"%s\" herhangi bir geometriye sahip deÄŸil." #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "\"%s\" doesn't contain face geometry." -msgstr "Düğüm uzambilgisi içermiyor." +msgstr "\"%s\" yüzey geometrisine sahip deÄŸil." #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" @@ -6047,9 +6216,8 @@ msgid "Add Point to Curve" msgstr "Noktayı EÄŸriye Ekle" #: editor/plugins/path_2d_editor_plugin.cpp -#, fuzzy msgid "Split Curve" -msgstr "EÄŸriyi Kapat" +msgstr "EÄŸriyi Böl" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move Point in Curve" @@ -6079,9 +6247,8 @@ msgid "Click: Add Point" msgstr "Tıkla: Nokta Ekle" #: editor/plugins/path_2d_editor_plugin.cpp -#, fuzzy msgid "Left Click: Split Segment (in curve)" -msgstr "Parçayı Ayır (eÄŸriye göre)" +msgstr "Sol Tıkla: Parçayı Böl (eÄŸride)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -6116,12 +6283,12 @@ msgstr "Seçenekler" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Mirror Handle Angles" -msgstr "" +msgstr "Tutucu Açılarını Yansıt" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Mirror Handle Lengths" -msgstr "" +msgstr "Tutucu Uzunluklarını Yansıt" #: editor/plugins/path_editor_plugin.cpp msgid "Curve Point #" @@ -6160,25 +6327,25 @@ msgid "Split Segment (in curve)" msgstr "Parçayı Ayır (eÄŸriye göre)" #: editor/plugins/physical_bone_plugin.cpp -#, fuzzy msgid "Move Joint" -msgstr "Noktayı Taşı" +msgstr "KesiÅŸimi Taşı" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "The skeleton property of the Polygon2D does not point to a Skeleton2D node" -msgstr "" +msgstr "Polygon2D'nin iskelet niteliÄŸi Skeleton2D düğümü deÄŸil" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Sync Bones" -msgstr "Kemikleri Göster" +msgstr "Kemikleri EÅŸleÅŸtir" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "No texture in this polygon.\n" "Set a texture to be able to edit UV." msgstr "" +"Bu çokgende doku yok.\n" +"UV düzenleyebilmek için doku ekleyin." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" @@ -6189,53 +6356,48 @@ msgid "" "Polygon 2D has internal vertices, so it can no longer be edited in the " "viewport." msgstr "" +"Polygon2D dahili köşelere sahip, haliyle artık görünüm bölümünde " +"düzenlenemez." #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Polygon & UV" -msgstr "Çoklu OluÅŸturun" +msgstr "Çokgen & UV OluÅŸtur" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Yeni yatay kılavuz oluÅŸtur" +msgstr "Dahili Köşe OluÅŸtur" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "GiriÅŸ-Kontrol Noktasını Kaldır" +msgstr "Dahili Köşe Kaldır" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "Geçersiz çokgen (en az 3 köşeye gerek var)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Çokluyu Düzenleyin" +msgstr "İsteÄŸe baÄŸlı Çokgen Ekle" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Çokluyu ve Noktayı Kaldır" +msgstr "İsteÄŸe baÄŸlı Çokgen Kaldır" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" msgstr "UV Haritasını Dönüştür" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Transform Polygon" -msgstr "Dönüştürme Türü" +msgstr "Çokgeni Dönüştür" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint Bone Weights" -msgstr "" +msgstr "Kemik Ağırlık Boyama" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Open Polygon 2D UV editor." -msgstr "Çokgen 2B UV Düzenleyicisi" +msgstr "Çokgen 2D UV Düzenleyicisini aç." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" @@ -6243,27 +6405,23 @@ msgstr "Çokgen 2B UV Düzenleyicisi" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UV" -msgstr "" +msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Noktayı Taşı" +msgstr "Noktalar" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "Çokgen->UV" +msgstr "Çokgenler" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Bones" -msgstr "Kemik Yap" +msgstr "Kemikler" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Move Points" -msgstr "Noktayı Taşı" +msgstr "Noktaları Taşı" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -6291,25 +6449,27 @@ msgstr "Çokgeni Ölçekle" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." -msgstr "" +msgstr "İsteÄŸe baÄŸlı çokgen oluÅŸtur. İsteÄŸe baÄŸlı çokgen görüntü iÅŸleme." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"İsteÄŸe baÄŸlı çokgen kaldır. EÄŸer hiç çokgen kalmazsa, çokgen görüntü iÅŸleme " +"kapanır." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." -msgstr "" +msgstr "Belirtilen yoÄŸunlukla ağırlık boya." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Unpaint weights with specified intensity." -msgstr "" +msgstr "Belirtilen yoÄŸunlukla ağırlık boya temizle." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Radius:" -msgstr "" +msgstr "Yarıçap:" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon->UV" @@ -6324,9 +6484,8 @@ msgid "Clear UV" msgstr "UV yi Temizle" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Settings" -msgstr "IzgaraHaritası Ayarları" +msgstr "Izgara Ayarları" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Snap" @@ -6345,34 +6504,28 @@ msgid "Show Grid" msgstr "Izgarayı Göster" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Configure Grid:" -msgstr "Yapışmayı Yapılandır" +msgstr "Izgarayı Yapılandır:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Offset X:" -msgstr "Izgarayı Kaydır:" +msgstr "Izgara Çıkıntı X:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Offset Y:" -msgstr "Izgarayı Kaydır:" +msgstr "Izgara Çıkıntı Y:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Step X:" -msgstr "Izgara Adımı:" +msgstr "Izgara Adımı X:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Step Y:" -msgstr "Izgara Adımı:" +msgstr "Izgara Adımı Y:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Sync Bones to Polygon" -msgstr "Çokgeni Ölçekle" +msgstr "Kemikleri Çokgene EÅŸleÅŸtir" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" @@ -6426,12 +6579,11 @@ msgstr "KaynakÖnyükleyici" #: editor/plugins/root_motion_editor_plugin.cpp msgid "AnimationTree has no path set to an AnimationPlayer" -msgstr "" +msgstr "Animasyon aÄŸacı AnimasyonOynatıcı'ya atanmış yola sahip deÄŸil" #: editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Path to AnimationPlayer is invalid" -msgstr "Animasyon aÄŸacı geçersizdir." +msgstr "Animasyon aÄŸacı yolu geçersizdir" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" @@ -6442,56 +6594,63 @@ msgid "Close and save changes?" msgstr "Kapa ve deÄŸiÅŸiklikleri kaydet?" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error writing TextFile:" -msgstr "Bediz yüklenirken sorun oluÅŸtu:" +msgstr "Metin Dosyası kaydedilirken hata:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Could not load file at:" -msgstr "Karo Bulunamadı:" +msgstr "Åžu dosya yüklenemedi:" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error saving file!" -msgstr "TileSet kaydedilirken hata!" +msgstr "Dosya kaydedilirken hata!" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error while saving theme." -msgstr "Tema kaydedilirken hata" +msgstr "Tema kaydedilirken hata." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error Saving" msgstr "Kaydedilirken hata" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error importing theme." -msgstr "Tema içe aktarılırken hata" +msgstr "Tema içe aktarılırken hata." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error Importing" msgstr "İçe aktarılırken hata" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New Text File..." -msgstr "Yeni Klasör..." +msgstr "Yeni Metin Dosyası..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open File" -msgstr "Bir Dosya Aç" +msgstr "Dosya Aç" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy 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" @@ -6508,9 +6667,8 @@ msgid "Save Theme As..." msgstr "Temayı Farklı Kaydet..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "%s Class Reference" -msgstr " Sınıf BaÅŸvurusu" +msgstr "%s Class referansı" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -6523,18 +6681,16 @@ msgid "Find Previous" msgstr "Öncekini Bul" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Filter scripts" -msgstr "Özellikleri süz" +msgstr "Betikleri Süz" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle alphabetical sorting of the method list." -msgstr "" +msgstr "Metot listesini alfabetik sıralamayı aç/kapa." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Filter methods" -msgstr "Süzgeç kipi:" +msgstr "Metotları filtrele" #: editor/plugins/script_editor_plugin.cpp msgid "Sort" @@ -6565,14 +6721,12 @@ msgid "File" msgstr "Dosya" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open..." -msgstr "Aç" +msgstr "Aç..." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Reopen Closed Script" -msgstr "Betik Aç" +msgstr "Kapatılan betiÄŸi tekrar Aç" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" @@ -6587,9 +6741,8 @@ msgid "Copy Script Path" msgstr "Betik Yolunu Kopyala" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "History Previous" -msgstr "Öceki GeçmiÅŸ" +msgstr "GeçmiÅŸ Önceki" #: editor/plugins/script_editor_plugin.cpp msgid "History Next" @@ -6624,10 +6777,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" @@ -6650,22 +6799,20 @@ msgid "Keep Debugger Open" msgstr "Hata Ayıklayıcıyı Açık Tut" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" msgstr "Harici düzenleyici ile hata ayıkla" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open Godot online documentation." -msgstr "Çevrimiçi Godot dökümanlarını aç" +msgstr "Çevrimiçi Godot dökümanlarını aç." #: editor/plugins/script_editor_plugin.cpp msgid "Request Docs" -msgstr "" +msgstr "Belgeleri İste" #: editor/plugins/script_editor_plugin.cpp msgid "Help improve the Godot documentation by giving feedback." -msgstr "" +msgstr "Dönüt vererek Godot belgelerini iyileÅŸtirmeye yardımcı olun." #: editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." @@ -6706,62 +6853,55 @@ msgid "Debugger" msgstr "Hata Ayıklayıcı" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Search Results" -msgstr "Yardım Ara" +msgstr "Arama Sonuçları" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Clear Recent Scripts" -msgstr "En Son Sahneleri Temizle" +msgstr "En Son Betikleri Temizle" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Connections to method:" -msgstr "Düğüme BaÄŸla:" +msgstr "Metotlara baÄŸlantılar:" #: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Source" -msgstr "Kaynak:" - -#: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "Sinyaller" +msgstr "Kaynak" #: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "Hedef" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "" "Missing connected method '%s' for signal '%s' from node '%s' to node '%s'." -msgstr "Åžunun: '%s' ÅŸununla: '%s' baÄŸlantısını kes" +msgstr "" +"'%s' düğümünden '%s' düğümüne, '%s' sinyali için '%s' baÄŸlantı metodu eksik." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Line" -msgstr "Satır:" +msgstr "Satır" #: editor/plugins/script_text_editor.cpp msgid "(ignore)" -msgstr "" +msgstr "(gözardı et)" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function" -msgstr "İşleve Git..." +msgstr "İşleve Git" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." msgstr "Sadece dosya sisteminden kaynaklar bırakılabilir." #: editor/plugins/script_text_editor.cpp -#, fuzzy +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" -msgstr "Simgeyi Tamamla" +msgstr "Simgeyi AraÅŸtır" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -6785,22 +6925,21 @@ msgstr "Büyük harfe çevirme" #: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp msgid "Syntax Highlighter" -msgstr "" +msgstr "Yazım Vurgulama" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp msgid "Go To" -msgstr "" +msgstr "Åžuna Git" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp msgid "Bookmarks" -msgstr "" +msgstr "Yer imleri" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Breakpoints" -msgstr "Noktalar oluÅŸtur." +msgstr "Hata ayıklama noktaları" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp @@ -6849,66 +6988,56 @@ msgid "Complete Symbol" msgstr "Simgeyi Tamamla" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Evaluate Selection" -msgstr "Seçimi Ölçekle" +msgstr "Seçimi DeÄŸerlendir" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" msgstr "İzleyenin BoÅŸluklarını Kırp" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" -msgstr "Girintileri BoÅŸluklara Dönüştür" +msgstr "Girintiyi BoÅŸluklara Dönüştür" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" -msgstr "Girintileri Sekmelere Dönüştür" +msgstr "Girintiyi Sekmelere Dönüştür" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" msgstr "Kendinden Girintili" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Find in Files..." -msgstr "Dosyaları Süz..." +msgstr "Dosyalarda Bul..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" msgstr "BaÄŸlamsal Yardım" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Toggle Bookmark" -msgstr "Serbestbakış Aç / Kapat" +msgstr "Yer imleri Aç / Kapat" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Bookmark" -msgstr "Sonraki Kesme Noktasına Git" +msgstr "Sonraki Yer imine Git" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Bookmark" -msgstr "Önceki Kesme Noktasına Git" +msgstr "Önceki Yer imine Git" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Remove All Bookmarks" -msgstr "Bütün Öğeleri Kaldır" +msgstr "Bütün Yer imlerini Kaldır" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "İşleve Git..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Line..." -msgstr "Dizeye Git..." +msgstr "Satıra Git..." #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -6920,23 +7049,20 @@ msgid "Remove All Breakpoints" msgstr "Tüm Kesme Noktalarını Kaldır" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" msgstr "Sonraki Kesme Noktasına Git" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" msgstr "Önceki Kesme Noktasına Git" #: editor/plugins/shader_editor_plugin.cpp -#, fuzzy msgid "" "This shader has been modified on on disk.\n" "What action should be taken?" msgstr "" -"AÅŸağıdaki dosyalar diskte daha yeni.\n" -"Hangi eylem yapılsın?:" +"Bu shader klasörde deÄŸiÅŸtirilmiÅŸ.\n" +"Hangi eylem yapılsın?" #: editor/plugins/shader_editor_plugin.cpp msgid "Shader" @@ -6944,48 +7070,43 @@ msgstr "Gölgelendirici" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "This skeleton has no bones, create some children Bone2D nodes." -msgstr "" +msgstr "Bu iskelette hiç kemik yok, alt öge olarak Kemik2D düğümleri oluÅŸtur." #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Create Rest Pose from Bones" -msgstr "Örüntüden Emisyon Noktaları OluÅŸtur" +msgstr "Kemiklerle dinlenme duruÅŸu OluÅŸtur" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Rest Pose to Bones" -msgstr "" +msgstr "Dinlenme duruÅŸunu Kemiklere ata" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "Skeleton2D" -msgstr "İskelet..." +msgstr "İskelet2D" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Make Rest Pose (From Bones)" -msgstr "" +msgstr "Dinlenme duruÅŸu oluÅŸtur (kemiklerden)" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Bones to Rest Pose" -msgstr "" +msgstr "Kemikleri Dinlenme DuruÅŸuna ata" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical bones" -msgstr "Yönlendirici Örüntüsü OluÅŸtur" +msgstr "Fiziki kemikler oluÅŸtur" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Skeleton" msgstr "İskelet" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical skeleton" -msgstr "C# Çözümü oluÅŸtur" +msgstr "Fiziki iskelet oluÅŸtur" #: editor/plugins/skeleton_ik_editor_plugin.cpp -#, fuzzy msgid "Play IK" -msgstr "Oynat" +msgstr "Oynat IK" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" @@ -7041,7 +7162,7 @@ msgstr "Perde" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "Yalpala" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -7112,14 +7233,12 @@ msgid "Rear" msgstr "Arka" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align Transform with View" -msgstr "Görünüme Ayarla" +msgstr "Dönüşümü Görünümle EÅŸle" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Align Rotation with View" -msgstr "Seçimi Görünüme Ayarla" +msgstr "Dönüşü Görünümle eÅŸle" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." @@ -7130,9 +7249,8 @@ msgid "This operation requires a single selected node." msgstr "Bu iÅŸlem, seçilmiÅŸ tek bir düğüm gerektirir." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Lock View Rotation" -msgstr "Bilgi Göster" +msgstr "Dönüşü Görüntülemeyi kilitle" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -7175,14 +7293,12 @@ msgid "Audio Listener" msgstr "Ses Dinleyici" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Enable Doppler" -msgstr "Düzenlenebilir Çocuklar" +msgstr "Doppler'i etkinleÅŸtir" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Cinematic Preview" -msgstr "Mesh Önizlemeleri OluÅŸturuluyor" +msgstr "Sinematik Önizleme" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" @@ -7213,7 +7329,6 @@ msgid "Freelook Speed Modifier" msgstr "Serbestbakış Hız DeÄŸiÅŸtirici" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" msgstr "Serbestbakış Hız DeÄŸiÅŸtirici" @@ -7222,24 +7337,24 @@ 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 "" +"Not: Gösterilen FPS deÄŸeri editörün çerçeve hızıdır.\n" +"Oyun içi performansın gösteri olarak ele alınamaz." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "Bilgi Göster" +msgstr "Dönme Kilitli Görünüm" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "XForm İletiÅŸim Kutusu" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Nodes To Floor" -msgstr "Izgaraya yapış" +msgstr "Düğümleri zemine hizala" #: editor/plugins/spatial_editor_plugin.cpp msgid "Couldn't find a solid floor to snap the selection to." -msgstr "" +msgstr "Seçimi hizalamak için somut zemin bulunamıyor." #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7252,9 +7367,8 @@ msgstr "" "Alt+RMB: Derin liste seçimi" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Use Local Space" -msgstr "Yerel Uzay Kipi (%s)" +msgstr "Yerel Eksen Kipi (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" @@ -7285,9 +7399,8 @@ msgid "Right View" msgstr "SaÄŸdan Görünüm" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Switch Perspective/Orthogonal View" -msgstr "Derinlik / Dikey Görünüme DeÄŸiÅŸtir" +msgstr "Derinlikli / Sığ Görünüme DeÄŸiÅŸtir" #: editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" @@ -7311,9 +7424,8 @@ msgid "Transform" msgstr "Dönüşüm" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Object to Floor" -msgstr "Izgaraya yapış" +msgstr "Nesneyi zemine hizala" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." @@ -7344,9 +7456,8 @@ msgid "4 Viewports" msgstr "4 Görüntükapısı" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Gizmos" -msgstr "Gizmoları Göster" +msgstr "Gizmolar" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" @@ -7358,9 +7469,8 @@ msgstr "Izgara Görünümü" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Settings..." -msgstr "Ayarlar" +msgstr "Ayarlar..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -7424,117 +7534,126 @@ msgstr "Sonrası" #: editor/plugins/spatial_editor_plugin.cpp msgid "Nameless gizmo" -msgstr "" +msgstr "İsimsiz Gizmo" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create Mesh2D" -msgstr "Anahat Örüntüsü OluÅŸtur" +msgstr "Örüntü2D OluÅŸtur" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Mesh Önizlemeleri OluÅŸturuluyor" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" -msgstr "Çoklu OluÅŸturun" +msgstr "Çokgen2D OluÅŸtur" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D" -msgstr "Yönlendirici Çokgeni OluÅŸtur" +msgstr "TemasÇokgen2D OluÅŸtur" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "TemasÇokgen2D OluÅŸtur" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" -msgstr "Engelleyici Çokgeni OluÅŸtur" +msgstr "IşıkEngelleyici2D OluÅŸtur" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "IşıkEngelleyici2D OluÅŸtur" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" -msgstr "Kayıt yolu boÅŸ!" +msgstr "HayaliÇizimlik BoÅŸ!" #: editor/plugins/sprite_editor_plugin.cpp msgid "Can't convert a sprite using animation frames to mesh." msgstr "" +"HayaliÇizimlik, animasyon çerçevelerini kullanarak örüntüye dönüştürülemiyor." #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't replace by mesh." -msgstr "" +msgstr "Geçersiz geometri, örüntü ile deÄŸiÅŸtirilemiyor." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Mesh2D" -msgstr "Åžuna Dönüştür %s" +msgstr "Örüntü2D'ye döüştür" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create polygon." -msgstr "" +msgstr "Geçersiz geometri, çokgen oluÅŸturulamıyor." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to Polygon2D" -msgstr "Çokgeni Taşı" +msgstr "Çokgen2D'ye dönüştür" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create collision polygon." -msgstr "" +msgstr "Geçersiz geometri, temas çokgeni oluÅŸturulamıyor." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create CollisionPolygon2D Sibling" -msgstr "Yönlendirici Çokgeni OluÅŸtur" +msgstr "TemasÇokgen2D akranı oluÅŸturulamıyor" #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't create light occluder." -msgstr "" +msgstr "Geçersiz geometri, ışık engelleyici oluÅŸturulamıyor." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create LightOccluder2D Sibling" -msgstr "Engelleyici Çokgeni OluÅŸtur" +msgstr "Engelleyici Çokgeni akranı OluÅŸtur" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Sprite" -msgstr "GörüntüKareleri" +msgstr "HayaliÇizimlik" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " -msgstr "" +msgstr "SadeleÅŸtirme: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "Yapış (Noktalara):" +msgstr "Sıkıştır (Pikselleri): " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Grow (Pixels): " -msgstr "Yapış (Noktalara):" +msgstr "Büyüt (Pikselleri): " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Update Preview" -msgstr "Atlas Önizleme" +msgstr "Önizlemeyi Güncelle" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Settings:" -msgstr "Ayarlar" +msgstr "Ayarlar:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "No Frames Selected" -msgstr "Kafes Seçimi" +msgstr "Çerçeve seçilmedi" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Add %d Frame(s)" -msgstr "Çerçeve Ekle" +msgstr "%d Çerçeve[ler]'i ekle" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frame" msgstr "Çerçeve Ekle" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Bediz yüklenemedi:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "HATA: Kare kaynağı yüklenemedi!" @@ -7559,19 +7678,16 @@ msgid "(empty)" msgstr "(boÅŸ)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Move Frame" -msgstr "Çerçeveyi Yapıştır" +msgstr "Çerçeveyi Taşı" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Animations:" -msgstr "Animasyonlar" +msgstr "Animasyonlar:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "New Animation" -msgstr "Animasyon" +msgstr "Yeni Animasyon" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -7582,18 +7698,16 @@ msgid "Loop" msgstr "Döngü" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Animation Frames:" -msgstr "Animasyon Çerçeveleri" +msgstr "Animasyon Çerçeveleri:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Add a Texture from File" -msgstr "AÄŸaçtan Düğüm(ler) Ekle" +msgstr "Dosyadan doku ekle" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frames from a Sprite Sheet" -msgstr "" +msgstr "HayaliÇizimlik'ten Çerçeve Ekle" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7612,28 +7726,24 @@ msgid "Move (After)" msgstr "Taşı (Sonra)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Select Frames" -msgstr "Çerçeveleri Yığ" +msgstr "Çerçeveleri Seç" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Horizontal:" -msgstr "" +msgstr "Yatay:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Vertical:" -msgstr "Köşenoktalar" +msgstr "Dikey:" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Select/Clear All Frames" -msgstr "Hepsini seç" +msgstr "Hepsini Seç / Temizle" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Create Frames from Sprite Sheet" -msgstr "Sahneden OluÅŸtur" +msgstr "HayaliÇizimlik'ten Çerçeveler oluÅŸtur" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "SpriteFrames" @@ -7644,9 +7754,8 @@ msgid "Set Region Rect" msgstr "Dikdörtgen Bölgesini Ayarla" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Set Margin" -msgstr "Tutamacı Ayarla" +msgstr "Kenar BoÅŸluk Belirle" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" @@ -7654,9 +7763,8 @@ msgstr "Yapışma Kipi:" #: editor/plugins/texture_region_editor_plugin.cpp #: scene/resources/visual_shader.cpp -#, fuzzy msgid "None" -msgstr "<Yok>" +msgstr "Düğüm" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" @@ -7680,12 +7788,11 @@ msgstr "Adım:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Sep.:" -msgstr "" +msgstr "Ayraç:" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "TextureRegion" -msgstr "Doku Bölgesi" +msgstr "DokuBölgesi" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" @@ -7704,9 +7811,8 @@ msgid "Remove All" msgstr "Tümünü Kaldır" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Edit Theme" -msgstr "Tema düzenle..." +msgstr "Tema düzenle" #: editor/plugins/theme_editor_plugin.cpp msgid "Theme editing menu." @@ -7733,23 +7839,20 @@ msgid "Create From Current Editor Theme" msgstr "Mevcut Düzenleyici Temasından OluÅŸtur" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Toggle Button" -msgstr "Fare Düğmesi" +msgstr "DeÄŸiÅŸtirme Düğmesi" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Button" -msgstr "Orta Düğme" +msgstr "Pasif Düğme" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" msgstr "Öğe" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled Item" -msgstr "Devre dışı" +msgstr "Pasif Öge" #: editor/plugins/theme_editor_plugin.cpp msgid "Check Item" @@ -7769,21 +7872,19 @@ msgstr "Seçili Radyo Ögesi" #: editor/plugins/theme_editor_plugin.cpp msgid "Named Sep." -msgstr "" +msgstr "İsimli Ayraç." #: editor/plugins/theme_editor_plugin.cpp msgid "Submenu" -msgstr "" +msgstr "Altmenü" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 1" -msgstr "Öğe" +msgstr "Altöge 1" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Subitem 2" -msgstr "Öğe" +msgstr "Altöge 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" @@ -7794,9 +7895,8 @@ msgid "Many" msgstr "Çok" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Disabled LineEdit" -msgstr "Devre dışı" +msgstr "Pasif SatırDüzeltici" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" @@ -7811,13 +7911,12 @@ msgid "Tab 3" msgstr "Sekme 3" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Editable Item" -msgstr "Düzenlenebilir Çocuklar" +msgstr "Düzenlenebilir Öge" #: editor/plugins/theme_editor_plugin.cpp msgid "Subtree" -msgstr "" +msgstr "AltaÄŸaç" #: editor/plugins/theme_editor_plugin.cpp msgid "Has,Many,Options" @@ -7828,6 +7927,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" @@ -7844,23 +7944,22 @@ msgid "Color" msgstr "Renk" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Sabit" +#, fuzzy +msgid "Theme File" +msgstr "Tema" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Seçimi Sil" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Fix Invalid Tiles" -msgstr "Geçersiz ad." +msgstr "Geçersiz Döşemeleri Düzelt" #: editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "İçre Seçimi" +msgstr "Seçimi Kes" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -7883,32 +7982,30 @@ msgid "Erase TileMap" msgstr "TileMap'i Sil" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Find Tile" -msgstr "Döşentiyi Bul" +msgstr "Dosya Bul" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" msgstr "Tersine Çevir" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Disable Autotile" -msgstr "Oto-döşemeler" +msgstr "Oto-döşemeleri PasifleÅŸtir" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Enable Priority" -msgstr "Süzgeçleri Düzenle" +msgstr "Önceliklemeyi EtkinleÅŸtir" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Filter tiles" -msgstr "Dosyaları Süz..." +msgstr "Döşemelerde Bul" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Give a TileSet resource to this TileMap to use its tiles." msgstr "" +"Bu DöşemeHaritası için döşemelerini kullanmak üzere DöşemeTakımı kaynağı " +"belirtin." #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint Tile" @@ -7919,43 +8016,40 @@ msgid "" "Shift+LMB: Line Draw\n" "Shift+Ctrl+LMB: Rectangle Paint" msgstr "" +"Shift+SFT: Çizgi Çiz\n" +"Shift+Ctrl+SFT: Dkidörtgen Boya" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" msgstr "Karo Seç" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate Left" -msgstr "Döndürme Biçimi" +msgstr "Sola Döndür" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate Right" -msgstr "SaÄŸa Taşı" +msgstr "SaÄŸa Döndür" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip Horizontally" -msgstr "" +msgstr "Yatay Yansıt" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip Vertically" -msgstr "" +msgstr "Dikey Yansıt" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear Transform" -msgstr "Dönüşüm" +msgstr "Dönüşümü Temizle" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Add Texture(s) to TileSet." -msgstr "AÄŸaçtan Düğüm(ler) Ekle" +msgstr "DöşemeTakımına doku[lar] ekle." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected Texture from TileSet." -msgstr "Mevcut giriyi kaldır" +msgstr "Seçilen dokuyu DöşemeTakımı'ndan kaldır." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -7966,155 +8060,194 @@ 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 Zemin" +msgstr "Sonraki Koordinat" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the next shape, subtile, or Tile." -msgstr "" +msgstr "Sonraki ÅŸekil, altdöşeme ya da döşemeyi seç." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Previous Coordinate" -msgstr "Önceki Zemin" +msgstr "Önceki Koordinat" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Select the previous shape, subtile, or Tile." -msgstr "" +msgstr "Önceki ÅŸekil, altdöşeme ya da Döşemeyi Seç." #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Region Mode" -msgstr "Çalışma Kipi:" +msgid "Region" +msgstr "Bölge Åžekli" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Collision Mode" -msgstr "AradeÄŸerleme Kipi" +msgid "Collision" +msgstr "Temas Åžekli" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Occlusion Mode" -msgstr "Çokluyu Düzenleyin" +msgid "Occlusion" +msgstr "Örtü Åžekli" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Navigation Mode" -msgstr "Yönlendirici Örüntüsü OluÅŸtur" +msgid "Navigation" +msgstr "Gezinim Åžekli" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Bitmask Mode" -msgstr "Döndürme Biçimi" +msgid "Bitmask" +msgstr "BitMaskeleme Åžekli" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Priority Mode" -msgstr "Dışa Aktarma Biçimi:" +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" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Collision Mode" +msgstr "Temas Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Occlusion Mode" +msgstr "Örtü Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Navigation Mode" +msgstr "Gezinim Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Bitmask Mode" +msgstr "BitMaskeleme Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Priority Mode" +msgstr "Öncelik Åžekli" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon Mode" -msgstr "Kaydırma Biçimi" +msgstr "Simge Åžekli" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Z Index Mode" -msgstr "Kaydırma Biçimi" +msgstr "Z Derinlik Åžekli" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." -msgstr "" +msgstr "Bitmaskesi Kopyala." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste bitmask." -msgstr "Animasyonu Yapıştır" +msgstr "Bitmaskesi yapıştır." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Erase bitmask." -msgstr "RMB: Noktayı Sil." +msgstr "Bitmaskesi sil." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new rectangle." -msgstr "Yeni %s oluÅŸtur" +msgstr "Yeni dikdörtgen oluÅŸtur." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new polygon." -msgstr "Sıfırdan yeni bir çokgen oluÅŸturun." +msgstr "Yeni bir çokgen oluÅŸturun." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." -msgstr "" +msgstr "Çokgeni Dikdörtgen bölgesinde tut." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." msgstr "" +"Hizalama ve ızgara görüntülemeyi etkinleÅŸtir (gözetleme aracı ile de " +"deÄŸiÅŸtirilebilir)." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" -msgstr "" +msgstr "Döşeme İsimlerini Göster (Alt tuÅŸuna basık tutun)" #: 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 "" +"Soldaki panelden doku ekle ya da seçerek kendisine baÄŸlı döşemeyi düzenle." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "Mevcut giriyi kaldır" +msgstr "" +"Seçilen doku kaldırılsın mı? Bu eylem, dokuyu kullanan tüm döşemeleri de " +"kaldıracaktır." #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." -msgstr "" +msgstr "Kaldırmak için doku seçimi yapmadınız." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." msgstr "" +"Sahneden oluÅŸtur? Bu eylem tüm döşemelerin üzerlerine yazılmasına yol açacak." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" msgstr "Sahneden birleÅŸtirilsin mi?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Texture" -msgstr "Åžablonu Kaldır" +msgstr "Dokuyu Kaldır" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." -msgstr "" +msgstr "%s dosyası eklenmedi çünkü zaten listede idi." #: editor/plugins/tile_set_editor_plugin.cpp msgid "" "Drag handles to edit Rect.\n" "Click on another Tile to edit it." msgstr "" +"Dikdörtgeni düzeltmek için tutamaçlardan tutun.\n" +"Düzeltmek için baÅŸka bir döşemeye tıklayın." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete selected Rect." -msgstr "Seçili dosyalar silinsin mi?" +msgstr "Seçili Dörtgeni Silin." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select current edited sub-tile.\n" "Click on another Tile to edit it." -msgstr "Åžuanki düzenlenmiÅŸ alt-döşemeyi seç." +msgstr "" +"Åžuanda düzenlenen döşemeyi seç.\n" +"Düzenlemek için baÅŸka döşemeye tıklayın." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete polygon." -msgstr "Noktaları sil" +msgstr "Çokgeni Sil." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "LMB: Set bit on.\n" "RMB: Set bit off.\n" @@ -8122,220 +8255,205 @@ msgid "" "Click on another Tile to edit it." msgstr "" "LMB: bit'i aç.\n" -"RMB: bit'i kapat." +"RMB: bit'i kapat.\n" +"Shift+LMB: Anahtar Bit belirle.\n" +"Düzenlemek için baÅŸka bir döşemeye tıklayın." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy 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 "" -"Simge olarak kullanmak iÅŸin alt-karo seç, bu aynı zamanda geçersiz oto-karo " -"baÄŸlantılarında kullanılacaktır." +"Simge olarak kullanmak iÅŸin alt-döşeme seç, bu aynı zamanda geçersiz " +"otomatik döşeme deÄŸiÅŸkenlerinde kullanılacaktır.\n" +"Düzenlemek için baÅŸka bir döşemeye tıklayın." #: 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 "ÖnceliÄŸini deÄŸiÅŸtirmek için alt-karo seçin." +msgstr "" +"ÖnceliÄŸini deÄŸiÅŸtirmek için alt döşeme seçin.\n" +"Düzenlemek için baÅŸka bir döşeme seçiniz." #: 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 "ÖnceliÄŸini deÄŸiÅŸtirmek için alt-karo seçin." +msgstr "" +"Z derinliÄŸini deÄŸiÅŸtirmek için alt-döşeme seçin.\n" +"Düzenlemek için baÅŸka bir döşeme seçin." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Set Tile Region" -msgstr "Dikdörtgen Bölgesini Ayarla" +msgstr "Döşeme Bölgesi Ata" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Tile" -msgstr "Klasör OluÅŸtur" +msgstr "Döşeme OluÅŸtur" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "" +msgstr "Döşeme Simgesi Ayarla" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Bitmask" -msgstr "Süzgeçleri Düzenle" +msgstr "Döşeme Bitmaskesi Düzenle" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Collision Polygon" -msgstr "Var olan çokgeni düzenleyin:" +msgstr "Temas Çokgeni Düzenle" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Occlusion Polygon" -msgstr "Çokluyu Düzenleyin" +msgstr "Engelleyici Çokgeni Düzenle" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Navigation Polygon" -msgstr "Yönlendirici Çokgeni OluÅŸtur" +msgstr "Gezinim Çokgeni Düzenle" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste Tile Bitmask" -msgstr "Animasyonu Yapıştır" +msgstr "Döşeme Bitmaskesi Yapıştır" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "" +msgstr "Döşeme Maskesini Temizle" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Concave" -msgstr "Çokgeni Taşı" +msgstr "Çokgeni İçbükey Yap" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Make Polygon Convex" -msgstr "Çokgeni Taşı" +msgstr "Çokgeni Dışbükey Yap" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Tile" -msgstr "Åžablonu Kaldır" +msgstr "Döşemeyi Kaldır" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Collision Polygon" -msgstr "Çokluyu ve Noktayı Kaldır" +msgstr "Temas Çokgenini Kaldır" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Occlusion Polygon" -msgstr "Engelleyici Çokgeni OluÅŸtur" +msgstr "Engelleyici Çokgenini Kaldır" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Navigation Polygon" -msgstr "Yönlendirici Çokgeni OluÅŸtur" +msgstr "Yönlendirici Çokgenini Kaldır" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Priority" -msgstr "Süzgeçleri Düzenle" +msgstr "Döşeme ÖnceliÄŸini DeÄŸiÅŸtir" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" -msgstr "" +msgstr "Döşeme Z DerinliÄŸini DeÄŸiÅŸtir" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy -msgid "Create Collision Polygon" -msgstr "Yönlendirici Çokgeni OluÅŸtur" +msgid "Make Convex" +msgstr "Çokgeni Dışbükey Yap" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Concave" +msgstr "Çokgeni İçbükey Yap" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Collision Polygon" +msgstr "Temas Çokgeni OluÅŸtur" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Occlusion Polygon" msgstr "Engelleyici Çokgeni OluÅŸtur" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "This property can't be changed." -msgstr "Bu iÅŸlem bir sahne olmadan yapılamaz." +msgstr "Bu nitelik deÄŸiÅŸtirilemez." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "TileSet" -msgstr "Karo Takımı" +msgstr "DöşemeTakımı" #: editor/plugins/version_control_editor_plugin.cpp msgid "No VCS addons are available." -msgstr "" +msgstr "Hiçbir VCS eklentisi mevcut deÄŸil." #: editor/plugins/version_control_editor_plugin.cpp editor/rename_dialog.cpp msgid "Error" msgstr "Hata" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No commit message was provided" -msgstr "İsim saÄŸlanmadı" +msgstr "Hiçbir iÅŸleme mesajı saÄŸlanmadı" #: editor/plugins/version_control_editor_plugin.cpp msgid "No files added to stage" -msgstr "" +msgstr "Sahneye hiç dosya eklenmedi" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit" -msgstr "Topluluk" +msgstr "İşle" #: editor/plugins/version_control_editor_plugin.cpp msgid "VCS Addon is not initialized" -msgstr "" +msgstr "VCS eklentileri etkinleÅŸtirilmedi" #: editor/plugins/version_control_editor_plugin.cpp msgid "Version Control System" -msgstr "" +msgstr "Versiyon Denetim Sistemi" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Initialize" -msgstr "Büyük harfe çevirme" +msgstr "EtkinleÅŸtir" #: editor/plugins/version_control_editor_plugin.cpp msgid "Staging area" -msgstr "" +msgstr "Sahne Öncesi" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Detect new changes" -msgstr "Yeni %s oluÅŸtur" +msgstr "Yeni deÄŸiÅŸiklikleri tespit et" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Changes" -msgstr "DeÄŸiÅŸtir" +msgstr "DeÄŸiÅŸiklikler" #: editor/plugins/version_control_editor_plugin.cpp msgid "Modified" -msgstr "" +msgstr "DeÄŸiÅŸti" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Renamed" -msgstr "Yeniden Adlandır" +msgstr "Yeniden Adlandırıldı" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Deleted" -msgstr "Sil" +msgstr "Silindi" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Typechange" -msgstr "DeÄŸiÅŸtir" +msgstr "TürdeÄŸiÅŸtir" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage Selected" -msgstr "Seçilenleri Sil" +msgstr "Sahne Seçildi" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Stage All" -msgstr "Tümünü kaydet" +msgstr "Tümünü Sahneye Al" #: editor/plugins/version_control_editor_plugin.cpp msgid "Add a commit message" -msgstr "" +msgstr "İşleme Mesajı Ekle" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "Commit Changes" -msgstr "Betik DeÄŸiÅŸikliklerini EÅŸ Zamanla" +msgstr "DeÄŸiÅŸiklikleri İşle" #: editor/plugins/version_control_editor_plugin.cpp #: modules/gdnative/gdnative_library_singleton_editor.cpp @@ -8344,30 +8462,27 @@ msgstr "Durum" #: editor/plugins/version_control_editor_plugin.cpp msgid "View file diffs before committing them to the latest version" -msgstr "" +msgstr "Son versiyona iÅŸlemeden önce dosya diff 'lerini incele" #: editor/plugins/version_control_editor_plugin.cpp -#, fuzzy msgid "No file diff is active" -msgstr "Hiçbir Dizeç Seçilmedi!" +msgstr "Dosya diff etkin deÄŸil" #: editor/plugins/version_control_editor_plugin.cpp msgid "Detect changes in file diff" -msgstr "" +msgstr "Diff dosyasındaki deÄŸiÅŸiklikleri tespit et" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(GLES3 only)" -msgstr "" +msgstr "(Yalnızca GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "GiriÅŸ Ekle" +msgstr "Çıkış Ekle" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar" -msgstr "Ölçekle:" +msgstr "Sayısal" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Vector" @@ -8375,80 +8490,67 @@ msgstr "Vektör" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean" -msgstr "" +msgstr "Boolean" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "Örnekler" +msgstr "Örnekleyici" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add input port" -msgstr "GiriÅŸ Ekle" +msgstr "GiriÅŸ noktası ekle" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add output port" -msgstr "" +msgstr "Çıkış noktası ekle" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port type" -msgstr "Varsayılan tipi deÄŸiÅŸtir" +msgstr "GiriÅŸ noktası türü deÄŸiÅŸtir" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change output port type" -msgstr "Varsayılan tipi deÄŸiÅŸtir" +msgstr "Çıkış noktası türü deÄŸiÅŸtir" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change input port name" -msgstr "GiriÅŸ Adını DeÄŸiÅŸtir" +msgstr "GiriÅŸ noktası adını deÄŸiÅŸtir" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Change output port name" -msgstr "GiriÅŸ Adını DeÄŸiÅŸtir" +msgstr "Çıkış noktası adını deÄŸiÅŸtir" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Remove input port" -msgstr "Noktayı kaldır" +msgstr "GiriÅŸ noktasını sil" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Remove output port" -msgstr "Noktayı kaldır" +msgstr "Çıkış noktasını sil" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Set expression" -msgstr "İfadeyi DeÄŸiÅŸtir" +msgstr "İfadeyi ayarla" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Resize VisualShader node" -msgstr "Gölgelendirici" +msgstr "VisualShader düğümünü Boyutlandır" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Set Uniform Name" -msgstr "" +msgstr "Uniform ismi ayarla" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Set Input Default Port" -msgstr "'%s' için Varsayılanı Ayarla" +msgstr "Girdi varsayılan noktasını ayarla" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Node to Visual Shader" -msgstr "Gölgelendirici" +msgstr "Visual Shader'a düğüm ekle" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Duplicate Nodes" -msgstr "Düğüm(leri) ÇoÄŸalt" +msgstr "Düğümleri Çokla" #: editor/plugins/visual_shader_editor_plugin.cpp #: modules/visual_script/visual_script_editor.cpp @@ -8456,403 +8558,396 @@ msgid "Paste Nodes" msgstr "Düğümleri Yapıştır" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Delete Nodes" msgstr "Düğümleri Sil" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Visual Shader Input Type Changed" -msgstr "" +msgstr "Visual Shader giriÅŸ Türü DeÄŸiÅŸti" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vertex" -msgstr "Köşenoktalar" +msgstr "Köşe" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Fragment" msgstr "Bölümlenme" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Light" -msgstr "SaÄŸ" +msgstr "Işık" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Show resulted shader code." -msgstr "Düğüm OluÅŸtur" +msgstr "Shader kodunu görüntüle." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Create Shader Node" -msgstr "Düğüm OluÅŸtur" +msgstr "Shader düğümü oluÅŸtur" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color function." -msgstr "İşleve Git..." +msgstr "Renk iÅŸlevi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color operator." -msgstr "" +msgstr "Renk operatörü." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Grayscale function." -msgstr "İşlev Yap" +msgstr "Gritonlama iÅŸlevi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." -msgstr "" +msgstr "HSV vektörünü RGB karşılığına dönüştürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts RGB vector to HSV equivalent." -msgstr "" +msgstr "RGB vektörünü HSV karşılığına dönüştürür." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sepia function." -msgstr "İşlevi Yeniden Adlandır" +msgstr "Sepya İşlevi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Burn operator." -msgstr "" +msgstr "Yakma operatörü." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Darken operator." -msgstr "" +msgstr "Koyulayıcı opeartör." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Difference operator." -msgstr "Sadece Farklılıklar" +msgstr "Fark etkisi opeartörü." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Dodge operator." -msgstr "" +msgstr "Dodge operatörü." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "HardLight opeartörü" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." -msgstr "" +msgstr "Aydınlatıcı operatör." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Overlay operator." -msgstr "" +msgstr "Kaplama opeartörü." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Screen operator." -msgstr "" +msgstr "Screen Etkisi operatörü." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "SoftLight operator." -msgstr "" +msgstr "SoftLight operatörü." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color constant." -msgstr "Sabit" +msgstr "Renk Sabiti." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Color uniform." -msgstr "Dönüşüm" +msgstr "Renk uniform'u." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the %s comparison between two parameters." -msgstr "" +msgstr "iki parametre arasındaki %s kıyaslamasının boolean sonucunu döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Equal (==)" -msgstr "" +msgstr "EÅŸit (==)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than (>)" -msgstr "" +msgstr "Büyüktür (>)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Greater Than or Equal (>=)" -msgstr "" +msgstr "Büyük EÅŸit (>=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated vector if the provided scalars are equal, greater or " "less." msgstr "" +"EÄŸer saÄŸlanan sayısal deÄŸeler eÅŸit, büyük ya da küçük ise " +"iliÅŸikilendirildikleri vekötürünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between INF and a scalar " "parameter." msgstr "" +"INF ve sayısal parametre arasındaki kıyaslamanın boolean sonucunu döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between NaN and a scalar " "parameter." msgstr "" +"NaN ve sayısal parametre arasındaki kıyaslamanın boolean sonucunu döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than (<)" -msgstr "" +msgstr "Küçüktür (<)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Less Than or Equal (<=)" -msgstr "" +msgstr "Küçük EÅŸit (<=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Not Equal (!=)" -msgstr "" +msgstr "EÅŸit DeÄŸil (!=)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated vector if the provided boolean value is true or false." -msgstr "" +msgstr "SaÄŸlanan boolean deÄŸer doÄŸru ya da yanlışsa ilgili vektörünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns an associated scalar if the provided boolean value is true or false." msgstr "" +"SaÄŸlanan boolean deÄŸer doÄŸru ya da yanlışsa ilgili sayısal deÄŸeri döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the boolean result of the comparison between two parameters." -msgstr "" +msgstr "iki parametre arasındaki kıyaslamanın boolean sonucunu döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the boolean result of the comparison between INF (or NaN) and a " "scalar parameter." msgstr "" +"INF (ya da NaN) ve sayısal bir deÄŸerin kıyaslamasının sonucunu boolean " +"olarak döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Boolean constant." -msgstr "Vec Sabitini DeÄŸiÅŸtir" +msgstr "Boolean sabit." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Boolean uniform." -msgstr "" +msgstr "DoÄŸru/Yanlış uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for all shader modes." -msgstr "" +msgstr "'%s' giriÅŸ parametresi tüm shader modları içindir." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Input parameter." -msgstr "Ebeveyne yapıştır" +msgstr "GiriÅŸ parametresi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader modes." -msgstr "" +msgstr "'%s' giriÅŸ parametresi vertex ve fragment shader modları içindir." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment and light shader modes." -msgstr "" +msgstr "'%s' giriÅŸ parametresi fragment ve light shader modları içindir." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for fragment shader mode." -msgstr "" +msgstr "'%s' giriÅŸ parametresi fragment shader modu içindir." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for light shader mode." -msgstr "" +msgstr "'%s' giriÅŸ parametresi light shader modu içindir." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex shader mode." -msgstr "" +msgstr "'%s' giriÅŸ parametresi vertex shader modu içindir." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "'%s' input parameter for vertex and fragment shader mode." -msgstr "" +msgstr "'%s' giriÅŸ parametresi fragment ve vertex shader modu içindir." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar function." -msgstr "Basamaklı İşlevi DeÄŸiÅŸtir" +msgstr "Katsayı iÅŸlevi." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar operator." -msgstr "Skaler Operatörünü DeÄŸiÅŸtir" +msgstr "Katsayı operatörü." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "E constant (2.718282). Represents the base of the natural logarithm." -msgstr "" +msgstr "E sabiti (2.718282). DoÄŸal algoritmanın tabanını ifade eder." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Epsilon constant (0.00001). Smallest possible scalar number." -msgstr "" +msgstr "Epsilon sabiti (0.00001). Mümkün olan en küçük katsayı deÄŸeri." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Phi constant (1.618034). Golden ratio." -msgstr "" +msgstr "Phi sabiti (1.618034). Altın oran." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Pi/4 constant (0.785398) or 45 degrees." -msgstr "" +msgstr "Pi/4 sabiti (0.785398) ya da 45 derece." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Pi/2 constant (1.570796) or 90 degrees." -msgstr "" +msgstr "Pi/2 sabiti (1.570796) ya da 90 derece." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Pi constant (3.141593) or 180 degrees." -msgstr "" +msgstr "Pi sabiti (3.141593) ya da 180 derece." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Tau constant (6.283185) or 360 degrees." -msgstr "" +msgstr "Tau sabiti (6.283185) ya da 360 derece." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sqrt2 constant (1.414214). Square root of 2." -msgstr "" +msgstr "Sqrt2 sabiti (1.414214). 2'nin karekökü." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the absolute value of the parameter." -msgstr "" +msgstr "Parametrenin mutlak deÄŸerini döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-cosine of the parameter." -msgstr "" +msgstr "Cosinüs deÄŸeri verilen parametrenin arc-cos; açı deÄŸerini, döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic cosine of the parameter." -msgstr "" +msgstr "Verilen bir deÄŸerin ters hiperbolik cosisnüsünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-sine of the parameter." -msgstr "" +msgstr "Verilen deÄŸerin arc-sinüsünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic sine of the parameter." -msgstr "" +msgstr "Verilen parametrenin ters hiperbolik sinüsünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameter." -msgstr "" +msgstr "Parametrenin arc-tanjantını döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the arc-tangent of the parameters." -msgstr "" +msgstr "Parametrelerin arc-tanjantını döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse hyperbolic tangent of the parameter." -msgstr "" +msgstr "Parametrelerin ters hiperbolik tanjantını döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Finds the nearest integer that is greater than or equal to the parameter." -msgstr "" +msgstr "parametreye eÅŸit ya da büyük eÅŸit olan en yakın tam sayıyı bulur." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Constrains a value to lie between two further values." -msgstr "" +msgstr "Bir deÄŸerin belirtilen iki deÄŸer arasına yerleÅŸtirilmesini saÄŸlar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the cosine of the parameter." -msgstr "" +msgstr "Parametrenin cosinüsünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic cosine of the parameter." -msgstr "" +msgstr "Parametrenin hiperbolik cosinüsünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in radians to degrees." -msgstr "" +msgstr "Radian ÅŸeklindeki açıyı derece tipine çevirir." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-e Exponential." -msgstr "" +msgstr "e-tabanlı Üstel." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 Exponential." -msgstr "" +msgstr "2 Tabanlı Üstel." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest integer less than or equal to the parameter." -msgstr "" +msgstr "Parametreye eÅŸit ya da küçük eÅŸit olan en yakın tam sayıyı bulur." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Computes the fractional part of the argument." -msgstr "" +msgstr "Verilen deÄŸerin küsüratlı kısmını hesaplar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the inverse of the square root of the parameter." -msgstr "" +msgstr "Verilen deÄŸerin karekökünün tersini döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Natural logarithm." -msgstr "" +msgstr "DoÄŸal Algoritma." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Base-2 logarithm." -msgstr "" +msgstr "2-Tabanında algoritma." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the greater of two values." -msgstr "" +msgstr "İki parametreden büyük olanı döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the lesser of two values." -msgstr "" +msgstr "İki parametreden küçük olanı döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Linear interpolation between two scalars." -msgstr "" +msgstr "İki katsayı arasında doÄŸrusal geçiÅŸ deÄŸerleri yaratımı." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the opposite value of the parameter." -msgstr "" +msgstr "Verilen deÄŸerin zıt deÄŸerini döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 - scalar" -msgstr "" +msgstr "1.0 - katsayı" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" "Returns the value of the first parameter raised to the power of the second." -msgstr "" +msgstr "İlk sayı üzeri ikinci sayı deÄŸerini döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts a quantity in degrees to radians." -msgstr "" +msgstr "Derece deÄŸerini radian deÄŸerine dönüştürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 / scalar" -msgstr "" +msgstr "1.0 / katsayı" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest integer to the parameter." -msgstr "" +msgstr "Verilen deÄŸere en yakın tamsayıyı bulur." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the nearest even integer to the parameter." -msgstr "" +msgstr "Verilen deÄŸere en yakın çift sayıyı bulur." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Clamps the value between 0.0 and 1.0." -msgstr "" +msgstr "DeÄŸeri 0.0 ile 1.0 arasına kısıtlar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Extracts the sign of the parameter." -msgstr "" +msgstr "Verilen deÄŸerin iÅŸaretini çıkarır." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the sine of the parameter." -msgstr "" +msgstr "Verilen deÄŸerin sinüsünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic sine of the parameter." -msgstr "" +msgstr "verilen deÄŸerin hiperbolik sinüsünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the square root of the parameter." -msgstr "" +msgstr "verilen deÄŸerin karekökünü döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8862,6 +8957,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"SmoothStep iÅŸlevi( katsayı(köşe0), katsayı(köşe1), katsayı(x) ).\n" +"\n" +"DöndüreceÄŸi deÄŸer 0.0 eÄŸer 'x' 'köşe0' dan küçükse ve 1.0 eÄŸer x 'köşe1' den " +"büyükse. Aksi takdirde dödüreceÄŸi deÄŸer Hermite polinomları ile 0.0 ve 1.0 " +"arasında hesaplanan deÄŸerdir." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8869,76 +8969,73 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Step iÅŸlevi( scalar(edge), scalar(x) ).\n" +"\n" +"EÄŸer x edge'den küçükse 0.0 aksi durumda ise 1.0 döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the tangent of the parameter." -msgstr "" +msgstr "Verilen deÄŸerin tanjantını döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the hyperbolic tangent of the parameter." -msgstr "" +msgstr "Verilen deÄŸerin hiperbolik tanjantını döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Finds the truncated value of the parameter." -msgstr "" +msgstr "Verilen deÄŸerin budanmış halini bulur." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds scalar to scalar." -msgstr "" +msgstr "Katsayıyı baÅŸka bir katsayıya ekler." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Divides scalar by scalar." -msgstr "" +msgstr "Katsayıyı baÅŸka bir katsayıya böler." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies scalar by scalar." -msgstr "" +msgstr "Katsayıyı baÅŸka bir katsayı ile çarpar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two scalars." -msgstr "" +msgstr "İki katsayının kalanını döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts scalar from scalar." -msgstr "" +msgstr "Katsayıdan baÅŸka bir katsayıyı çıkarır." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar constant." -msgstr "Basamaklı Sabiti DeÄŸiÅŸtir" +msgstr "Katsayı Sabit." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Scalar uniform." -msgstr "Basamaklı Tekdüzenini DeÄŸiÅŸtir" +msgstr "Katsayı uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the cubic texture lookup." -msgstr "" +msgstr "kübik doku arama iÅŸlemi gerçekleÅŸtir." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Perform the texture lookup." -msgstr "" +msgstr "Doku arama gerçekleÅŸtir." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Cubic texture uniform lookup." -msgstr "Doku Tekdüzenini DeÄŸiÅŸtir" +msgstr "Kübik doku uniformu arama." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "2D texture uniform lookup." -msgstr "Doku Tekdüzenini DeÄŸiÅŸtir" +msgstr "2D doku uniform arama." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "2D texture uniform lookup with triplanar." -msgstr "Doku Tekdüzenini DeÄŸiÅŸtir" +msgstr "üç katlı 2D doku uniformu araması." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform function." -msgstr "Dönüştürme İletiÅŸim Kutusu..." +msgstr "Dönüştürme iÅŸlevi." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -8950,74 +9047,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 "" +"Verilen iki vektörün dışsal ürününü hesaplar.\n" +"\n" +"OuterProduct ilk parametre 'c' 'yi kolon vektör olarak ele alır. (tek " +"sütunlu matrix) ve ikinci parametre 'r' yi ise yatay vektör (tek satırlı " +"matrix) olarak ele alır. doÄŸrusal cebirsel çarpım yapar: 'c * r', 'c' 'nin " +"bileÅŸenleri miktarınca satırı olan bir matrix üretir. Bu matrix'in kolon " +"sayısı ise 'r' 'nin bileÅŸen sayısına eÅŸit olur." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes transform from four vectors." -msgstr "" +msgstr "Dört vektör ile dönüşüm tanımlar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Decomposes transform to four vectors." -msgstr "" +msgstr "Dönüşümü dört vektöre dağıtır." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the determinant of a transform." -msgstr "" +msgstr "Dönüşümün determinantını hesaplar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the inverse of a transform." -msgstr "" +msgstr "Dönüşümün tersini hesaplar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the transpose of a transform." -msgstr "" +msgstr "Dönüşümün dikey-yatay dönüşümünü hesaplar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies transform by transform." -msgstr "" +msgstr "Dönüşüm ile Dönüşüm çarpımı yapar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies vector by transform." -msgstr "" +msgstr "Vektör ile Dönüşüm Çarpımı yapar." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform constant." -msgstr "Dönüşüm Durduruldu." +msgstr "Dönüşüm sabiti." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Transform uniform." -msgstr "Dönüşüm Durduruldu." +msgstr "Dönüşüm uniformu." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector function." -msgstr "İşleve Git..." +msgstr "Vektör İşlevi." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector operator." -msgstr "Vec İşletmenini DeÄŸiÅŸtir" +msgstr "Vektör Operatörü." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Composes vector from three scalars." -msgstr "" +msgstr "Üç katsayıdan vektör üretir." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Decomposes vector to three scalars." -msgstr "" +msgstr "Vektörü üç katsayıya dağıtır." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the cross product of two vectors." -msgstr "" +msgstr "İki vektörün Çapraz Ürününü hesaplar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the distance between two points." -msgstr "" +msgstr "İki nokta arasındaki uzaklığı döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the dot product of two vectors." -msgstr "" +msgstr "İki vektörün Nokta Ürününü hesaplar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9026,40 +9126,45 @@ 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 "" +"Referans vektörle aynı yöne bakan vektörü döndürür. İşlev için üç adet " +"vektör parametresi gereklidir : N, odak vektörü, I, olay vektörü ve Nref, " +"referans vektörü. EÄŸer I ve Nref'in Nokta Ürünü sıfırdan küçükse Sonuç " +"deÄŸeri N olur. Aksi takdirde -N döndürülür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the length of a vector." -msgstr "" +msgstr "Bir vektörün uzunluÄŸunu hesaplar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Linear interpolation between two vectors." -msgstr "" +msgstr "İki vektör arasında doÄŸrusal geçiÅŸ deÄŸerleri hesaplama." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Linear interpolation between two vectors using scalar." -msgstr "" +msgstr "Katsayı kullanarak iki vektör arasındaki ara deÄŸerleri hesaplama." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Calculates the normalize product of vector." -msgstr "" +msgstr "Vektör ürünü normalleÅŸtirmesini hesaplar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 - vector" -msgstr "" +msgstr "1.0 - vektör" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "1.0 / vector" -msgstr "" +msgstr "1.0 / vektör" #: 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 "" +"Yansıma yönüne bakan vektör döndürür. (a : olay vektörü, b : normal vektör )." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the vector that points in the direction of refraction." -msgstr "" +msgstr "Kırılma yönüne bakan vektör dündürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9069,6 +9174,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"SmoothStep iÅŸlevi( vektör(edge0), vektör(edge1), vektör(x) ).\n" +"\n" +"0.0 döndürür eÄŸer 'x' 'edge0''den küçükse, ve 1.0 eÄŸer 'x' 'edge1'' den " +"büyükse. Aksi takdirde dönen deÄŸer 0.0 ve 1.0 arasından Hermite polinom " +"hesabıyla döndürürlür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9078,6 +9188,11 @@ msgid "" "'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 " "using Hermite polynomials." msgstr "" +"SmoothStep iÅŸlevi( katsayı(edge0), katsayı(edge1), katsayı(x) ).\n" +"\n" +"0.0 döndürür eÄŸer 'x' 'edge0''den küçükse, ve 1.0 eÄŸer 'x' 'edge1'' den " +"büyükse. Aksi takdirde dönen deÄŸer 0.0 ve 1.0 arasından Hermite polinom " +"hesabıyla döndürülür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9085,6 +9200,9 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Step İşlevi( vektör(edge), vektör(x) ).\n" +"\n" +"0.0 döndürür eÄŸer 'x' 'edge''dan küçükse, deÄŸilse 1.0 döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9092,36 +9210,37 @@ msgid "" "\n" "Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0." msgstr "" +"Step function( katsayı(edge), vektör(x) ).\n" +"\n" +"0.0 döndürür eÄŸer 'x' 'edge''den küçükse aksi ise 1.0." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Adds vector to vector." -msgstr "" +msgstr "Vektörü baÅŸka vektöre ekler." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Divides vector by vector." -msgstr "" +msgstr "Vektörü baÅŸka vektörle böler." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Multiplies vector by vector." -msgstr "" +msgstr "Vektörü baÅŸka vektörler çarpar." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Returns the remainder of the two vectors." -msgstr "" +msgstr "iki vektörün kalanını döndürür." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Subtracts vector from vector." -msgstr "" +msgstr "Vektörden baÅŸka bir vektörü çıkarır." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector constant." -msgstr "Vec Sabitini DeÄŸiÅŸtir" +msgstr "Vektör Sabit." #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vector uniform." -msgstr "Vec Tekdüzenini DeÄŸiÅŸtir" +msgstr "Vektörel uniform." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" @@ -9138,9 +9257,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9207,6 +9327,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?" @@ -9219,6 +9348,8 @@ msgid "" "Failed to export the project for platform '%s'.\n" "Export templates seem to be missing or invalid." msgstr "" +"'%s' platformu için proje dışa aktarılamadı.\n" +"Dışa aktarma ÅŸablonları eksik veya hatalı görünüyor." #: editor/project_export.cpp msgid "" @@ -9226,16 +9357,17 @@ msgid "" "This might be due to a configuration issue in the export preset or your " "export settings." msgstr "" +"'%s' platformu için proje dışa aktarılamadı.\n" +"Bu, dışa aktarma ön ayarlarındaki ya da dışa aktarma ayarlarınızdaki bir " +"yapılandırma sorunundan kaynaklanıyor olabilir." #: editor/project_export.cpp -#, fuzzy msgid "Release" -msgstr "yeni bırakıldı" +msgstr "Yayınlamak" #: editor/project_export.cpp -#, fuzzy msgid "Exporting All" -msgstr "%s için Dışa Aktarım" +msgstr "Tümünü Dışa Aktarma" #: editor/project_export.cpp #, fuzzy @@ -9255,6 +9387,12 @@ msgid "Add..." msgstr "Ekle..." #: 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 #, fuzzy msgid "Export Path" msgstr "Ön Ayarları Dışa Aktar:" @@ -9310,6 +9448,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" @@ -9364,6 +9507,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:" @@ -9645,6 +9797,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" @@ -9734,18 +9891,6 @@ msgid "Device" msgstr "Aygıt" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Denetim+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "Bir Dokunaca Basın..." @@ -10822,9 +10967,8 @@ msgid "Profiler" msgstr "Kesitçi" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Network Profiler" -msgstr "Projeyi Dışa Aktar" +msgstr "AÄŸ Profilcisi" #: editor/script_editor_debugger.cpp msgid "Monitor" @@ -11058,10 +11202,6 @@ msgid "GDNative" msgstr "GDYerel" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "adım deÄŸiÅŸtirgeni sıfır!" @@ -11202,6 +11342,11 @@ msgid "Cursor Clear Rotation" msgstr "İmleç Döndürme Temizle" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Seçimi Sil" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "Seçimi Temizle" @@ -11353,6 +11498,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ı." @@ -11418,16 +11573,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" @@ -11481,10 +11626,6 @@ msgid "Add Preload Node" msgstr "Önyüklenen Düğüm Ekle" #: 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 "AÄŸaçtan Düğüm(ler) Ekle" @@ -11568,7 +11709,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11611,6 +11752,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:" @@ -11816,28 +11972,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 "" @@ -11888,10 +12027,20 @@ msgstr "Açılış ekranı resim dosyası okunamadı." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "Geçersiz sınıf ismi" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "Benzersiz Ad Geçersiz." #: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package publisher display name." +msgstr "Benzersiz Ad Geçersiz." + +#: platform/uwp/export/export.cpp msgid "Invalid product GUID." msgstr "Geçersiz ürün GUID'i." @@ -12542,6 +12691,18 @@ msgstr "DeÄŸiÅŸkenler yalnızca tepe iÅŸlevinde atanabilir." msgid "Constants cannot be modified." msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." +#~ msgid "Pause the scene" +#~ msgstr "Sahneyi duraklat" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Denetim+" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "Izgaraya yapış" @@ -13029,9 +13190,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" @@ -13363,9 +13521,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." #~ msgid "Replace By" #~ msgstr "Åžununla DeÄŸiÅŸtir" -#~ msgid "Case Sensitive" -#~ msgstr "Büyük Küçük Harf Duyarlı" - #~ msgid "Backwards" #~ msgstr "Tersten" @@ -13505,9 +13660,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" @@ -13807,9 +13959,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." #~ msgid "Loading Image:" #~ msgstr "Bediz Yükleniyor:" -#~ msgid "Couldn't load image:" -#~ msgstr "Bediz yüklenemedi:" - #~ msgid "Converting Images" #~ msgstr "Bedizleri Dönüştürüyor" @@ -13988,9 +14137,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez." #~ msgstr "" #~ "Onay belgesi dizeci okunamadı. Yol ve gizyazının her ikisi de doÄŸru mu?" -#~ msgid "Error creating the signature object." -#~ msgstr "İmza nesnesini oluÅŸturmada sorun." - #~ msgid "Error creating the package signature." #~ msgstr "Çıkın imzasını oluÅŸturmada sorun." @@ -14092,9 +14238,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" @@ -14198,9 +14341,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 8b99271a09..4759a2b209 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -1,6 +1,6 @@ # Ukrainian translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Aleksandr <XpycT.TOP@gmail.com>, 2017. # Yuri Chornoivan <yurchor@ukr.net>, 2018, 2019. @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-10-11 15:07+0000\n" -"Last-Translator: Богдан Матвіїв <bomtvv@gmail.com>\n" +"PO-Revision-Date: 2019-12-23 17:07+0000\n" +"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" "Language: 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.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 @@ -36,6 +36,10 @@ msgstr "" "TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "Мало бути вказано Ñ€Ñдок довжини 1 (Ñимвол)." + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." @@ -425,6 +429,10 @@ msgid "Not possible to add a new track without a root" msgstr "Ðе можна додавати нові доріжки без кореневого запиÑу" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "Додати доріжку Безьє" @@ -539,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 "Редагувати" @@ -641,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 @@ -655,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" @@ -728,6 +735,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 +817,10 @@ msgid "Extra Call Arguments:" msgstr "Додаткові аргументи виклику:" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "Метод-отримувач:" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "Додатково" @@ -983,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 "ШлÑÑ…" @@ -1456,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 "Ðазва" @@ -1707,6 +1723,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 "Імпортувати профілі" @@ -1982,6 +2002,15 @@ msgid "Search Help" msgstr "Пошук довідки" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "ЧутливіÑть регіÑтра" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Показати помічники" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Показати уÑе" @@ -2017,6 +2046,29 @@ msgstr "Тип члена" msgid "Class" msgstr "КлаÑ" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Методи" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "Сигнал" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Сталий" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "ВлаÑтивіÑть:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "ВлаÑтивоÑті теми" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "ВлаÑтивіÑть:" @@ -2672,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 "Проєкт" @@ -2899,8 +2952,8 @@ msgid "Play" msgstr "Відтворити" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Призупинити Ñцену" +msgid "Pause the scene execution for debugging." +msgstr "Призупинити Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñцени Ð´Ð»Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтики." #: editor/editor_node.cpp msgid "Pause Scene" @@ -3014,6 +3067,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 "ЕкÑпортувати проєкт" @@ -3070,6 +3127,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 "Підлеглих реÑурÑів не знайдено." @@ -3389,6 +3450,14 @@ msgid "Importing:" msgstr "ІмпортуваннÑ:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3515,6 +3584,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 "Менеджер екÑпорту шаблонів" @@ -3593,6 +3666,10 @@ msgid "New Inherited Scene" msgstr "Ðова уÑпадкована Ñцена" #: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "Ð’Ñтановити головною Ñценою" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Відкрити Ñцени" @@ -4325,6 +4402,18 @@ 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 "Перейменовано вузол" @@ -4556,6 +4645,11 @@ msgid "Move Node" msgstr "ПереÑунути вузол" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Перехід: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Додати перехід" @@ -4640,6 +4734,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" @@ -4894,6 +4992,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 "Перший" @@ -4915,7 +5037,7 @@ msgstr "Ð’Ñе" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "Ðічого не знайдено Ð´Ð»Ñ Â«%s»." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." @@ -5004,6 +5126,14 @@ 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 "ВідÑтуп повороту:" @@ -5012,6 +5142,10 @@ 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 "ПереміÑтити вертикальну напрÑмну" @@ -5084,6 +5218,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 "Тільки прив'Ñзки" @@ -5097,6 +5299,24 @@ 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 "" +"ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ гри\n" +"Замінює камеру гри камерою видимої облаÑті редактора." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ гри\n" +"Ðемає запущеного екземплÑра гри." + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "Заблокувати позначене" @@ -5213,24 +5433,20 @@ msgid "Ruler Mode" msgstr "Режим вимірюваннÑ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "Увімкнути або вимкнути прив'ÑзуваннÑ." +msgstr "Увімкнути або вимкнути кмітливе прив'ÑзуваннÑ." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" -msgstr "За допомогою функції прив'Ñзки" +msgstr "ВикориÑтати кмітливе прив'ÑзуваннÑ" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "Увімкнути або вимкнути прив'ÑзуваннÑ." +msgstr "Увімкнути або вимкнути Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ ґратки." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ ґратки" +msgstr "ВикориÑтати Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ ґратки" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5241,6 +5457,10 @@ 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 "ВідноÑна прив'Ñзка" @@ -5323,9 +5543,8 @@ msgid "View" msgstr "ПереглÑд" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "Показати Ñітку" +msgstr "Завжди показувати ґратку" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" @@ -5381,7 +5600,7 @@ msgstr "Ð’Ñтавити ключові кадри (на оÑнові маÑки #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5593,9 +5812,8 @@ msgid "Hold Shift to edit tangents individually" msgstr "Утримуйте Shift, щоб змінити дотичні окремо" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "Клацніть правою кнопкою миші: видалити точку" +msgstr "Клацніть правою кнопкою миші, щоб додати точку" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" @@ -5730,11 +5948,26 @@ msgstr "Створити Ñітку обведеннÑ" msgid "Outline Size:" msgstr "Розмір обведеннÑ:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° %d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "Оновити зі Ñцени" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "Бібліотека Ñітки" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "Додати елемент" @@ -6368,6 +6601,27 @@ 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 "" +"Щоб цей Ñкрипт можна було запуÑтити, він має уÑпадковуватиÑÑ Ð²Ñ–Ð´ " +"EditorScript Ñ– мати вÑтановлений режим інÑтрумента." + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "Імпортувати тему" @@ -6494,10 +6748,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 "Крок в" @@ -6590,10 +6840,6 @@ msgid "Source" msgstr "Джерело" #: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "Сигнал" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "ПризначеннÑ" @@ -6621,6 +6867,13 @@ msgid "Only resources from filesystem can be dropped." msgstr "Можна перетÑгнути тільки реÑÑƒÑ€Ñ Ð· файлової ÑиÑтеми." #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" +"Ð¡ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð²ÑƒÐ·Ð»Ñ–Ð² Ñ” неможливим, оÑкільки у цій Ñцені не викориÑтовуєтьÑÑ " +"Ñкрипт «%s»." + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "Шукати Ñимвол" @@ -7050,9 +7303,8 @@ msgid "Freelook Speed Modifier" msgstr "Коефіцієнт швидкоÑті оглÑду" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "Коефіцієнт швидкоÑті оглÑду" +msgstr "Модифікатор швидкоÑті довільного оглÑду" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7264,18 +7516,37 @@ msgid "Create Mesh2D" msgstr "Створити Mesh2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду Ñітки" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "Створити Polygon2D" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "Створити CollisionPolygon2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Створити CollisionPolygon2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "Створити LightOccluder2D" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Створити LightOccluder2D" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Спрайт порожній!" @@ -7326,9 +7597,8 @@ msgid "Simplification: " msgstr "СпрощеннÑ: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Shrink (Pixels): " -msgstr "ЗроÑÑ‚Ð°Ð½Ð½Ñ (пікÑелі): " +msgstr "СтиÑÐºÐ°Ð½Ð½Ñ (пікÑелі): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7355,6 +7625,11 @@ msgid "Add Frame" msgstr "Додати кадр" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑурÑ." + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "Помилка: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑÑƒÑ€Ñ ÐºÐ°Ð´Ñ€Ñƒ!" @@ -7628,6 +7903,7 @@ msgid "Data Type:" msgstr "Тип даних:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "Піктограма" @@ -7644,8 +7920,8 @@ msgid "Color" msgstr "Колір" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Сталий" +msgid "Theme File" +msgstr "Файл теми" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7757,6 +8033,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 "ÐаÑтупна координата" @@ -7773,6 +8061,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 "Z-індекÑ" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" msgstr "Режим облаÑті" @@ -8003,6 +8319,16 @@ msgid "Edit Tile Z Index" msgstr "Редагувати z-Ñ–Ð½Ð´ÐµÐºÑ Ð¿Ð»Ð¸Ñ‚ÐºÐ¸" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Convex" +msgstr "Зробити полігон опуклим" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Зробити полігон увігнутим" + +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" msgstr "Створити полігон зіткненнÑ" @@ -8117,9 +8443,8 @@ msgid "(GLES3 only)" msgstr "(лише GLES3)" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "Додати вихід +" +msgstr "Додати вихід" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8135,7 +8460,7 @@ msgstr "Булеве" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sampler" -msgstr "" +msgstr "Зразок" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8267,8 +8592,8 @@ msgid "Dodge operator." msgstr "Оператор виÑвітленнÑ." #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "Оператор ÑÑкравого Ñвітла" +msgid "HardLight operator." +msgstr "Оператор ÑÑкравого Ñвітла." #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -8910,9 +9235,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" "Ðетиповий вираз мовою шейдерів Godot, Ñкий буде додано над отриманим " "шейдером. Ви можете розташовувати різні Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ вÑередині коду Ñ– " @@ -8991,6 +9317,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» зі ÑпиÑку?" @@ -9042,6 +9376,14 @@ 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 "" +"Якщо позначено, набором можна буде ÑкориÑтатиÑÑ Ð² одне клацаннÑ.\n" +"Придатним до запуÑку можна визначати лише один набір на одну платформу." + +#: editor/project_export.cpp msgid "Export Path" msgstr "ШлÑÑ… екÑпорту" @@ -9070,22 +9412,20 @@ msgid "Resources to export:" msgstr "ЕкÑпортовані реÑурÑи:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Фільтри екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², Ñкі не міÑÑ‚Ñть реÑурÑів (з відокремленнÑм " -"комами, приклад: *.json, *.txt)" +"Фільтри екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² або тек, Ñкі не міÑÑ‚Ñть реÑурÑів\n" +"(з відокремленнÑм комами, приклад: *.json, *.txt, docs/*)" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" msgstr "" -"Фільтри Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² з проєкту (з відокремленнÑм комами, приклад: *." -"json, *.txt)" +"Фільтри Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² або тек з проєкту\n" +"(з відокремленнÑм комами, приклад: *.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -9096,6 +9436,10 @@ msgid "Make Patch" msgstr "Створити латку" #: editor/project_export.cpp +msgid "Pack File" +msgstr "Файл пакунка" + +#: editor/project_export.cpp msgid "Features" msgstr "МожливоÑті" @@ -9147,6 +9491,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 "Ðемає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— платформи:" @@ -9451,6 +9803,10 @@ msgid "Projects" msgstr "Проєкти" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "ВоÑтаннє змінено" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Сканувати" @@ -9535,18 +9891,6 @@ msgid "Device" msgstr "ПриÑтрій" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Ctrl+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "ÐатиÑніть клавішу,..." @@ -10131,13 +10475,12 @@ msgstr "" "уÑÑ–Ñ… влаÑтивоÑтей вузла." #: 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 "" -"Ð’Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Â«editable_instance» призведе до Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… значень Ð´Ð»Ñ " -"уÑÑ–Ñ… влаÑтивоÑтей вузла." +"Ð’Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Â«Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñк заповнювач» призведе до Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Â«Ð ÐµÐ´Ð°Ð³Ð¾Ð²Ð°Ð½Ñ– " +"дочірні об'єкти» Ñ– Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… значень Ð´Ð»Ñ ÑƒÑÑ–Ñ… влаÑтивоÑтей вузла." #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -10476,19 +10819,16 @@ msgid "Will load an existing script file." msgstr "Завантажити наÑвний файл Ñкрипту." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "Ðазва клаÑу" +msgstr "Ðазва клаÑу:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "Шаблон" +msgstr "Шаблон:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "Вбудований Ñкрипт" +msgstr "Вбудований Ñкрипт:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10791,10 +11131,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "Мало бути вказано Ñ€Ñдок довжини 1 (Ñимвол)." - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "Ðргумент кроку дорівнює нулеві!" @@ -10933,6 +11269,11 @@ msgid "Cursor Clear Rotation" msgstr "ЗнÑти Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð· вказівника" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Витерти позначене" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "ОчиÑтити позначене" @@ -11082,6 +11423,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 "ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ñвної вбудованої функції." @@ -11130,7 +11479,6 @@ msgid "Add Function" msgstr "Додати функцію" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" msgstr "Вилучити вхідний порт" @@ -11143,22 +11491,10 @@ msgid "Add Signal" 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 "Вилучити вхідний порт" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" msgstr "Вилучити вихідний порт" @@ -11207,10 +11543,6 @@ 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 "Додати вузли з дерева" @@ -11219,6 +11551,10 @@ 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" @@ -11245,9 +11581,8 @@ msgid "Connect Nodes" msgstr "Приєднати вузли" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "Роз'єднати вузли графу" +msgstr "Від'єднати вузли" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11282,26 +11617,25 @@ msgid "Paste VisualScript Nodes" msgstr "Ð’Ñтавити вузли (Візуального Ñкриптингу) VisualScript" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "Ðеможливо Ñкопіювати вузол функції." +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 atleast one node with sequence port." -msgstr "" +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 -#, fuzzy msgid "Create Function" -msgstr "Перейменувати функцію" +msgstr "Створити функцію" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11332,9 +11666,20 @@ 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 "ФункціÑ:" +msgstr "назва_функції" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11357,14 +11702,12 @@ msgid "Cut Nodes" msgstr "Вирізати вузли" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "Перейменувати функцію" +msgstr "Створити функцію" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "Оновити" +msgstr "Оновити граф" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11555,30 +11898,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 — проєкт неможливо налаштувати." @@ -11593,7 +11916,7 @@ msgstr "У шаблоні не вказано потрібної піктогрР#: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "Зупинити HTTP-Ñервер" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11628,10 +11951,18 @@ 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 "Ðекоректний GUID продукту." @@ -12296,6 +12627,34 @@ 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 "Призупинити Ñцену" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Ctrl+" + #~ msgid "Snap to Grid" #~ msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ Ñітки" @@ -12940,9 +13299,6 @@ msgstr "Сталі не можна змінювати." #~ msgid "Rotate 270 degrees" #~ msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 270 градуÑів" -#~ msgid "Warning" -#~ msgstr "ПопередженнÑ" - #~ msgid "Variable" #~ msgstr "Змінна" @@ -13272,9 +13628,6 @@ msgstr "Сталі не можна змінювати." #~ msgid "Replace By" #~ msgstr "Замінити на" -#~ msgid "Case Sensitive" -#~ msgstr "ЧутливіÑть регіÑтра" - #~ msgid "Backwards" #~ msgstr "Ðазад" diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index c68843bd77..ec8d92827e 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -1,6 +1,6 @@ # Urdu (Pakistan) translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # # Muhammad Ali <ali@codeonion.com>, 2016. @@ -27,6 +27,10 @@ msgstr "" ".استمال کیجۓ TYPE_* constants .Ú©Û’ لیے غلط Ûیں convert() دیے گئے ارگمنٹس." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -414,6 +418,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp msgid "Add Bezier Track" msgstr "" @@ -515,8 +523,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 +713,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 +796,10 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +msgid "Receiver Method:" +msgstr "" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -959,7 +976,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 +1446,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 +1696,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 "" @@ -1955,6 +1977,14 @@ msgid "Search Help" msgstr "" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Show Hierarchy" +msgstr "" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "" @@ -1990,6 +2020,28 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +msgid "Method" +msgstr "" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr ".تمام کا انتخاب" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Property" +msgstr "" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr ".تمام کا انتخاب" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2603,7 +2655,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 "" @@ -2813,7 +2866,7 @@ msgid "Play" msgstr "" #: editor/editor_node.cpp -msgid "Pause the scene" +msgid "Pause the scene execution for debugging." msgstr "" #: editor/editor_node.cpp @@ -2917,6 +2970,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 +3032,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 "" @@ -3286,6 +3348,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3410,6 +3480,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 "" @@ -3490,6 +3565,11 @@ msgstr "سب سکریپشن بنائیں" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "ایک مینو منظر چنیں" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "سب سکریپشن بنائیں" @@ -4221,6 +4301,19 @@ msgid "" 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 +#, fuzzy +msgid "Functions" +msgstr ".تمام کا انتخاب" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "" @@ -4455,6 +4548,10 @@ msgid "Move Node" msgstr "ایکشن منتقل کریں" #: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition exists!" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "" @@ -4537,6 +4634,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" @@ -4791,6 +4893,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 "" @@ -4896,6 +5022,14 @@ 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 "" @@ -4905,6 +5039,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "ایکشن منتقل کریں" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "سب سکریپشن بنائیں" @@ -4981,6 +5120,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 "" @@ -4994,6 +5201,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr ".تمام کا انتخاب" @@ -5137,6 +5358,10 @@ 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 "" @@ -5277,7 +5502,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5624,11 +5849,25 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6268,6 +6507,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 "" @@ -6397,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 "" @@ -6493,11 +6745,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr ".تمام کا انتخاب" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6524,6 +6771,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7168,21 +7420,39 @@ msgid "Create Mesh2D" msgstr "سب سکریپشن بنائیں" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Mesh2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create Polygon2D" msgstr "سب سکریپشن بنائیں" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "سب سکریپشن بنائیں" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "سب سکریپشن بنائیں" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7262,6 +7532,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7541,6 +7815,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7557,8 +7832,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "" +#, fuzzy +msgid "Theme File" +msgstr "سب سکریپشن بنائیں" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -7672,6 +7948,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 "سب سکریپشن بنائیں" @@ -7690,6 +7978,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 "ایکشن منتقل کریں" @@ -7919,6 +8239,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "سب سکریپشن بنائیں" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "سب سکریپشن بنائیں" @@ -8197,7 +8527,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8788,9 +9118,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8854,6 +9185,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 +9238,12 @@ 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 "" @@ -8947,6 +9292,10 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +msgid "Pack File" +msgstr "" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -8999,6 +9348,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 "" @@ -9261,6 +9619,10 @@ msgid "Projects" msgstr ".تمام کا انتخاب" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9343,18 +9705,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10591,10 +10941,6 @@ msgid "GDNative" msgstr "" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "سٹیپ Ú©Û’ ارگمنٹس Ø³ÙØ± Ûیں!" @@ -10736,6 +11082,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr ".تمام کا انتخاب" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr ".تمام کا انتخاب" @@ -10880,6 +11231,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 "" @@ -10946,16 +11307,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 ".تمام کا انتخاب" @@ -11005,10 +11356,6 @@ 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 "" @@ -11089,7 +11436,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11132,6 +11479,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 "" @@ -11330,27 +11692,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 "" @@ -11400,10 +11745,18 @@ 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 "" diff --git a/editor/translations/vi.po b/editor/translations/vi.po index f3570ad0ff..4a733f81ac 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -1,6 +1,6 @@ # Vietnamese translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # 01lifeleft <01lifeleft@gmail.com>, 2018. # Dlean Jeans <dleanjeans@gmail.com>, 2018. @@ -33,6 +33,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Hà m convert() có đối số không hợp lệ, sá» dụng các hằng TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -425,6 +429,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "Thêm Track Animation" @@ -532,8 +540,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 +732,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 +814,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 +996,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 +1470,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 +1715,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Æ¡" @@ -1969,6 +1993,16 @@ msgid "Search Help" msgstr "Tìm sá»± giúp đỡ" #: editor/editor_help_search.cpp +#, fuzzy +msgid "Case Sensitive" +msgstr "Äóng Cảnh" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "Tìm kiếm" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "Hiển thị tất cả" @@ -2004,6 +2038,30 @@ msgstr "Loại" msgid "Class" msgstr "Lá»›p" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "Hà m" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "TÃn hiệu" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Cố định" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "Thuá»™c tÃnh:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "Thuá»™c tÃnh:" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "Thuá»™c tÃnh:" @@ -2646,7 +2704,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" @@ -2866,8 +2925,8 @@ msgid "Play" msgstr "Chạy" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "Tạm dừng cảnh" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -2971,6 +3030,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 +3091,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 "" @@ -3340,6 +3409,14 @@ msgid "Importing:" msgstr "" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3465,6 +3542,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 "" @@ -3542,6 +3624,11 @@ msgid "New Inherited Scene" msgstr "Tạo Cảnh kế thừa má»›i" #: editor/filesystem_dock.cpp +#, fuzzy +msgid "Set As Main Scene" +msgstr "Chá»n má»™t Scene chÃnh" + +#: editor/filesystem_dock.cpp msgid "Open Scenes" msgstr "Mở cảnh" @@ -4274,6 +4361,21 @@ msgstr "" "TrÃnh phát hoạt ảnh không có đưá»ng dẫn nút Gốc, không thể truy xuất tên." #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "Âm thanh:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "Âm thanh:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "Hà m:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "Node Renamed" msgstr "Nút đã đổi tên" @@ -4505,6 +4607,11 @@ msgid "Move Node" msgstr "Di chuyển Nút" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "Chuyển tiếp: " + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "Thêm Chuyển tiếp" @@ -4589,6 +4696,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" @@ -4850,6 +4962,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" @@ -4956,6 +5094,15 @@ msgid "Grid Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2 bước" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "" @@ -4964,6 +5111,11 @@ msgid "Rotation Step:" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Scale Step:" +msgstr "Tá»· lệ:" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Vertical Guide" msgstr "" @@ -5040,6 +5192,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" @@ -5053,6 +5276,20 @@ msgstr "Äổi các Neo" #: 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 "Khoá lá»±a chá»n" @@ -5193,6 +5430,11 @@ msgid "Use Rotation Snap" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Use Scale Snap" +msgstr "Sá» dụng Snap" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" msgstr "" @@ -5334,7 +5576,7 @@ msgstr "Chèn Key Anim" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5681,11 +5923,26 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#, 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 "" @@ -6329,6 +6586,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 "" @@ -6460,10 +6734,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 "" @@ -6557,11 +6827,6 @@ msgid "Source" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "TÃn hiệu" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6590,6 +6855,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7240,20 +7510,39 @@ msgstr "Tạo %s Má»›i" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "Xem thá»" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "Tạo" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "Tạo" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "Tạo" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "Tạo Folder" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "Tạo Folder" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "" @@ -7333,6 +7622,10 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Unable to load images" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7619,6 +7912,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7635,8 +7929,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "Cố định" +#, fuzzy +msgid "Theme File" +msgstr "Mở" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7752,6 +8047,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 "" @@ -7769,6 +8078,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 "" @@ -7999,6 +8340,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "Tạo" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "Tạo" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "Tạo" @@ -8288,7 +8639,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -8883,9 +9234,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -8949,6 +9301,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 "" @@ -8994,6 +9355,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "Xuất Tile Set" @@ -9043,6 +9410,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " Tệp tin" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9098,6 +9470,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 "" @@ -9359,6 +9740,10 @@ msgid "Projects" msgstr "Dá»± án" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "Quét" @@ -9445,18 +9830,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -10706,10 +11079,6 @@ 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 "" @@ -10849,6 +11218,11 @@ msgid "Cursor Clear Rotation" msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "Chá»n tất cả" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "" @@ -10993,6 +11367,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 "" @@ -11058,16 +11442,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" @@ -11117,10 +11491,6 @@ 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 "" @@ -11202,7 +11572,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11244,6 +11614,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:" @@ -11443,27 +11828,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 "" @@ -11514,11 +11882,21 @@ msgstr "Sá» dụng hình khởi động mặc định." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "KÃch thước font không hợp lệ." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "KÃch thước font không hợp lệ." #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "KÃch thước font không hợp lệ." + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "KÃch thước font không hợp lệ." @@ -12057,6 +12435,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Không thể chỉnh sá»a hằng số." +#~ msgid "Pause the scene" +#~ msgstr "Tạm dừng cảnh" + #~ msgid "Snap to Grid" #~ msgstr "Snap dạng lưới" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index 86aa897888..ac9b2e4be6 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -1,6 +1,6 @@ # Chinese (Simplified) translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # 360119124 <360119124@qq.com>, 2018. # æŸ æª¬æ€æ‰‹ <lemonkiller@gmail.com>, 2018. @@ -58,12 +58,13 @@ # idleman <1524328475@qq.com>, 2019. # king <wangding1992@126.com>, 2019. # silentbird <silentbird520@outlook.com>, 2019. +# Haoyu Qiu <timothyqiu32@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2019-10-22 02:53+0000\n" -"Last-Translator: idleman <1524328475@qq.com>\n" +"PO-Revision-Date: 2019-12-30 17:25+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" "Language: zh_CN\n" @@ -71,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.9.1-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 @@ -79,18 +80,22 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "convert()çš„å‚æ•°ç±»åž‹æ— 效,请使用TYPE_*常é‡ã€‚" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "预期为长度为1çš„å—符串(一个å—符)。" + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "è§£ç çš„å—节ä¸è¶³ï¼Œæˆ–æ— æ•ˆçš„æ ¼å¼ã€‚" +msgstr "è§£ç çš„å—节ä¸è¶³ï¼Œæˆ–æ ¼å¼æ— 效。" #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "表达å¼ä¸æœ‰æ— 效输入 %i (未通过)" +msgstr "表达å¼ä¸çš„输入 %i æ— æ•ˆï¼ˆæœªä¼ é€’ï¼‰" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "selfæ— æ³•ä½¿ç”¨å› ä¸ºå®žä¾‹ä¸ºç©º(未通过)" +msgstr "self æ— æ³•ä½¿ç”¨ï¼Œå› ä¸ºå®žä¾‹ä¸ºç©ºï¼ˆæœªä¼ é€’ï¼‰" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -98,19 +103,19 @@ msgstr "æ“作符 %s çš„æ“作数 %s å’Œ %s æ— æ•ˆã€‚" #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "类型 %s (基类 %s) çš„ç´¢å¼•æ— æ•ˆ" +msgstr "å°† %s 类型作为 %s åŸºç¡€ç±»åž‹çš„ç´¢å¼•æ— æ•ˆ" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -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" @@ -118,27 +123,27 @@ msgstr "B" #: core/ustring.cpp msgid "KiB" -msgstr "KB" +msgstr "KiB" #: core/ustring.cpp msgid "MiB" -msgstr "MB" +msgstr "MiB" #: core/ustring.cpp msgid "GiB" -msgstr "GB" +msgstr "GiB" #: core/ustring.cpp msgid "TiB" -msgstr "TB" +msgstr "TiB" #: core/ustring.cpp msgid "PiB" -msgstr "PB" +msgstr "PiB" #: core/ustring.cpp msgid "EiB" -msgstr "EB" +msgstr "EiB" #: editor/animation_bezier_editor.cpp msgid "Free" @@ -146,7 +151,7 @@ msgstr "自由" #: editor/animation_bezier_editor.cpp msgid "Balanced" -msgstr "平衡的" +msgstr "平衡" #: editor/animation_bezier_editor.cpp msgid "Mirror" @@ -154,7 +159,7 @@ msgstr "镜åƒ" #: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp msgid "Time:" -msgstr "æ—¶é—´:" +msgstr "时间:" #: editor/animation_bezier_editor.cpp msgid "Value:" @@ -162,15 +167,15 @@ msgstr "值:" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" -msgstr "æ¤å¤„æ’入帧" +msgstr "æ¤å¤„æ’入关键帧" #: editor/animation_bezier_editor.cpp msgid "Duplicate Selected Key(s)" -msgstr "å¤åˆ¶å·²é€‰å¸§" +msgstr "å¤åˆ¶æ‰€é€‰å…³é”®å¸§" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" -msgstr "åˆ é™¤å·²é€‰å¸§" +msgstr "åˆ é™¤æ‰€é€‰å…³é”®å¸§" #: editor/animation_bezier_editor.cpp msgid "Add Bezier Point" @@ -182,15 +187,15 @@ msgstr "移动è´å¡žå°”顶点" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "动画å¤åˆ¶å…³é”®å¸§" +msgstr "å¤åˆ¶åŠ¨ç”»å…³é”®å¸§" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" -msgstr "åŠ¨ç”»åˆ é™¤å…³é”®å¸§" +msgstr "åˆ é™¤åŠ¨ç”»å…³é”®å¸§" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "修改动画关键帧的时长" +msgstr "修改动画关键帧的时间" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" @@ -206,11 +211,11 @@ msgstr "修改动画关键帧的值" #: editor/animation_track_editor.cpp msgid "Anim Change Call" -msgstr "修改回调" +msgstr "修改动画回调" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Keyframe Time" -msgstr "修改多个动画关键帧的时长" +msgstr "修改多个动画关键帧的时间" #: editor/animation_track_editor.cpp msgid "Anim Multi Change Transition" @@ -247,19 +252,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)" @@ -280,7 +285,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:" @@ -340,7 +345,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 @@ -390,11 +395,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 @@ -418,7 +423,7 @@ msgstr "åŠ¨ç”»æ’æ”¾å™¨ä¸èƒ½å¯¹è‡ªå·±åšåŠ¨ç”»ï¼Œåªæœ‰å…¶å®ƒæ’放器æ‰å¯ä»¥ #: editor/animation_track_editor.cpp msgid "Anim Create & Insert" -msgstr "创建|æ’入动画" +msgstr "创建并æ’入动画" #: editor/animation_track_editor.cpp msgid "Anim Insert Track & Key" @@ -462,7 +467,11 @@ 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 "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" #: editor/animation_track_editor.cpp msgid "Add Bezier Track" @@ -565,14 +574,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 "编辑" @@ -602,7 +612,7 @@ msgstr "å¤åˆ¶å¹¶è½¬ç½®" #: editor/animation_track_editor.cpp msgid "Delete Selection" -msgstr "åˆ é™¤å·²é€‰ä¸é¡¹" +msgstr "åˆ é™¤é€‰ä¸é¡¹" #: editor/animation_track_editor.cpp msgid "Go to Next Step" @@ -673,9 +683,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 @@ -687,9 +696,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" @@ -733,7 +741,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" @@ -760,6 +768,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 @@ -829,11 +841,15 @@ 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 +msgid "Receiver Method:" +msgstr "接收方法:" #: editor/connections_dialog.cpp msgid "Advanced" @@ -881,7 +897,7 @@ msgstr "连接" #: editor/connections_dialog.cpp msgid "Signal:" -msgstr "ä¿¡å·:" +msgstr "ä¿¡å·ï¼š" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" @@ -930,7 +946,7 @@ msgstr "å–æ¶ˆæ‰€æœ‰å¹¿æ’ä¿¡å·è¿žæŽ¥" #: editor/connections_dialog.cpp msgid "Edit..." -msgstr "编辑…" +msgstr "编辑..." #: editor/connections_dialog.cpp msgid "Go To Method" @@ -946,16 +962,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 @@ -1009,7 +1025,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 "路径" @@ -1027,7 +1043,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 @@ -1120,7 +1136,7 @@ msgstr "改å˜å—典的值" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" -msgstr "感谢Godot社区!" +msgstr "Godot社区致谢ï¼" #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -1148,15 +1164,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" @@ -1172,7 +1188,7 @@ msgstr "é’铜æèµ 者" #: editor/editor_about.cpp msgid "Donors" -msgstr "æåŠ©" +msgstr "æåŠ©è€…" #: editor/editor_about.cpp msgid "License" @@ -1180,7 +1196,7 @@ msgstr "许å¯è¯" #: editor/editor_about.cpp msgid "Third-party Licenses" -msgstr "第三方许å¯" +msgstr "第三方许å¯è¯" #: editor/editor_about.cpp msgid "" @@ -1210,7 +1226,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!" @@ -1239,23 +1255,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" @@ -1291,7 +1307,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 @@ -1312,11 +1328,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" @@ -1336,7 +1352,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..." @@ -1344,7 +1360,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." @@ -1356,11 +1372,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." @@ -1382,7 +1398,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" @@ -1398,11 +1414,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." @@ -1476,13 +1492,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" @@ -1516,7 +1533,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 @@ -1528,7 +1545,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" @@ -1598,7 +1615,7 @@ msgstr "脚本编辑器" #: editor/editor_feature_profile.cpp msgid "Asset Library" -msgstr "资产库" +msgstr "ç´ æåº“" #: editor/editor_feature_profile.cpp msgid "Scene Tree Editing" @@ -1718,6 +1735,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 "导入é…置文件" @@ -1731,7 +1752,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?" @@ -1743,7 +1764,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" @@ -1816,7 +1837,7 @@ msgstr "åˆ‡æ¢æ˜¾ç¤ºéšè—文件" #: editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "åˆ‡æ¢æ”¶è—" +msgstr "开关收è—" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" @@ -1868,7 +1889,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 @@ -1882,7 +1903,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" @@ -1896,7 +1917,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" @@ -1909,15 +1930,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" @@ -1957,8 +1978,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" @@ -1969,8 +1990,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" @@ -1981,8 +2002,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 @@ -1990,12 +2011,21 @@ msgid "Search Help" msgstr "æœç´¢å¸®åŠ©" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "区分大å°å†™" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "显示辅助信æ¯" + +#: editor/editor_help_search.cpp msgid "Display All" msgstr "全部显示" #: editor/editor_help_search.cpp msgid "Classes Only" -msgstr "ä»…é™ç±»" +msgstr "ä»…ç±»" #: editor/editor_help_search.cpp msgid "Methods Only" @@ -2025,6 +2055,29 @@ msgstr "æˆå‘˜ç±»åž‹" msgid "Class" msgstr "ç±»" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "方法" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +msgid "Signal" +msgstr "ä¿¡å·" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "常é‡" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "属性:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "主题属性" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "属性:" @@ -2103,7 +2156,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." @@ -2116,7 +2169,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!" @@ -2146,23 +2199,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" @@ -2174,7 +2227,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." @@ -2200,19 +2253,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!" @@ -2312,11 +2365,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." @@ -2336,7 +2389,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." @@ -2344,7 +2397,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." @@ -2352,15 +2405,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." @@ -2372,7 +2425,7 @@ msgstr "æ¢å¤" #: editor/editor_node.cpp msgid "This action cannot be undone. Revert anyway?" -msgstr "æ¤æ“ä½œæ— æ³•æ’¤é”€ï¼Œç¡®å®šè¦ç»§ç»å—?" +msgstr "æ¤æ“ä½œæ— æ³•æ’¤é”€ï¼Œæ˜¯å¦ç»§ç»ï¼Ÿ" #: editor/editor_node.cpp msgid "Quick Run Scene..." @@ -2426,7 +2479,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'." @@ -2452,15 +2505,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:" @@ -2485,8 +2539,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 "" @@ -2494,8 +2548,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" @@ -2545,15 +2599,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" @@ -2585,11 +2639,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..." @@ -2605,7 +2659,7 @@ msgstr "新建场景" #: editor/editor_node.cpp msgid "New Inherited Scene..." -msgstr "新建继承的场景…" +msgstr "新建继承场景..." #: editor/editor_node.cpp msgid "Open Scene..." @@ -2629,11 +2683,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 @@ -2651,9 +2705,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 "项目" @@ -2691,7 +2746,7 @@ msgstr "工具" #: editor/editor_node.cpp msgid "Orphan Resource Explorer..." -msgstr "å•ä¸€èµ„æºæµè§ˆå™¨..." +msgstr "å¤ç«‹èµ„æºæµè§ˆå™¨..." #: editor/editor_node.cpp msgid "Quit to Project List" @@ -2715,7 +2770,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "å°åž‹éƒ¨ç½²ä¸Žç½‘络文件系统" +msgstr "使用网络文件系统进行å°åž‹éƒ¨ç½²" #: editor/editor_node.cpp msgid "" @@ -2728,12 +2783,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 "" @@ -2743,7 +2797,7 @@ msgstr "如果å¯ç”¨æ¤é¡¹ï¼ŒèŠ‚ç‚¹çš„ç¢°æ’žåŒºåŸŸå’Œraycast将在游æˆè¿è¡Œæ— #: editor/editor_node.cpp msgid "Visible Navigation" -msgstr "å¯è§å¯¼èˆª" +msgstr "显示导航" #: editor/editor_node.cpp msgid "" @@ -2797,7 +2851,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" @@ -2809,7 +2863,7 @@ msgstr "系统命令行模å¼" #: editor/editor_node.cpp msgid "Open Editor Data/Settings Folder" -msgstr "打开“编辑器设置/æ•°æ®\"文件夹" +msgstr "打开“编辑器数æ®/è®¾ç½®â€æ–‡ä»¶å¤¹" #: editor/editor_node.cpp msgid "Open Editor Data Folder" @@ -2863,27 +2917,27 @@ 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" -msgstr "æš‚åœè¿è¡Œåœºæ™¯" +msgid "Pause the scene execution for debugging." +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" @@ -2920,7 +2974,7 @@ msgstr "当有更改时更新" #: editor/editor_node.cpp msgid "Hide Update Spinner" -msgstr "éšè—更新微调" +msgstr "éšè—更新旋转图" #: editor/editor_node.cpp msgid "FileSystem" @@ -2928,7 +2982,7 @@ msgstr "文件系统" #: editor/editor_node.cpp msgid "Inspector" -msgstr "å±žæ€§é¢æ¿" +msgstr "属性" #: editor/editor_node.cpp msgid "Expand Bottom Panel" @@ -2936,7 +2990,7 @@ msgstr "å±•å¼€åº•éƒ¨é¢æ¿" #: editor/editor_node.cpp msgid "Output" -msgstr "日志" +msgstr "输出" #: editor/editor_node.cpp msgid "Don't Save" @@ -2960,10 +3014,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 "" @@ -2972,13 +3027,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 "导出项目" @@ -3001,7 +3060,7 @@ msgstr "打开并è¿è¡Œè„šæœ¬" #: editor/editor_node.cpp msgid "New Inherited" -msgstr "从现有场景ä¸åˆ›å»º" +msgstr "新建继承" #: editor/editor_node.cpp msgid "Load Errors" @@ -3025,7 +3084,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" @@ -3035,6 +3094,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 "找ä¸åˆ°å资æºã€‚" @@ -3090,15 +3153,15 @@ msgstr "帧时间(秒)" #: editor/editor_profiler.cpp msgid "Average Time (sec)" -msgstr "å¹³å‡å¸§æ—¶é—´ï¼ˆç§’)" +msgstr "平凿—¶é—´ï¼ˆç§’)" #: editor/editor_profiler.cpp msgid "Frame %" -msgstr "渲染速度" +msgstr "帧 %" #: editor/editor_profiler.cpp msgid "Physics Frame %" -msgstr "物ç†å¸§é€Ÿçއ %" +msgstr "物ç†å¸§ %" #: editor/editor_profiler.cpp msgid "Inclusive" @@ -3110,7 +3173,7 @@ msgstr "自身" #: editor/editor_profiler.cpp msgid "Frame #:" -msgstr "帧åºå·:" +msgstr "帧å·ï¼š" #: editor/editor_profiler.cpp msgid "Time" @@ -3118,7 +3181,7 @@ msgstr "æ—¶é—´" #: editor/editor_profiler.cpp msgid "Calls" -msgstr "调用次数" +msgstr "调用" #: editor/editor_properties.cpp msgid "Edit Text:" @@ -3134,7 +3197,7 @@ msgstr "层" #: editor/editor_properties.cpp msgid "Bit %d, value %d" -msgstr "æ¯”ç‰¹ä½ %d ,值 %d" +msgstr "第%dä½ï¼Œå€¼ä¸º%d" #: editor/editor_properties.cpp msgid "[Empty]" @@ -3142,11 +3205,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 "" @@ -3169,12 +3232,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" @@ -3212,11 +3275,11 @@ msgstr "转æ¢ä¸º%s" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Selected node is not a Viewport!" -msgstr "é€‰å®šçš„èŠ‚ç‚¹ä¸æ˜¯ä¸€ä¸ªViewport节点ï¼" +msgstr "é€‰å®šçš„ä¸æ˜¯Viewport节点ï¼" #: editor/editor_properties_array_dict.cpp msgid "Size: " -msgstr "尺寸: " +msgstr "大å°ï¼š " #: editor/editor_properties_array_dict.cpp msgid "Page: " @@ -3229,7 +3292,7 @@ msgstr "移除项目" #: editor/editor_properties_array_dict.cpp msgid "New Key:" -msgstr "新建帧:" +msgstr "新建键:" #: editor/editor_properties_array_dict.cpp msgid "New Value:" @@ -3237,15 +3300,15 @@ msgstr "新建值:" #: editor/editor_properties_array_dict.cpp msgid "Add Key/Value Pair" -msgstr "æ·»åŠ å¸§/值对" +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 "" -"没有这个平å°çš„导出é…置。\n" -"请在导出èœå•䏿·»åŠ é…置。" +"没有对应该平å°çš„坿‰§è¡Œå¯¼å‡ºé¢„设。\n" +"请在导出èœå•䏿·»åР坿‰§è¡Œé¢„设。" #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -3297,7 +3360,7 @@ msgstr "å¸è½½" #: editor/export_template_manager.cpp msgid "(Installed)" -msgstr "(安装)" +msgstr "(已安装)" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3310,11 +3373,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..." @@ -3330,7 +3393,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." @@ -3349,6 +3412,15 @@ msgid "Importing:" msgstr "导入:" #: editor/export_template_manager.cpp +#, fuzzy +msgid "Error getting the list of mirrors." +msgstr "创建包(PCK)ç¾å对象出错。" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3471,6 +3543,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 "模æ¿å¯¼å‡ºå·¥å…·" @@ -3484,7 +3560,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." @@ -3544,7 +3620,11 @@ msgstr "å¤åˆ¶æ–‡ä»¶å¤¹:" #: editor/filesystem_dock.cpp msgid "New Inherited Scene" -msgstr "新继承的场景" +msgstr "新建继承场景" + +#: editor/filesystem_dock.cpp +msgid "Set As Main Scene" +msgstr "设为主场景" #: editor/filesystem_dock.cpp msgid "Open Scenes" @@ -3556,11 +3636,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..." @@ -3588,11 +3668,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 @@ -3645,7 +3725,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" @@ -3708,7 +3788,7 @@ msgstr "全部替æ¢ï¼ˆæ— 法撤销)" #: editor/find_in_files.cpp msgid "Searching..." -msgstr "æœç´¢ä¸â€¦" +msgstr "æœç´¢ä¸..." #: editor/find_in_files.cpp msgid "Search complete" @@ -3740,11 +3820,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 @@ -3757,11 +3837,11 @@ msgstr "分组ä¸çš„节点" #: editor/groups_editor.cpp msgid "Empty groups will be automatically removed." -msgstr "空的分组会自动移除。" +msgstr "空的分组会被自动移除。" #: editor/groups_editor.cpp msgid "Group Editor" -msgstr "分组编辑" +msgstr "分组编辑器" #: editor/groups_editor.cpp msgid "Manage Groups" @@ -3834,7 +3914,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:" @@ -3846,7 +3926,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'" @@ -3862,7 +3942,7 @@ msgstr "导入为:" #: editor/import_dock.cpp msgid "Preset" -msgstr "预置" +msgstr "预设" #: editor/import_dock.cpp msgid "Reimport" @@ -3879,7 +3959,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." @@ -3912,19 +3992,19 @@ msgstr "编辑资æºå‰ªè´´æ¿" #: editor/inspector_dock.cpp msgid "Copy Resource" -msgstr "æ‹·è´èµ„æº" +msgstr "å¤åˆ¶èµ„æº" #: editor/inspector_dock.cpp msgid "Make Built-In" -msgstr "使之内置" +msgstr "转为内置" #: editor/inspector_dock.cpp msgid "Make Sub-Resources Unique" -msgstr "转æ¢ä¸ºç‹¬ç«‹å资æº" +msgstr "转为独立å资æº" #: editor/inspector_dock.cpp msgid "Open in Help" -msgstr "查看帮助" +msgstr "åœ¨å¸®åŠ©ä¸æ‰“å¼€" #: editor/inspector_dock.cpp msgid "Create a new resource in memory and edit it." @@ -3956,7 +4036,7 @@ msgstr "对象属性。" #: editor/inspector_dock.cpp msgid "Filter properties" -msgstr "属性ç›é€‰" +msgstr "ç›é€‰å±žæ€§" #: editor/inspector_dock.cpp msgid "Changes may be lost!" @@ -4241,7 +4321,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" @@ -4260,7 +4340,19 @@ 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" +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 @@ -4270,7 +4362,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 @@ -4279,7 +4371,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" @@ -4338,7 +4430,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!" @@ -4366,7 +4458,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)" @@ -4382,7 +4474,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" @@ -4395,7 +4487,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" @@ -4423,7 +4515,7 @@ msgstr "æ–¹å‘" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Past" -msgstr "穿过" +msgstr "过去" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Future" @@ -4493,6 +4585,11 @@ msgid "Move Node" msgstr "移动节点" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy +msgid "Transition exists!" +msgstr "过渡" + +#: editor/plugins/animation_state_machine_editor.cpp msgid "Add Transition" msgstr "æ·»åŠ è½¬æ¢" @@ -4527,7 +4624,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" @@ -4575,6 +4672,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" @@ -4646,7 +4747,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" @@ -4790,15 +4891,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..." @@ -4826,23 +4927,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" @@ -4850,11 +4975,11 @@ msgstr "全部" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No results for \"%s\"." -msgstr "" +msgstr "未找到“%sâ€ã€‚" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Import..." -msgstr "导入…" +msgstr "导入..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Plugins..." @@ -4891,7 +5016,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 "" @@ -4901,7 +5026,7 @@ msgid "" msgstr "" "æ— æ³•ç¡®å®šå…‰ç…§è´´å›¾çš„ä¿å˜è·¯å¾„。\n" "请先ä¿å˜åœºæ™¯ï¼ˆå…‰ç…§è´´å›¾å°†è¢«å˜åœ¨åŒä¸€ç›®å½•ä¸‹ï¼‰æˆ–ä»Žå±žæ€§é¢æ¿ä¸æ‰‹åЍä¿å˜ " -"`BakedLightmap` 属性。" +"BakedLightmap 属性。" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -4935,6 +5060,14 @@ 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 "旋转åç§»é‡:" @@ -4943,6 +5076,10 @@ 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 "移动垂直å‚考线" @@ -5011,6 +5148,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 "仅锚点" @@ -5024,6 +5229,24 @@ 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 "" +"游æˆç›¸æœºè¦†ç›–\n" +"使用编辑器视图相机覆盖游æˆç›¸æœºã€‚" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Game Camera Override\n" +"No game instance running." +msgstr "" +"游æˆç›¸æœºè¦†ç›–\n" +"没有æ£åœ¨è¿è¡Œçš„æ¸¸æˆå®žä¾‹ã€‚" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Lock Selected" msgstr "é”定选定" @@ -5089,7 +5312,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)." @@ -5097,7 +5320,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 @@ -5119,7 +5342,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." @@ -5134,24 +5359,20 @@ msgid "Ruler Mode" msgstr "æ ‡å°ºæ¨¡å¼" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle smart snapping." -msgstr "开关å¸é™„。" +msgstr "å¸é™„开关。" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Smart Snap" msgstr "使用å¸é™„" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle grid snapping." -msgstr "开关å¸é™„。" +msgstr "å¼€å…³ç½‘æ ¼å¸é™„。" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Use Grid Snap" -msgstr "ç½‘æ ¼å¸é™„" +msgstr "ä½¿ç”¨ç½‘æ ¼å¸é™„" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping Options" @@ -5162,6 +5383,10 @@ 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 "相对å¸é™„" @@ -5180,7 +5405,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" @@ -5196,7 +5421,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" @@ -5244,13 +5469,12 @@ msgid "View" msgstr "视图" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Always Show Grid" -msgstr "æ˜¾ç¤ºç½‘æ ¼" +msgstr "æ€»æ˜¯æ˜¾ç¤ºç½‘æ ¼" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Helpers" -msgstr "显示辅助线" +msgstr "显示辅助信æ¯" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Rulers" @@ -5258,7 +5482,7 @@ msgstr "æ˜¾ç¤ºæ ‡å°º" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Guides" -msgstr "显示引导" +msgstr "显示辅助线" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Origin" @@ -5266,11 +5490,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" @@ -5302,13 +5526,13 @@ msgstr "æ’入帧(基于é®ç½©ï¼‰ã€‚" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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 "" -"当对象ä½ç§»å˜åŒ–,按缩放比例旋转(基于蒙版)时自动æ’入关键帧。\n" -"关键帧键åªä¼šæ·»åŠ åˆ°çŽ°æœ‰è½¨é“,ä¸ä¼šåˆ›å»ºæ–°è½¨é“。\n" +"当对象ä½ç§»ã€æ—‹è½¬ã€ç¼©æ”¾ï¼ˆåŸºäºŽè’™ç‰ˆï¼‰æ—¶è‡ªåЍæ’入关键帧。\n" +"关键帧åªä¼šæ·»åŠ åˆ°çŽ°æœ‰è½¨é“,ä¸ä¼šåˆ›å»ºæ–°è½¨é“。\n" "第一次必须手动æ’入关键帧。" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -5321,7 +5545,7 @@ msgstr "æ’入关键帧(已有轨é“)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" -msgstr "æ‹·è´å§¿åŠ¿" +msgstr "å¤åˆ¶å§¿åŠ¿" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" @@ -5345,7 +5569,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." @@ -5448,11 +5672,11 @@ msgstr "从节点创建å‘射器(Emission)" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat 0" -msgstr "å¹³é¢0" +msgstr "ä¿æŒ0" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat 1" -msgstr "å¹³é¢ 1" +msgstr "ä¿æŒ1" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease In" @@ -5496,7 +5720,7 @@ msgstr "å³çº¿æ€§" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Preset" -msgstr "载入预置" +msgstr "载入预设" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove Curve Point" @@ -5511,13 +5735,12 @@ msgid "Hold Shift to edit tangents individually" msgstr "æŒ‰ä½ Shift å¯å•独编辑切线" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Right click to add point" -msgstr "é¼ æ ‡å³é”®:åˆ é™¤ç‚¹" +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" @@ -5529,11 +5752,11 @@ msgstr "第%d项" #: editor/plugins/item_list_editor_plugin.cpp msgid "Items" -msgstr "项目" +msgstr "列表项" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item List Editor" -msgstr "列表编辑器" +msgstr "项目列表编辑器" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create Occluder Polygon" @@ -5541,7 +5764,7 @@ msgstr "æ·»åŠ é®å…‰å¤šè¾¹å½¢" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" -msgstr "Mesh为空ï¼" +msgstr "ç½‘æ ¼ä¸ºç©ºï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" @@ -5594,7 +5817,7 @@ msgstr "MeshInstance (ç½‘æ ¼å®žä¾‹) 缺少 Mesh(ç½‘æ ¼)ï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" -msgstr "Mesh(ç½‘æ ¼)æ²¡æœ‰è¡¨é¢æ¥åˆ›å»ºè½®å»“(outlines)ï¼" +msgstr "ç½‘æ ¼æ²¡æœ‰å¯ç”¨æ¥åˆ›å»ºè½®å»“的表é¢ï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" @@ -5602,23 +5825,23 @@ msgstr "ç½‘æ ¼åŽŸå§‹ç±»åž‹ä¸æ˜¯ PRIMITIVE_TRIANGLES(ä¸‰è§’å½¢ç½‘æ ¼)ï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" -msgstr "æ— æ³•åˆ›å»ºè½®å»“(outlines)ï¼" +msgstr "æ— æ³•åˆ›å»ºè½®å»“ï¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline" -msgstr "创建轮廓(outlines)" +msgstr "创建轮廓" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "网络" +msgstr "ç½‘æ ¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" -msgstr "åˆ›å»ºä¸‰ç»´é™æ€å®žä½“(Body)" +msgstr "åˆ›å»ºä¸‰è§’ç½‘æ ¼é™æ€å®žä½“" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Collision Sibling" -msgstr "创建三维碰撞åŒçº§" +msgstr "åˆ›å»ºä¸‰è§’ç½‘æ ¼ç¢°æ’žåŒçº§" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Collision Sibling(s)" @@ -5626,11 +5849,11 @@ msgstr "创建凸型碰撞åŒçº§" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh..." -msgstr "åˆ›å»ºè½®å»“ç½‘æ ¼(Outline Mesh)..." +msgstr "åˆ›å»ºè½®å»“ç½‘æ ¼..." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "View UV1" -msgstr "视图UV1" +msgstr "查看UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "View UV2" @@ -5642,17 +5865,32 @@ msgstr "ä¸ºå…‰ç…§æ˜ å°„/环境光é®è”½å±•å¼€UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" -msgstr "åˆ›å»ºè½®å»“ç½‘æ ¼(Outline Mesh)" +msgstr "åˆ›å»ºè½®å»“ç½‘æ ¼" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" -msgstr "轮廓(outlines)尺寸:" +msgstr "轮廓大å°ï¼š" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "确定è¦ç§»é™¤é¡¹ç›®%då—?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "ä»Žåœºæ™¯ä¸æ›´æ–°" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Mesh Library" +msgstr "ç½‘æ ¼åº“" + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "æ·»åŠ é¡¹ç›®" @@ -5671,23 +5909,23 @@ msgstr "ä»Žåœºæ™¯ä¸æ›´æ–°" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "æœªæŒ‡å®šç½‘æ ¼(Mesh)æºï¼ˆä¸”èŠ‚ç‚¹ä¸æ²¡æœ‰è®¾ç½®å¤šç½‘æ ¼ç‰©ä½“(MultiMesh))。" +msgstr "æœªæŒ‡å®šç½‘æ ¼æºï¼ˆä¸”èŠ‚ç‚¹ä¸æ²¡æœ‰è®¾ç½®å¤šç½‘æ ¼ç‰©ä½“(MultiMesh))。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "æœªæŒ‡å®šç½‘æ ¼(Mesh)æºï¼ˆä¸”å¤šç½‘æ ¼(MultiMesh)ä¸åŒ…å«ç½‘æ ¼(Mesh))。" +msgstr "æœªæŒ‡å®šç½‘æ ¼æºï¼ˆä¸”å¤šç½‘æ ¼(MultiMesh)ä¸åŒ…å«ç½‘æ ¼(Mesh))。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "ç½‘æ ¼(Mesh)æºæ— æ•ˆï¼ˆè·¯å¾„æ— æ•ˆï¼‰ã€‚" +msgstr "ç½‘æ ¼æºæ— æ•ˆï¼ˆè·¯å¾„æ— æ•ˆï¼‰ã€‚" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "ç½‘æ ¼(Mesh)æºæ— æ•ˆï¼ˆä¸æ˜¯ç½‘æ ¼å®žä¾‹(MeshInstance))。" +msgstr "ç½‘æ ¼æºæ— æ•ˆï¼ˆä¸æ˜¯ç½‘æ ¼å®žä¾‹(MeshInstance))。" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "ç½‘æ ¼(Mesh)æºæ— 效(ä¸åŒ…å«ç½‘æ ¼(Mesh)资æºï¼‰ã€‚" +msgstr "ç½‘æ ¼æºæ— 效(ä¸åŒ…å«ç½‘æ ¼(Mesh)资æºï¼‰ã€‚" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." @@ -5707,11 +5945,11 @@ msgstr "表é¢çš„æºæ— æ•ˆï¼ˆæ— é¢ï¼‰ã€‚" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "选择æºMesh:" +msgstr "选择æºç½‘æ ¼:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" -msgstr "é€‰æ‹©ä¸€ä¸ªç›®æ ‡æ›²é¢ï¼š" +msgstr "é€‰æ‹©ç›®æ ‡è¡¨é¢ï¼š" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate Surface" @@ -5719,15 +5957,15 @@ msgstr "填充表é¢" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate MultiMesh" -msgstr "å¡«å……MultiMeshï¼ˆå¤šç½‘æ ¼ï¼‰" +msgstr "å¡«å……MultiMesh" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" -msgstr "ç›®æ ‡æ›²é¢ï¼š" +msgstr "ç›®æ ‡è¡¨é¢ï¼š" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "æºMesh:" +msgstr "æºç½‘æ ¼ï¼š" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" @@ -5743,19 +5981,19 @@ msgstr "Zè½´" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "Mesh (ç½‘æ ¼)上轴:" +msgstr "ç½‘æ ¼ä¸Šæ–¹å‘轴:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" -msgstr "éšæœºæ—‹è½¬:" +msgstr "éšæœºæ—‹è½¬ï¼š" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Tilt:" -msgstr "éšæœºç –å—:" +msgstr "éšæœºå€¾æ–œï¼š" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Scale:" -msgstr "éšæœºç¼©æ”¾:" +msgstr "éšæœºç¼©æ”¾ï¼š" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate" @@ -5798,7 +6036,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." @@ -6015,7 +6253,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)" @@ -6231,7 +6469,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?" @@ -6267,7 +6505,7 @@ msgstr "导入出错" #: editor/plugins/script_editor_plugin.cpp msgid "New Text File..." -msgstr "新文本文件..." +msgstr "新建文本文件..." #: editor/plugins/script_editor_plugin.cpp msgid "Open File" @@ -6278,6 +6516,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 "如需执行æ¤è„šæœ¬ï¼Œå¿…é¡»ç»§æ‰¿EditorScript并将其设为工具模å¼ã€‚" + +#: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" msgstr "导入主题" @@ -6309,7 +6564,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." @@ -6317,7 +6572,7 @@ msgstr "åˆ‡æ¢æŒ‰å—æ¯è¡¨æŽ’åºæ–¹å¼æŽ’列方法。" #: editor/plugins/script_editor_plugin.cpp msgid "Filter methods" -msgstr "过滤方å¼" +msgstr "ç›é€‰æ–¹æ³•" #: editor/plugins/script_editor_plugin.cpp msgid "Sort" @@ -6349,7 +6604,7 @@ msgstr "文件" #: editor/plugins/script_editor_plugin.cpp msgid "Open..." -msgstr "打开…" +msgstr "打开..." #: editor/plugins/script_editor_plugin.cpp msgid "Reopen Closed Script" @@ -6365,7 +6620,7 @@ msgstr "软é‡è½½è„šæœ¬" #: editor/plugins/script_editor_plugin.cpp msgid "Copy Script Path" -msgstr "æ‹·è´è„šæœ¬è·¯å¾„" +msgstr "å¤åˆ¶è„šæœ¬è·¯å¾„" #: editor/plugins/script_editor_plugin.cpp msgid "History Previous" @@ -6382,7 +6637,7 @@ msgstr "主题" #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme..." -msgstr "导入主题…" +msgstr "导入主题..." #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" @@ -6404,10 +6659,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 "啿¥è¿›å…¥" @@ -6418,7 +6669,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 @@ -6467,7 +6718,7 @@ msgid "" "What action should be taken?:" msgstr "" "ç£ç›˜ä¸çš„下列文件已更新。\n" -"请选择执行那项æ“作?:" +"请选择执行哪项æ“作?:" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp @@ -6497,20 +6748,16 @@ msgstr "与方法的连接:" #: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp msgid "Source" -msgstr "æº" - -#: editor/plugins/script_text_editor.cpp -msgid "Signal" -msgstr "ä¿¡å·" +msgstr "æ¥æº" #: editor/plugins/script_text_editor.cpp msgid "Target" -msgstr "æž„å»ºç›®æ ‡" +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" @@ -6529,8 +6776,13 @@ msgid "Only resources from filesystem can be dropped." msgstr "åªå¯ä»¥æ‹–拽æ¥è‡ªæ–‡ä»¶ç³»ç»Ÿä¸çš„资æºã€‚" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "æ— æ³•æ”¾ç½®è¯¥èŠ‚ç‚¹ï¼Œå› ä¸ºè„šæœ¬â€œ%sâ€æœªåœ¨è¯¥åœºæ™¯ä¸ä½¿ç”¨ã€‚" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" -msgstr "æŸ¥æ‰¾æ ‡è®°" +msgstr "查找符å·" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -6582,7 +6834,7 @@ msgstr "全选" #: editor/plugins/script_text_editor.cpp msgid "Delete Line" -msgstr "åˆ é™¤çº¿" +msgstr "åˆ é™¤è¡Œ" #: editor/plugins/script_text_editor.cpp msgid "Indent Left" @@ -6618,7 +6870,7 @@ msgstr "代ç 补全" #: editor/plugins/script_text_editor.cpp msgid "Evaluate Selection" -msgstr "评估选择" +msgstr "所选内容求值" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" @@ -6642,7 +6894,7 @@ msgstr "åœ¨æ–‡ä»¶ä¸æŸ¥æ‰¾..." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" -msgstr "æœç´¢å…‰æ ‡ä½ç½®" +msgstr "上下文帮助" #: editor/plugins/script_text_editor.cpp msgid "Toggle Bookmark" @@ -6703,11 +6955,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" @@ -6787,15 +7039,15 @@ msgstr "æ’入动画键。" #: editor/plugins/spatial_editor_plugin.cpp msgid "Pitch" -msgstr "音调" +msgstr "俯仰角" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "å航" +msgstr "å航角" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" -msgstr "绘制的对象" +msgstr "绘制对象" #: editor/plugins/spatial_editor_plugin.cpp msgid "Material Changes" @@ -6811,7 +7063,7 @@ msgstr "表é¢å˜æ›´" #: editor/plugins/spatial_editor_plugin.cpp msgid "Draw Calls" -msgstr "绘制调用(Draw Calls)" +msgstr "绘制调用" #: editor/plugins/spatial_editor_plugin.cpp msgid "Vertices" @@ -6819,11 +7071,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" @@ -6847,7 +7099,7 @@ msgstr "峿–¹" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View." -msgstr "æ£è§†å›¾ã€‚" +msgstr "å‰è§†å›¾ã€‚" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front" @@ -6903,7 +7155,7 @@ msgstr "视图环境" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Gizmos" -msgstr "Gizmos(å¯è§†åŒ–调试工具)" +msgstr "查看控制器" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Information" @@ -6915,7 +7167,7 @@ msgstr "查看帧率" #: editor/plugins/spatial_editor_plugin.cpp msgid "Half Resolution" -msgstr "一åŠåˆ†è¾¨çއ" +msgstr "åŠåˆ†è¾¨çއ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Audio Listener" @@ -6958,9 +7210,8 @@ msgid "Freelook Speed Modifier" msgstr "自由视图速度调整" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Slow Modifier" -msgstr "自由视图速度调整" +msgstr "缓慢自由视图速度" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7010,15 +7261,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" @@ -7042,7 +7293,7 @@ msgstr "显示原点" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" -msgstr "选ä¸é€‰ä¸é¡¹" +msgstr "èšç„¦é€‰ä¸é¡¹" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" @@ -7071,15 +7322,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" @@ -7087,7 +7338,7 @@ msgstr "4个视å£" #: editor/plugins/spatial_editor_plugin.cpp msgid "Gizmos" -msgstr "Gizmos(å°å·¥å…·ï¼‰" +msgstr "控制器" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" @@ -7108,7 +7359,7 @@ msgstr "å¸é™„设置" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "转化å¸é™„:" +msgstr "平移å¸é™„:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" @@ -7156,39 +7407,58 @@ 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" msgstr "创建 2D ç½‘æ ¼" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "Mesh2D Preview" +msgstr "åˆ›å»ºç½‘æ ¼é¢„è§ˆ" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create Polygon2D" msgstr "创建2D多边形" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create CollisionPolygon2D" msgstr "创建2D碰撞多边形" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "创建2D碰撞多边形" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Create LightOccluder2D" msgstr "æ·»åŠ 2Dé®å…‰å¤šè¾¹å½¢" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "æ·»åŠ 2Dé®å…‰å¤šè¾¹å½¢" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" 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." @@ -7224,16 +7494,15 @@ 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 -#, fuzzy msgid "Shrink (Pixels): " -msgstr "扩展(åƒç´ ): " +msgstr "收缩(åƒç´ ): " #: editor/plugins/sprite_editor_plugin.cpp msgid "Grow (Pixels): " @@ -7260,6 +7529,11 @@ msgid "Add Frame" msgstr "æ·»åŠ å¸§" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "æ— æ³•åŠ è½½å›¾ç‰‡:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "错误:æ— æ³•åŠ è½½å¸§èµ„æºï¼" @@ -7277,7 +7551,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)" @@ -7297,7 +7571,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" @@ -7313,7 +7587,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)" @@ -7390,7 +7664,7 @@ msgstr "ç½‘æ ¼åç§»é‡:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Step:" -msgstr "æ¥é•¿ï¼ˆç§’):" +msgstr "æ¥é•¿ï¼š" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Sep.:" @@ -7398,7 +7672,7 @@ msgstr "间隔:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "TextureRegion" -msgstr "TextureRegion 纹ç†åŒºåŸŸ" +msgstr "纹ç†åŒºåŸŸ" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" @@ -7410,7 +7684,7 @@ msgstr "æ·»åŠ æ‰€æœ‰" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All Items" -msgstr "移除类项目" +msgstr "移除所有项目" #: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp msgid "Remove All" @@ -7533,6 +7807,7 @@ msgid "Data Type:" msgstr "æ•°æ®ç±»åž‹:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "å›¾æ ‡" @@ -7549,8 +7824,8 @@ msgid "Color" msgstr "颜色" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "常é‡" +msgid "Theme File" +msgstr "主题文件" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -7558,7 +7833,7 @@ 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 @@ -7567,7 +7842,7 @@ msgstr "切割选择" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" -msgstr "ç»˜åˆ¶ç –å—地图" +msgstr "绘制图å—地图" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Line Draw" @@ -7583,11 +7858,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" @@ -7595,7 +7870,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" @@ -7603,15 +7878,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 "" @@ -7623,7 +7898,7 @@ msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" -msgstr "选择ç£è´´" +msgstr "选择图å—" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate Left" @@ -7647,11 +7922,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" @@ -7662,12 +7937,24 @@ 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 "选择下一个形状,åç –å—ï¼Œæˆ–ç –å—。" +msgstr "选择下一个形状ã€å图å—ã€å›¾å—。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Previous Coordinate" @@ -7675,7 +7962,35 @@ 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 +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 "Z索引" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Region Mode" @@ -7723,7 +8038,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." @@ -7731,17 +8046,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 "" @@ -7750,7 +8063,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." @@ -7758,7 +8071,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?" @@ -7778,7 +8091,7 @@ msgid "" "Click on another Tile to edit it." msgstr "" "拖拽手柄以编辑举行。\n" -"点击å¦ä¸€ä¸ªç£è´´è¿›è¡Œç¼–辑。" +"点击å¦ä¸€ä¸ªå›¾å—进行编辑。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Delete selected Rect." @@ -7789,8 +8102,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." @@ -7803,10 +8116,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 "" @@ -7814,40 +8127,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" @@ -7863,11 +8176,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" @@ -7879,7 +8192,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" @@ -7895,11 +8208,21 @@ 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 +#, fuzzy +msgid "Make Convex" +msgstr "使多边形凸起" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "使多边形塌陷" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create Collision Polygon" @@ -7915,7 +8238,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." @@ -8015,9 +8338,8 @@ msgid "(GLES3 only)" msgstr "åªä½¿ç”¨GLES3" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Output" -msgstr "æ·»åŠ è¾“å‡º+" +msgstr "æ·»åŠ è¾“å‡º" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Scalar" @@ -8032,9 +8354,8 @@ msgid "Boolean" msgstr "布尔值" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Sampler" -msgstr "音效" +msgstr "é‡‡æ ·ï¼ˆSampler)" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Add input port" @@ -8135,7 +8456,7 @@ msgstr "颜色è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Grayscale function." -msgstr "ç°åº¦åŠŸèƒ½ã€‚" +msgstr "ç°åº¦å‡½æ•°ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Converts HSV vector to RGB equivalent." @@ -8147,11 +8468,11 @@ msgstr "å°†RGBå‘é‡è½¬æ¢ä¸ºç‰æ•ˆçš„HSVå‘é‡ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Sepia function." -msgstr "棕è¤è‰²åŠŸèƒ½ã€‚" +msgstr "棕è¤è‰²å‡½æ•°ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Burn operator." -msgstr "烧录è¿ç®—符。" +msgstr "åŠ æ·±è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Darken operator." @@ -8159,19 +8480,19 @@ msgstr "å˜æš—è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Difference operator." -msgstr "差异è¿ç®—符。" +msgstr "差值è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Dodge operator." -msgstr "Dodge è¿ç®—符。" +msgstr "凿·¡è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "HardLight æ“作" +msgid "HardLight operator." +msgstr "强光è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." -msgstr "Lightenè¿ç®—." +msgstr "å˜äº®è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Overlay operator." @@ -8179,15 +8500,15 @@ msgstr "å åŠ è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Screen operator." -msgstr "å±å¹•æ“作符。" +msgstr "滤色è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "SoftLight operator." -msgstr "SoftLight æ“作符." +msgstr "柔光è¿ç®—符。" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color constant." -msgstr "颜色常é‡." +msgstr "颜色常é‡ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Color uniform." @@ -8195,7 +8516,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 (==)" @@ -8269,7 +8590,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." @@ -8277,35 +8598,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." @@ -8769,8 +9090,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 "" @@ -8780,12 +9101,13 @@ msgstr "æ ¹æ®è¡¨é¢æ³•线和相机视图方å‘的点积返回衰å‡ï¼ˆå°†ç›¸å…³ #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 "" -"自定义的Godotç€è‰²å™¨è¯è¨€è¡¨è¾¾å¼ï¼Œä½äºŽç”Ÿæˆçš„ç€è‰²å™¨é¡¶éƒ¨ã€‚您å¯ä»¥åœ¨å…¶ä¸æ”¾ç½®å„ç§å‡½æ•°" -"定义,然åŽåœ¨è¡¨è¾¾å¼ä¸è°ƒç”¨å®ƒã€‚您还å¯ä»¥å£°æ˜Žå˜åŒ–,统一和常é‡ã€‚" +"自定义的 Godot ç€è‰²å™¨è¯è¨€è¡¨è¾¾å¼ï¼Œä¼šè¢«æ”¾åˆ°æœ€ç»ˆçš„ç€è‰²å™¨å¼€å¤´ã€‚您å¯ä»¥åœ¨å…¶ä¸æ”¾ç½®å„" +"ç§å‡½æ•°å®šä¹‰ï¼Œç„¶åŽåœ¨è¡¨è¾¾å¼ä¸è°ƒç”¨ã€‚您还å¯ä»¥å£°æ˜Ž varyingã€uniform 和常é‡ã€‚" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "(Fragment/Light mode only) Scalar derivative function." @@ -8848,20 +9170,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 "" @@ -8869,8 +9199,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" @@ -8886,7 +9216,7 @@ msgstr "指定导出路径ä¸å˜åœ¨ï¼š" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted:" -msgstr "该平å°çš„导出模æ¿ä¸¢å¤±/æŸå:" +msgstr "该平å°çš„导出模æ¿ç¼ºå¤±æˆ–æŸå:" #: editor/project_export.cpp msgid "Presets" @@ -8897,6 +9227,14 @@ 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 "" +"选䏿—¶ï¼Œå¯ä»¥åœ¨ä¸€é”®éƒ¨ç½²ä¸ä½¿ç”¨è¯¥é¢„设。\n" +"æ¯ä¸ªå¹³å°åªå¯ä»¥æœ‰ä¸€ä¸ªå¯æ‰§è¡Œçš„预设。" + +#: editor/project_export.cpp msgid "Export Path" msgstr "导出路径" @@ -8925,18 +9263,20 @@ msgid "Resources to export:" msgstr "导出的资æº:" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to export non-resource files/folders\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" -msgstr "ç›é€‰å¯¼å‡ºéžèµ„æºæ–‡ä»¶ï¼ˆä½¿ç”¨è‹±æ–‡é€—å·åˆ†éš”,如:*.json,*.txt)" +msgstr "" +"ç›é€‰å¯¼å‡ºéžèµ„æºæ–‡ä»¶æˆ–文件夹\n" +"(使用英文逗å·åˆ†éš”,如:*.json, *.txt, docs/* )" #: editor/project_export.cpp -#, fuzzy msgid "" "Filters to exclude files/folders from project\n" "(comma-separated, e.g: *.json, *.txt, docs/*)" -msgstr "è¿‡æ»¤ä»Žé¡¹ç›®ä¸æŽ’é™¤æ–‡ä»¶ï¼ˆä»¥é€—å·åˆ†éš”,例如:*。json,*。txt)" +msgstr "" +"ä»Žé¡¹ç›®ä¸æŽ’é™¤æ–‡ä»¶æˆ–ç›®å½•\n" +"(以英文逗å·åˆ†éš”,如:*.json, *.txt, docs/*)" #: editor/project_export.cpp msgid "Patches" @@ -8947,6 +9287,10 @@ msgid "Make Patch" msgstr "制作补ä¸" #: editor/project_export.cpp +msgid "Pack File" +msgstr "包文件" + +#: editor/project_export.cpp msgid "Features" msgstr "功能" @@ -8998,9 +9342,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" @@ -9020,7 +9372,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." @@ -9067,11 +9419,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:" @@ -9087,7 +9439,7 @@ msgstr "导入现有项目" #: editor/project_manager.cpp msgid "Import & Edit" -msgstr "导入|打开" +msgstr "导入并编辑" #: editor/project_manager.cpp msgid "Create New Project" @@ -9095,7 +9447,7 @@ msgstr "新建项目" #: editor/project_manager.cpp msgid "Create & Edit" -msgstr "创建|编辑" +msgstr "创建并编辑" #: editor/project_manager.cpp msgid "Install Project:" @@ -9103,7 +9455,7 @@ msgstr "安装项目:" #: editor/project_manager.cpp msgid "Install & Edit" -msgstr "安装|编辑" +msgstr "安装并编辑" #: editor/project_manager.cpp msgid "Project Name:" @@ -9111,7 +9463,7 @@ msgstr "项目åç§°:" #: editor/project_manager.cpp msgid "Project Path:" -msgstr "项目目录:" +msgstr "项目路径:" #: editor/project_manager.cpp msgid "Project Installation Path:" @@ -9132,8 +9484,8 @@ msgid "" "Incompatible with older hardware\n" "Not recommended for web games" msgstr "" -"更高的视觉质é‡\n" -"所有å¯ç”¨åŠŸèƒ½\n" +"è§†è§‰è´¨é‡æ›´é«˜\n" +"所有功能å¯ç”¨\n" "与旧硬件ä¸å…¼å®¹\n" "䏿ލè用于网络游æˆ" @@ -9148,9 +9500,9 @@ msgid "" "Works on most hardware\n" "Recommended for web games" msgstr "" -"较低的视觉质é‡\n" +"视觉质é‡è¾ƒä½Ž\n" "æŸäº›åŠŸèƒ½ä¸å¯ç”¨\n" -"适用于大多数硬件\n" +"å¯ç”¨äºŽå¤§å¤šæ•°ç¡¬ä»¶\n" "推è用于网络游æˆ" #: editor/project_manager.cpp @@ -9163,15 +9515,15 @@ 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'." -msgstr "æ— æ³•æ‰“å¼€ä½äºŽâ€œ%sâ€çš„相应项目." +msgstr "æ— æ³•æ‰“å¼€ä½äºŽâ€œ%sâ€çš„项目。" #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" @@ -9189,12 +9541,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 "" @@ -9208,8 +9560,11 @@ msgid "" "engine anymore." msgstr "" "以下项目设置文件由较旧的引擎版本生æˆï¼Œéœ€è¦ä¸ºæ¤ç‰ˆæœ¬è¿›è¡Œè½¬æ¢ï¼š\n" +"\n" "%s\n" -" 是å¦è¦è½¬æ¢å®ƒï¼Ÿ è¦å‘Šï¼š æ‚¨å°†æ— æ³•å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开项目。" +"\n" +"是å¦è¦è½¬æ¢ï¼Ÿ\n" +"è¦å‘Šï¼š æ‚¨å°†æ— æ³•å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开项目。" #: editor/project_manager.cpp msgid "" @@ -9231,18 +9586,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 "" @@ -9254,7 +9611,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 "" @@ -9266,7 +9625,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" @@ -9274,7 +9635,11 @@ msgstr "项目管ç†å™¨" #: editor/project_manager.cpp msgid "Projects" -msgstr "工程" +msgstr "项目" + +#: editor/project_manager.cpp +msgid "Last Modified" +msgstr "修改时间" #: editor/project_manager.cpp msgid "Scan" @@ -9282,11 +9647,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" @@ -9309,8 +9674,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 " @@ -9345,11 +9710,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" @@ -9360,18 +9725,6 @@ msgid "Device" msgstr "设备" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "Ctrl+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "按下一个键..." @@ -9477,7 +9830,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" @@ -9555,7 +9908,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." @@ -9571,11 +9924,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:" @@ -9747,11 +10100,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" @@ -9775,7 +10128,7 @@ msgid "" "Missing digits are padded with leading zeros." msgstr "" "计数器数å—的最少个数。\n" -"丢失的数å—用0填充在头部。" +"缺失的数å—将用0填充在头部。" #: editor/rename_dialog.cpp msgid "Regular Expressions" @@ -9787,15 +10140,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" @@ -9897,7 +10250,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." @@ -9913,19 +10266,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." @@ -9946,11 +10299,11 @@ msgid "" msgstr "ç¦ç”¨â€œå¯ç¼–辑实例â€å°†å¯¼è‡´èŠ‚ç‚¹çš„æ‰€æœ‰å±žæ€§æ¢å¤ä¸ºå…¶é»˜è®¤å€¼ã€‚" #: 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 "ç¦ç”¨â€œå¯ç¼–辑实例â€å°†å¯¼è‡´èŠ‚ç‚¹çš„æ‰€æœ‰å±žæ€§æ¢å¤ä¸ºå…¶é»˜è®¤å€¼ã€‚" +msgstr "" +"å¼€å¯â€œåŠ è½½ä¸ºå ä½ç¬¦â€å°†ç¦ç”¨â€œå¯ç¼–辑实例â€å¹¶é‡ç½®è¯¥èŠ‚ç‚¹çš„æ‰€æœ‰å±žæ€§æ¢å¤ä¸ºå…¶é»˜è®¤å€¼ã€‚" #: editor/scene_tree_dock.cpp msgid "Make Local" @@ -9958,7 +10311,7 @@ msgstr "使用本地" #: editor/scene_tree_dock.cpp msgid "New Scene Root" -msgstr "æ–°åœºæ™¯æ ¹" +msgstr "æ–°å»ºåœºæ™¯æ ¹" #: editor/scene_tree_dock.cpp msgid "Create Root Node:" @@ -10024,7 +10377,7 @@ msgstr "清除继承" #: editor/scene_tree_dock.cpp msgid "Editable Children" -msgstr "å…许编辑åå™èŠ‚ç‚¹" +msgstr "å节点å¯ç¼–辑" #: editor/scene_tree_dock.cpp msgid "Load As Placeholder" @@ -10048,11 +10401,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" @@ -10064,7 +10417,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)" @@ -10098,7 +10451,7 @@ msgstr "本地" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance? (No Undo!)" -msgstr "ç¡®å®šè¦æ¸…除继承å—ï¼Ÿï¼ˆæ— æ³•æ’¤é”€ï¼ï¼‰" +msgstr "æ˜¯å¦æ¸…é™¤ç»§æ‰¿ï¼Ÿï¼ˆæ— æ³•æ’¤é”€ï¼ï¼‰" #: editor/scene_tree_editor.cpp msgid "Toggle Visible" @@ -10114,7 +10467,7 @@ msgstr "按钮组" #: editor/scene_tree_editor.cpp msgid "(Connecting From)" -msgstr "(连接从)" +msgstr "ï¼ˆè¿žæŽ¥æ¥æºï¼‰" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" @@ -10124,19 +10477,25 @@ 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 "" "Node is in %s group(s).\n" "Click to show groups dock." -msgstr "节点ä½äºŽ %s 组ä¸ã€‚ å•击以显示分组æ 。" +msgstr "" +"节点ä½äºŽ %s 个分组ä¸ã€‚\n" +"å•å‡»ä»¥æ˜¾ç¤ºåˆ†ç»„é¢æ¿ã€‚" #: editor/scene_tree_editor.cpp msgid "Open Script:" @@ -10172,7 +10531,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" @@ -10208,7 +10567,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." @@ -10256,7 +10615,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." @@ -10279,19 +10638,16 @@ msgid "Will load an existing script file." msgstr "å°†åŠ è½½çŽ°æœ‰çš„è„šæœ¬æ–‡ä»¶ã€‚" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Class Name:" -msgstr "ç±»å" +msgstr "ç±»å:" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template:" -msgstr "模æ¿" +msgstr "模æ¿ï¼š" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script:" -msgstr "内置脚本" +msgstr "内置脚本:" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -10363,15 +10719,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" @@ -10383,7 +10739,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." @@ -10551,7 +10907,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:" @@ -10594,10 +10950,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "预期为长度为1çš„å—符串(一个å—符)。" - -#: modules/gdscript/gdscript_functions.cpp msgid "Step argument is zero!" msgstr "Step傿•°ä¸º 0 ï¼" @@ -10659,15 +11011,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" @@ -10675,7 +11027,7 @@ msgstr "ç»˜åˆ¶æ …æ ¼å›¾" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Grid Map" -msgstr "ç½‘æ ¼æ˜ å°„" +msgstr "ç½‘æ ¼åœ°å›¾" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Snap View" @@ -10683,15 +11035,15 @@ msgstr "å¸é™„视图" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Disabled" -msgstr "ç¦ç”¨å‰ªè¾‘" +msgstr "ç¦ç”¨è£å‰ª" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Above" -msgstr "上级剪辑" +msgstr "è£å‰ªä¸Šçº§" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Below" -msgstr "下级剪辑" +msgstr "è£å‰ªä¸‹çº§" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit X Axis" @@ -10734,6 +11086,11 @@ msgid "Cursor Clear Rotation" msgstr "å…‰æ ‡æ¸…é™¤æ—‹è½¬" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy +msgid "Paste Selects" +msgstr "擦除选ä¸" + +#: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" msgstr "清空选ä¸" @@ -10751,11 +11108,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" @@ -10877,12 +11234,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:" @@ -10890,15 +11255,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:" @@ -10925,9 +11290,8 @@ msgid "Add Function" msgstr "æ·»åŠ å‡½æ•°" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Delete input port" -msgstr "移除输入端å£" +msgstr "åˆ é™¤è¾“å…¥ç«¯å£" #: modules/visual_script/visual_script_editor.cpp msgid "Add Variable" @@ -10938,22 +11302,10 @@ msgid "Add Signal" 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 "移除输入端å£" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove Output Port" msgstr "移除输出端å£" @@ -10998,10 +11350,6 @@ msgid "Add Preload Node" msgstr "æ·»åŠ Preload节点" #: 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 "ä»Žæ ‘ä¸æ·»åŠ èŠ‚ç‚¹" @@ -11010,6 +11358,8 @@ msgid "" "Can't drop properties because script '%s' is not used in this scene.\n" "Drop holding 'Shift' to just copy the signature." msgstr "" +"æ— æ³•æ”¾ç½®è¯¥å±žæ€§ï¼Œå› ä¸ºè„šæœ¬â€œ%sâ€æœªåœ¨è¯¥åœºæ™¯ä¸ä½¿ç”¨ã€‚\n" +"放置时按ä½Shifté”®å¯ä»¥ä»…å¤åˆ¶ç¾å。" #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" @@ -11021,7 +11371,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)" @@ -11036,9 +11386,8 @@ msgid "Connect Nodes" msgstr "连接节点" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Disconnect Nodes" -msgstr "æ–å¼€Graph Node连接" +msgstr "æ–开连接的节点" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Node Data" @@ -11066,33 +11415,31 @@ 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" msgstr "粘贴 VisualScript 节点" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Can't create function with a function node." -msgstr "æ— æ³•å¤åˆ¶å‡½æ•°èŠ‚ç‚¹ã€‚" +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 atleast one node with sequence port." -msgstr "" +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 "" +msgstr "请选择å•一的顺åºè¾“入。" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Create Function" -msgstr "é‡å‘½å函数" +msgstr "创建函数" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -11112,20 +11459,31 @@ 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 -#, 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 "函数:" +msgstr "函数å" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit its graph." @@ -11133,7 +11491,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" @@ -11148,14 +11506,12 @@ msgid "Cut Nodes" msgstr "剪切节点" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Make Function" -msgstr "é‡å‘½å函数" +msgstr "生æˆå‡½æ•°" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Refresh Graph" -msgstr "刷新" +msgstr "刷新图" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Member" @@ -11175,7 +11531,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!" @@ -11225,7 +11581,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." @@ -11303,10 +11659,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)" @@ -11317,8 +11673,8 @@ msgid "" "Building of Android project failed, check output for the error.\n" "Alternatively visit docs.godotengine.org for Android build documentation." msgstr "" -"Android项目构建失败,请检查输出以了解错误。 或者访问docs.godotengine.org获å–" -"Android构建文档。" +"Androidé¡¹ç›®æž„å»ºå¤±è´¥ï¼Œè¯·æ£€æŸ¥è¾“å‡ºä¸æ˜¾ç¤ºçš„错误。\n" +"ä½ ä¹Ÿå¯ä»¥è®¿é—®docs.godotengine.org查看Android构建文档。" #: platform/android/export/export.cpp msgid "No build apk generated at: " @@ -11329,27 +11685,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-æ— æ³•é…置项目。" @@ -11363,7 +11702,7 @@ msgstr "é¢„è®¾ä¸æœªæŒ‡å®šå¿…éœ€çš„å›¾æ ‡ã€‚" #: platform/javascript/export/export.cpp msgid "Stop HTTP Server" -msgstr "" +msgstr "åœæ¢HTTPæœåŠ¡" #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -11398,10 +11737,18 @@ 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 "产å“GUIDéžæ³•。" @@ -11574,7 +11921,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." @@ -11588,7 +11935,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 "" @@ -11596,8 +11943,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 "" @@ -11721,8 +12069,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." @@ -11805,7 +12153,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 "" @@ -11959,9 +12308,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." @@ -11991,6 +12340,31 @@ 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 "æš‚åœè¿è¡Œåœºæ™¯" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + +#~ msgid "Control+" +#~ msgstr "Ctrl+" + #~ msgid "Snap to Grid" #~ msgstr "å¸é™„åˆ°ç½‘æ ¼" @@ -12460,9 +12834,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Rotate 270 degrees" #~ msgstr "旋转270度" -#~ msgid "Warning" -#~ msgstr "è¦å‘Š" - #~ msgid "Variable" #~ msgstr "å˜é‡" @@ -12589,9 +12960,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Out-In" #~ msgstr "å缓入缓出" -#~ msgid "Transitions" -#~ msgstr "过渡" - #~ msgid "Change Anim Len" #~ msgstr "修改动画时长" @@ -12801,9 +13169,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Replace By" #~ msgstr "替æ¢" -#~ msgid "Case Sensitive" -#~ msgstr "区分大å°å†™" - #~ msgid "Backwards" #~ msgstr "å‘åŽ" @@ -12953,9 +13318,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Re-Import Changed Resources" #~ msgstr "釿–°å¯¼å…¥æ”¹å˜çš„资æº" -#~ msgid "Loading Export Templates" -#~ msgstr "æ£åœ¨åŠ è½½å¯¼å‡ºæ¨¡æ¿" - #~ msgid "" #~ "\n" #~ "Status: Needs Re-Import" @@ -13259,9 +13621,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Loading Image:" #~ msgstr "åŠ è½½å›¾ç‰‡ä¸:" -#~ msgid "Couldn't load image:" -#~ msgstr "æ— æ³•åŠ è½½å›¾ç‰‡:" - #~ msgid "Converting Images" #~ msgstr "æ£åœ¨è½¬æ¢å›¾ç‰‡" @@ -13445,9 +13804,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ "correct?" #~ msgstr "æ— æ³•è¯»å–è¯ä¹¦æ–‡ä»¶ã€‚è·¯å¾„å’Œå¯†ç æ˜¯å¦éƒ½æ£ç¡®ï¼Ÿ" -#~ msgid "Error creating the signature object." -#~ msgstr "创建包(PCK)ç¾å对象出错。" - #~ msgid "Error creating the package signature." #~ msgstr "创建包(PCK)ç¾å时出错。" @@ -13546,9 +13902,6 @@ msgstr "ä¸å…许修改常é‡ã€‚" #~ msgid "Create Android keystore" #~ msgstr "创建 Android 的密钥库" -#~ msgid "Full name" -#~ msgstr "å…¨å" - #~ msgid "Organizational unit" #~ msgstr "组织å•å…ƒ" @@ -13652,9 +14005,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 2a343a6590..ae22ddc75c 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -1,6 +1,6 @@ # Chinese (Hong Kong) translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Wesley (zx-wt) <ZX_WT@ymail.com>, 2016-2017. # cnieFIT <dtotncq@gmail.com>, 2019. @@ -25,6 +25,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +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." @@ -446,6 +450,10 @@ msgid "Not possible to add a new track without a root" msgstr "" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "新增動畫軌跡" @@ -556,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 "編輯" @@ -764,6 +773,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 +856,11 @@ msgid "Extra Call Arguments:" msgstr "" #: editor/connections_dialog.cpp +#, fuzzy +msgid "Receiver Method:" +msgstr "鏿“‡æ¨¡å¼" + +#: editor/connections_dialog.cpp msgid "Advanced" msgstr "" @@ -1026,7 +1044,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 +1550,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 +1815,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 檔案" @@ -2090,6 +2114,16 @@ msgstr "在幫助檔æœå°‹" #: editor/editor_help_search.cpp #, fuzzy +msgid "Case Sensitive" +msgstr "å€åˆ†å¤§å°å¯«" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "æœå°‹" + +#: editor/editor_help_search.cpp +#, fuzzy msgid "Display All" msgstr "全部å–代" @@ -2130,6 +2164,30 @@ msgstr "" msgid "Class" msgstr "" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "鏿“‡æ¨¡å¼" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "訊號" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "常數" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "鏿“‡æ¨¡å¼" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "篩é¸:" + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "" @@ -2784,7 +2842,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 "專案" @@ -3009,8 +3068,8 @@ msgid "Play" msgstr "é‹è¡Œ" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "æš«åœå ´æ™¯" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3117,6 +3176,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 +3241,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." @@ -3502,6 +3570,14 @@ msgid "Importing:" msgstr "å°Žå…¥ä¸:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp #, fuzzy msgid "" "No download links found for this version. Direct download is only available " @@ -3641,6 +3717,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 "" @@ -3728,6 +3809,11 @@ msgstr "下一個腳本" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "鏿“‡ä¸»å ´æ™¯" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "é–‹å•“å ´æ™¯" @@ -4510,6 +4596,20 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Anim Clips" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "新增動畫軌跡" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "行為" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4759,6 +4859,11 @@ msgstr "移動模å¼" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "éŽæ¸¡" + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "éŽæ¸¡" @@ -4845,6 +4950,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 @@ -5110,6 +5220,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 "首é " @@ -5219,6 +5355,14 @@ 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 "" @@ -5228,6 +5372,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "縮放比例:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "新增" @@ -5304,6 +5453,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 "" @@ -5317,6 +5538,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "所有é¸é …" @@ -5462,6 +5697,10 @@ 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 "" @@ -5607,7 +5846,7 @@ msgstr "å‹•æ™æ’入關éµå¹€ï¼Ÿ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5961,11 +6200,26 @@ msgstr "" msgid "Outline Size:" msgstr "" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "" #: editor/plugins/mesh_library_editor_plugin.cpp +msgid "" +"Update from existing scene?:\n" +"%s" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "Mesh Library" +msgstr "MeshLibrary..." + +#: editor/plugins/mesh_library_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp msgid "Add Item" msgstr "" @@ -6619,6 +6873,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 "" @@ -6755,10 +7026,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 "" @@ -6856,11 +7123,6 @@ msgid "Source" msgstr "來æº:" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "訊號" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "目標" @@ -6889,6 +7151,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "" @@ -7558,21 +7825,40 @@ msgstr "新增" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "é 覽:" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "縮放selection" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "縮放selection" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "縮放selection" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "新增資料夾" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "LightOccluder2D Preview" +msgstr "新增資料夾" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Sprite is empty!" msgstr "路徑為空" @@ -7655,6 +7941,11 @@ msgid "Add Frame" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "" @@ -7945,6 +8236,7 @@ msgid "Data Type:" msgstr "" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "" @@ -7961,8 +8253,9 @@ msgid "Color" msgstr "" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "常數" +#, fuzzy +msgid "Theme File" +msgstr "開啟檔案" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy @@ -8081,6 +8374,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 "下一個腳本" @@ -8100,6 +8406,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 "無干擾模å¼" @@ -8337,6 +8676,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "縮放selection" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "縮放selection" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "縮放selection" @@ -8628,7 +8977,7 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" +msgid "HardLight operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp @@ -9221,9 +9570,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9291,6 +9641,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 "刪除" @@ -9339,6 +9698,12 @@ 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 #, fuzzy msgid "Export Path" msgstr "匯出" @@ -9390,6 +9755,11 @@ msgid "Make Patch" msgstr "" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr "檔案" + +#: editor/project_export.cpp msgid "Features" msgstr "" @@ -9446,6 +9816,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 "" @@ -9716,6 +10095,10 @@ msgid "Projects" msgstr "專案" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9802,18 +10185,6 @@ msgid "Device" msgstr "è¨å‚™" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "Shift+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "Alt+" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -11101,10 +11472,6 @@ 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 "" @@ -11249,6 +11616,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "縮放selection" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "縮放selection" @@ -11397,6 +11769,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 "有效å稱。" @@ -11464,16 +11846,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 "åªé™é¸ä¸" @@ -11524,10 +11896,6 @@ 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 "由主幹新增節點" @@ -11614,7 +11982,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11659,6 +12027,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 "行為" @@ -11860,27 +12243,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 "" @@ -11938,11 +12304,21 @@ msgstr "無法新增資料夾" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "無效å稱" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "無效å稱" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "無效å稱" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "無效å—åž‹" @@ -12481,6 +12857,15 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "æš«åœå ´æ™¯" + +#~ msgid "Shift+" +#~ msgstr "Shift+" + +#~ msgid "Alt+" +#~ msgstr "Alt+" + #~ msgid "Language" #~ msgstr "語言" @@ -12649,10 +13034,6 @@ msgstr "" #~ msgstr "放大" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "檔案" - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "放大" @@ -12803,10 +13184,6 @@ msgstr "" #~ msgstr "由這個å–代" #, fuzzy -#~ msgid "Case Sensitive" -#~ msgstr "å€åˆ†å¤§å°å¯«" - -#, fuzzy #~ msgid "Backwards" #~ msgstr "å‘後" @@ -12872,10 +13249,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 e2d7adf9e7..d20cad9133 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -1,6 +1,6 @@ # Chinese (Taiwan) translation of the Godot Engine editor -# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). # This file is distributed under the same license as the Godot source code. # Allen H <w84miracle@gmail.com>, 2017. # Billy SU <g4691821@gmail.com>, 2018. @@ -17,12 +17,13 @@ # Bluesir Bruce <a5566740293@gmail.com>, 2019. # leela <53352@protonmail.com>, 2019. # Kenneth Lo <closer.tw@gmail.com>, 2019. +# SIYU FU <1002492607@qq.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-08-29 13:35+0000\n" -"Last-Translator: Kenneth Lo <closer.tw@gmail.com>\n" +"PO-Revision-Date: 2019-11-09 22:04+0000\n" +"Last-Translator: SIYU FU <1002492607@qq.com>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hant/>\n" "Language: zh_TW\n" @@ -30,7 +31,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 @@ -38,6 +39,10 @@ msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "Convert()å‡½æ•¸æ‰€æ”¶åˆ°çš„åƒæ•¸éŒ¯èª¤ï¼Œè«‹è©¦è‘—以 TYPE_ 作為開é 。" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +msgid "Expected a string of length 1 (a character)." +msgstr "" + +#: 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." @@ -53,7 +58,7 @@ msgstr "å› è©²å¯¦ä¾‹(instance)為空,self 無法被使用" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "æ¤æ•¸å€¼ç„¡æ³•被 %sã€%s å’Œ %s é‹ç®—。" +msgstr "æ¤æ•¸å€¼ç„¡æ³•被 %sã€%s 和与%s é‹ç®—。" #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" @@ -73,16 +78,15 @@ msgstr "調用“%sâ€æ™‚:" #: core/ustring.cpp msgid "B" -msgstr "" +msgstr "ä¹™" #: core/ustring.cpp msgid "KiB" -msgstr "" +msgstr "基布" #: core/ustring.cpp -#, fuzzy msgid "MiB" -msgstr "æ··åˆ" +msgstr "MiBå…¬å¸" #: core/ustring.cpp msgid "GiB" @@ -106,7 +110,7 @@ msgstr "释放" #: editor/animation_bezier_editor.cpp msgid "Balanced" -msgstr "平衡的" +msgstr "平衡" #: editor/animation_bezier_editor.cpp msgid "Mirror" @@ -446,6 +450,10 @@ msgid "Not possible to add a new track without a root" msgstr "ç„¡æ³•æ·»åŠ æ²’æœ‰æ ¹ç›®éŒ„çš„æ–°æ›²ç›®" #: editor/animation_track_editor.cpp +msgid "Invalid track for Bezier (no suitable sub-properties)" +msgstr "" + +#: editor/animation_track_editor.cpp #, fuzzy msgid "Add Bezier Track" msgstr "æ·»åŠ å‹•ç•«è»Œ" @@ -564,8 +572,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 +771,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 +857,11 @@ msgstr "é¡å¤–呼å«åƒæ•¸:" #: editor/connections_dialog.cpp #, fuzzy +msgid "Receiver Method:" +msgstr "éŽæ¿¾æª”案..." + +#: editor/connections_dialog.cpp +#, fuzzy msgid "Advanced" msgstr "進階è¨å®š" @@ -1022,7 +1040,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 +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 "å稱" @@ -1798,6 +1817,11 @@ msgstr "擦除磚塊地圖" #: editor/editor_feature_profile.cpp #, fuzzy +msgid "Godot Feature Profile" +msgstr "管ç†è¼¸å‡ºæ¨¡æ¿" + +#: editor/editor_feature_profile.cpp +#, fuzzy msgid "Import Profile(s)" msgstr "å·²å°Žå…¥çš„é …ç›®" @@ -2090,6 +2114,15 @@ msgid "Search Help" msgstr "æœå°‹å¹«åŠ©" #: editor/editor_help_search.cpp +msgid "Case Sensitive" +msgstr "å€åˆ†å¤§å°å¯«" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Show Hierarchy" +msgstr "顯示輔助線" + +#: editor/editor_help_search.cpp #, fuzzy msgid "Display All" msgstr "å–代全部" @@ -2130,6 +2163,30 @@ msgstr "æˆå“¡é¡žåž‹" msgid "Class" msgstr "Class:" +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Method" +msgstr "方法" + +#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp +#, fuzzy +msgid "Signal" +msgstr "信號" + +#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "固定" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Property" +msgstr "屬性:" + +#: editor/editor_help_search.cpp +#, fuzzy +msgid "Theme Property" +msgstr "éŽæ¿¾æª”案..." + #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" msgstr "屬性:" @@ -2776,7 +2833,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 "專案" @@ -3003,8 +3061,8 @@ msgid "Play" msgstr "é‹è¡Œ" #: editor/editor_node.cpp -msgid "Pause the scene" -msgstr "æš«åœæ¤å ´æ™¯" +msgid "Pause the scene execution for debugging." +msgstr "" #: editor/editor_node.cpp msgid "Pause Scene" @@ -3111,6 +3169,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 +3230,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." @@ -3484,6 +3552,14 @@ msgid "Importing:" msgstr "å°Žå…¥:" #: editor/export_template_manager.cpp +msgid "Error getting the list of mirrors." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error parsing JSON of mirror list. Please report this issue!" +msgstr "" + +#: editor/export_template_manager.cpp msgid "" "No download links found for this version. Direct download is only available " "for official releases." @@ -3619,6 +3695,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 "導出範本管ç†å™¨" @@ -3705,6 +3786,11 @@ msgstr "å¾žç¾æœ‰å ´æ™¯ä¸å»ºç«‹â€¦" #: editor/filesystem_dock.cpp #, fuzzy +msgid "Set As Main Scene" +msgstr "é¸å–主è¦å ´æ™¯" + +#: editor/filesystem_dock.cpp +#, fuzzy msgid "Open Scenes" msgstr "é–‹å•Ÿå ´æ™¯" @@ -4477,6 +4563,21 @@ msgid "" msgstr "" #: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Anim Clips" +msgstr "動畫剪輯:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Audio Clips" +msgstr "音訊剪輯:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#, fuzzy +msgid "Functions" +msgstr "函數:" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy msgid "Node Renamed" @@ -4720,6 +4821,11 @@ msgstr "移動節點" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy +msgid "Transition exists!" +msgstr "è½‰å ´: " + +#: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Add Transition" msgstr "æ·»åŠ è½‰æ›" @@ -4805,6 +4911,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" @@ -5067,6 +5178,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 "ç¬¬ä¸€é …" @@ -5176,6 +5313,15 @@ msgid "Grid Step:" msgstr "ç¶²æ ¼å¤§å°:" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Primary Line Every:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "steps" +msgstr "2æ¥" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" msgstr "旋轉åç§»é‡:" @@ -5185,6 +5331,11 @@ msgstr "旋轉æ¥é©Ÿ:" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Scale Step:" +msgstr "縮放:" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Vertical Guide" msgstr "垂直移動尺標" @@ -5260,6 +5411,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 "僅é™éŒ¨é»ž" @@ -5273,6 +5505,20 @@ 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 #, fuzzy msgid "Lock Selected" msgstr "工具鏿“‡" @@ -5422,6 +5668,11 @@ msgstr "使用旋轉å¸é™„" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy +msgid "Use Scale Snap" +msgstr "使用å¸é™„" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Snap Relative" msgstr "相å°å¸é™„" @@ -5574,7 +5825,7 @@ msgstr "æ’入幀 (ç¾æœ‰è»Œé“)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" -"Auto insert keys when objects are translated, rotated on scaled (based on " +"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." @@ -5931,11 +6182,27 @@ msgstr "å‰µå»ºè¼ªå»“ç¶²æ ¼" msgid "Outline Size:" msgstr "輪廓尺寸:" +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Channel Debug" +msgstr "" + #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Remove item %d?" msgstr "åˆ é™¤é …ç›®%d?" #: editor/plugins/mesh_library_editor_plugin.cpp +#, fuzzy +msgid "" +"Update from existing scene?:\n" +"%s" +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 "æ·»åŠ é …ç›®" @@ -6588,6 +6855,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 "導入主題" @@ -6722,10 +7006,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 "æ¥å…¥" @@ -6823,11 +7103,6 @@ msgid "Source" msgstr "資æº" #: editor/plugins/script_text_editor.cpp -#, fuzzy -msgid "Signal" -msgstr "信號" - -#: editor/plugins/script_text_editor.cpp msgid "Target" msgstr "" @@ -6856,6 +7131,11 @@ msgid "Only resources from filesystem can be dropped." msgstr "åªèƒ½æ‹–拽檔案系統ä¸çš„資æºã€‚" #: editor/plugins/script_text_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Can't drop nodes because script '%s' is not used in this scene." +msgstr "" + +#: editor/plugins/script_text_editor.cpp msgid "Lookup Symbol" msgstr "查找符號" @@ -7518,20 +7798,39 @@ msgstr "創建2Dç¶²æ ¼" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "Mesh2D Preview" +msgstr "å‰µå»ºç¶²æ ¼é 覽" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create Polygon2D" msgstr "創建3D多邊形" #: editor/plugins/sprite_editor_plugin.cpp +msgid "Polygon2D Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp #, fuzzy msgid "Create CollisionPolygon2D" msgstr "創建碰撞多邊形" #: editor/plugins/sprite_editor_plugin.cpp #, fuzzy +msgid "CollisionPolygon2D Preview" +msgstr "創建碰撞多邊形" + +#: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy msgid "Create LightOccluder2D" msgstr "創建é®å…‰å¤šé‚Šå½¢" #: editor/plugins/sprite_editor_plugin.cpp +#, fuzzy +msgid "LightOccluder2D Preview" +msgstr "創建é®å…‰å¤šé‚Šå½¢" + +#: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" msgstr "Sprite 是空的ï¼" @@ -7620,6 +7919,11 @@ msgid "Add Frame" msgstr "æ·»åŠ å¹€" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "Unable to load images" +msgstr "載入資æºå¤±æ•—。" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" msgstr "éŒ¯èª¤ï¼šç„¡æ³•åŠ è¼‰å¹€è³‡æºï¼" @@ -7912,6 +8216,7 @@ msgid "Data Type:" msgstr "數據類型:" #: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Icon" msgstr "圖標" @@ -7928,8 +8233,9 @@ msgid "Color" msgstr "é¡è‰²" #: editor/plugins/theme_editor_plugin.cpp -msgid "Constant" -msgstr "固定" +#, fuzzy +msgid "Theme File" +msgstr "主題" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" @@ -8048,6 +8354,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 "下一個座標" @@ -8066,6 +8386,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 "旋轉模å¼" @@ -8296,6 +8651,16 @@ msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy +msgid "Make Convex" +msgstr "使多邊形凸起" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Make Concave" +msgstr "使多邊形塌陷" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create Collision Polygon" msgstr "創建碰撞多邊形" @@ -8589,8 +8954,9 @@ msgid "Dodge operator." msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp -msgid "HardLight operator" -msgstr "" +#, fuzzy +msgid "HardLight operator." +msgstr "縮放(比例):" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Lighten operator." @@ -9186,9 +9552,10 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "" -"Custom Godot Shader Language expression, which 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." +"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 @@ -9253,6 +9620,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 "" @@ -9298,6 +9674,12 @@ 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 "導出路徑" @@ -9346,6 +9728,11 @@ msgid "Make Patch" msgstr "製作補ä¸" #: editor/project_export.cpp +#, fuzzy +msgid "Pack File" +msgstr " 資料夾" + +#: editor/project_export.cpp msgid "Features" msgstr "功能" @@ -9401,6 +9788,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 "缺少æ¤å¹³è‡ºçš„導出範本:" @@ -9681,6 +10077,10 @@ msgid "Projects" msgstr "專案" #: editor/project_manager.cpp +msgid "Last Modified" +msgstr "" + +#: editor/project_manager.cpp msgid "Scan" msgstr "" @@ -9765,18 +10165,6 @@ msgid "Device" msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Shift+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Alt+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp -msgid "Control+" -msgstr "" - -#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." msgstr "" @@ -11069,10 +11457,6 @@ msgid "GDNative" msgstr "" #: modules/gdscript/gdscript_functions.cpp -msgid "Expected a string of length 1 (a character)." -msgstr "" - -#: modules/gdscript/gdscript_functions.cpp #, fuzzy msgid "Step argument is zero!" msgstr "step引數為0!" @@ -11224,6 +11608,11 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy +msgid "Paste Selects" +msgstr "擦除é¸ä¸" + +#: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clear Selection" msgstr "æ‰€æœ‰çš„é¸æ“‡" @@ -11373,6 +11762,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 "無效å稱.ä¸èƒ½èˆ‡ç¾æœ‰çš„內置類型å稱沖çª." @@ -11438,16 +11837,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 "刪除點" @@ -11497,10 +11886,6 @@ 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 "" @@ -11584,7 +11969,7 @@ msgid "Can't create function of nodes from nodes of multiple functions." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Select atleast one node with sequence port." +msgid "Select at least one node with sequence port." msgstr "" #: modules/visual_script/visual_script_editor.cpp @@ -11626,6 +12011,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 "函數:" @@ -11827,27 +12227,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 "" @@ -11903,11 +12286,21 @@ msgstr "無法新增資料夾" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package short name." +msgstr "ä¸èƒ½ä½¿ç”¨çš„å稱。" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid package unique name." msgstr "ä¸èƒ½ä½¿ç”¨çš„å稱。" #: platform/uwp/export/export.cpp #, fuzzy +msgid "Invalid package publisher display name." +msgstr "ä¸èƒ½ä½¿ç”¨çš„å稱。" + +#: platform/uwp/export/export.cpp +#, fuzzy msgid "Invalid product GUID." msgstr "ä¸èƒ½ä½¿ç”¨çš„å稱。" @@ -12465,6 +12858,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Pause the scene" +#~ msgstr "æš«åœæ¤å ´æ™¯" + #, fuzzy #~ msgid "Snap to Grid" #~ msgstr "å¸é™„åˆ°ç¶²æ ¼" @@ -12687,10 +13083,6 @@ msgstr "" #~ msgstr "放大" #, fuzzy -#~ msgid "New TextFile" -#~ msgstr "éŽæ¿¾æª”案..." - -#, fuzzy #~ msgid "Zoom:" #~ msgstr "放大" @@ -12831,9 +13223,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "用...å–代" -#~ msgid "Case Sensitive" -#~ msgstr "å€åˆ†å¤§å°å¯«" - #~ msgid "Prompt On Replace" #~ msgstr "æ¯æ¬¡å–代都è¦å…ˆè©¢å•我" diff --git a/main/default_controller_mappings.h b/main/default_controller_mappings.h index 15fc6fa361..9e2a69acec 100644 --- a/main/default_controller_mappings.h +++ b/main/default_controller_mappings.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/gamecontrollerdb.txt b/main/gamecontrollerdb.txt index 0e30cfe8d0..5793ebd92d 100644 --- a/main/gamecontrollerdb.txt +++ b/main/gamecontrollerdb.txt @@ -1,18 +1,44 @@ -# Game Controller DB for SDL in 2.0.9 format +# Game Controller DB for SDL in 2.0.10 format # Source: https://github.com/gabomdq/SDL_GameControllerDB # Windows 03000000fa2d00000100000000000000,3DRUDDER,leftx:a0,lefty:a1,rightx:a5,righty:a2,platform:Windows, 03000000c82d00002038000000000000,8bitdo,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d000011ab000000000000,8BitDo F30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001038000000000000,8BitDo F30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000090000000000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000650000000000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000310000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00002028000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00008010000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00000190000000000000,8BitDo N30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001590000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00006528000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00015900000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00065280000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, 03000000022000000090000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, 03000000203800000900000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000130000000000000,8BitDo SF30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, 03000000c82d00000060000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, 03000000c82d00000061000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d000021ab000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, 03000000102800000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, 03000000c82d00003028000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000030000000000000,8BitDo SN30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000351000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00001290000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d000020ab000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00004028000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00006228000000000000,8BitDo SN30 GP,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000260000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000261000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000031000000000000,8BitDo Wireless Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, 03000000a00500003232000000000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, 030000008f0e00001200000000000000,Acme GA-02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, 03000000fa190000f0ff000000000000,Acteck AGJ-3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +030000006f0e00001413000000000000,Afterglow,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000006f0e00000263000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000006f0e00001101000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, @@ -21,6 +47,7 @@ 030000006f0e00001901000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000006f0e00001a01000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000d62000001d57000000000000,Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000869800002400000000007801,Astro C40 TR,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 03000000d6200000e557000000000000,Batarang,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,platform:Windows, 030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, @@ -38,6 +65,7 @@ 0300000066f700000500000000000000,BrutalLegendTest,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, 03000000d81d00000b00000000000000,BUFFALO BSGP1601 Series ,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows, 03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000457500000401000000000000,Cobra,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000005e0400008e02000000000000,Controller (XBOX 360 For Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 030000005e040000a102000000000000,Controller (Xbox 360 Wireless Receiver for Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 030000005e040000ff02000000000000,Controller (Xbox One For Windows) - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, @@ -50,6 +78,7 @@ 030000006f0e00003001000000000000,EA SPORTS PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000b80500000410000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, 03000000b80500000610000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +03000000120c0000f61c000000000000,Elite,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, 03000000341a00000108000000000000,EXEQ RF USB Gamepad 8206,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, 03000000852100000201000000000000,FF-GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, @@ -83,6 +112,7 @@ 030000000d0f00004900000000000000,Hatsune Miku Sho Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000d81400000862000000000000,HitBox Edition Cthulhu+,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, 03000000632500002605000000000000,HJD-X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000000d0f00002d00000000000000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00005f00000000000000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00005e00000000000000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00004000000000000000,Hori Fighting Stick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, @@ -90,9 +120,12 @@ 030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00004d00000000000000,Hori Pad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00009200000000000000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00001600000000007803,HORI Real Arcade Pro EX-SE (Xbox 360),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Windows, +030000000d0f00009c00000000000000,Hori TAC Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f0000c100000000000000,Horipad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006e00000000000000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006600000000000000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005500000000000000,Horipad 4 FPS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f0000ee00000000000000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000250900000017000000000000,HRAP2 on PS/SS/N64 Joypad to USB BOX,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,platform:Windows, 030000008f0e00001330000000000000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,platform:Windows, @@ -138,9 +171,13 @@ 03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,platform:Windows, 03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, 03000000790000004318000000000000,Mayflash GameCube Controller Adapter,a:b1,b:b2,back:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b0,leftshoulder:b4,leftstick:b0,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b0,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, +03000000242f00007300000000000000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, +0300000079000000d218000000000000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d620000010a7000000000000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000008f0e00001030000000000000,Mayflash USB Adapter for original Sega Saturn controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,rightshoulder:b2,righttrigger:b7,start:b9,x:b3,y:b4,platform:Windows, 0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, 03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000790000002418000000000000,Mega Drive,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b2,start:b9,x:b3,y:b4,platform:Windows, 03000000380700006382000000000000,MLG GamePad PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000efbe0000edfe000000000000,Monect Virtual Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows, 03000000250900006688000000000000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, @@ -191,6 +228,8 @@ 03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 03000000321500000204000000000000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000321500000104000000000000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000507000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000321500000707000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 030000000d0f00001100000000000000,REAL ARCADE PRO.3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, @@ -221,6 +260,7 @@ 03000000a30600002106000000000000,Saitek PS1000,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, 03000000a306000020f6000000000000,Saitek PS2700,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, 03000000300f00001101000000000000,Saitek Rumble Pad,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000730700000401000000000000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Windows, 0300000000050000289b000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, 030000009b2800000500000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, 030000005e0400008e02000000007801,ShanWan PS3/PC Wired GamePad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, @@ -228,7 +268,9 @@ 03000000341a00000908000000000000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, 030000008f0e00000800000000000000,SpeedLink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000d11800000094000000000000,Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, 03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000381000001214000000000000,SteelSeries Free,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, 03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,platform:Windows, 03000000790000001c18000000000000,STK-7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000ff1100003133000000000000,SVEN X-PAD,a:b2,b:b3,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a4,start:b5,x:b0,y:b1,platform:Windows, @@ -247,6 +289,7 @@ 03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 030000004f04000087b6000000000000,TWCS Throttle,dpdown:b8,dpleft:b9,dpright:b7,dpup:b6,leftstick:b5,lefttrigger:-a5,leftx:a0,lefty:a1,righttrigger:+a5,platform:Windows, 03000000d90400000200000000000000,TwinShock PS2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000006e0500001320000000000000,U4113,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000101c0000171c000000000000,uRage Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000300f00000701000000000000,USB 4-Axis 12-Button Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, 03000000341a00002308000000000000,USB gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, @@ -256,7 +299,9 @@ 03000000f0250000c183000000000000,USB gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000ff1100004133000000000000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, 03000000632500002305000000000000,USB Vibration Joystick (BM),a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000790000001a18000000000000,Venom,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000790000001b18000000000000,Venom Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000302000000000000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, 030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 03000000341a00000608000000000000,Xeox,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, 03000000450c00002043000000000000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, @@ -267,10 +312,14 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, # Mac OS X 030000008f0e00000300000009010000,2In1 USB Joystick,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000c82d00000650000001000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Mac OS X, 03000000022000000090000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, 03000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, 03000000c82d00000190000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, 03000000102800000900000000000000,8Bitdo SFC30 GamePad Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000260000001000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000031000001000000,8BitDo Wireless Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, 03000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, 03000000a00500003232000009010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, 03000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, @@ -282,6 +331,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, 030000006f0e00000102000000000000,GameStop Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, 030000007d0400000540000001010000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00002d00000000100000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00005f00000000010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00005e00000000010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00005f00000000000000,HORI Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, @@ -302,6 +352,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d04000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d04000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006d04000019c2000005030000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d0400001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, 030000006d04000018c2000000010000,Logitech RumblePad 2 USB,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d04000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, @@ -310,14 +361,19 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000380700008433000000010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000380700008483000000010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000242f00007300000000020000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Mac OS X, +0300000079000000d218000026010000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, +03000000d620000010a7000003010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Mac OS X, 03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X, 03000000d8140000cecf000000000000,MC Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000d62000007162000001000000,Moga Pro 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X, +03000000632500007505000000020000,NEOGEO mini PAD Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Mac OS X, 030000001008000001e5000006010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,platform:Mac OS X, 030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, 030000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, 030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Mac OS X, +030000004c050000da0c000000010000,Playstation Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X, 03000000d62000006dca000000010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, 030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, @@ -329,6 +385,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000321500000204000000010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000321500000104000000010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000321500000010000000010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000507000001010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, 03000000321500000009000000020000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, 030000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, 0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, @@ -336,6 +393,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000790000001100000006010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, 030000006b140000010d000000010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000c6240000fefa000000000000,Rock Candy Gamepad for PS3,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000730700000401000000010000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Mac OS X, 03000000811700007e05000000000000,Sega Saturn,a:b2,b:b4,dpdown:b16,dpleft:b15,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,leftx:a0,lefty:a2,rightshoulder:b9,righttrigger:a4,start:b13,x:b0,y:b6,platform:Mac OS X, 03000000b40400000a01000000000000,Sega Saturn USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Mac OS X, 030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, @@ -353,6 +411,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000bd12000015d0000000000000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, 03000000bd12000015d0000000010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, 03000000100800000100000000000000,Twin USB Joystick,a:b4,b:b2,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b12,leftstick:b20,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b14,rightstick:b22,righttrigger:b10,rightx:a6,righty:a4,start:b18,x:b6,y:b0,platform:Mac OS X, +030000006f0e00000302000025040000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000791d00000103000009010000,Wii Classic Controller,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, 050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,back:b7,dpdown:b3,dpleft:b0,dpright:b1,dpup:b2,guide:b8,leftshoulder:b11,lefttrigger:b12,leftx:a0,lefty:a1,start:b6,x:b10,y:b9,platform:Mac OS X, 050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b19,leftstick:b23,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b24,righttrigger:b22,rightx:a2,righty:a3,start:b6,x:b18,y:b17,platform:Mac OS X, 030000005e0400008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, @@ -370,37 +430,57 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, # Linux 05000000c82d00001038000000010000,8Bitdo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00005106000000010000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00001590000011010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000310000011010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux, +05000000c82d00008010000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux, 03000000022000000090000011010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 05000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 05000000c82d00002038000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 03000000c82d00000190000011010000,8Bitdo NES30 Pro 8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000060000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 05000000c82d00000061000000010000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, 05000000102800000900000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, 05000000c82d00003028000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00001290000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00006228000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +03000000c82d00000260000011010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +030000005e0400008e02000020010000,8BitDo Wireless Adapter,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c82d00000031000011010000,8BitDo Wireless Adapter,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 05000000a00500003232000001000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, 05000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, 030000006f0e00001302000000010000,Afterglow,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000006f0e00003901000020060000,Afterglow Controller for Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -030000006f0e00003901000013020000,Afterglow Prismatic Wired Controller 048-007-NA,a:b0,b:b1,x:b2,y:b3,back:b6,guide:b8,start:b7,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux, 030000006f0e00003901000000430000,Afterglow Prismatic Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003901000013020000,Afterglow Prismatic Wired Controller 048-007-NA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000100000008200000011010000,Akishop Customs PS360+ v1.66,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, 05000000491900000204000021000000,Amazon Fire Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 05000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux, 05000000050b00000045000040000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux, 03000000120c00000500000010010000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux, 03000000666600006706000000010000,boom PSX to PC Converter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Linux, +03000000ffff0000ffff000000010000,Chinese-made Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, 03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +030000000b0400003365000000010000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Linux, 03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Linux, 03000000a306000022f6000011010000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, 03000000b40400000a01000000010000,CYPRESS USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux, 03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux, +030000004f04000004b3000010010000,Dual Power 2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, 030000006f0e00003001000001010000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux, 03000000bc2000000055000011010000,GameSir G3w,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000008f0e00000800000010010000,Gasia Co. Ltd PS(R) Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, -030000006f0e00001304000000010000,Generic X-Box pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:a0,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:a3,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001304000000010000,Generic X-Box pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 0300000079000000d418000000010000,GPD Win 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000007d0400000540000000010000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, @@ -408,6 +488,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000008f0e00000610000000010000,GreenAsia Electronics 4Axes 12Keys GamePad ,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Linux, 030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, 0500000047532067616d657061640000,GS gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000f0250000c383000010010000,GT VX2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 06000000adde0000efbe000002010000,Hidromancer Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000d81400000862000011010000,HitBox (PS3/PC) Analog Mode,a:b1,b:b2,back:b8,guide:b9,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,platform:Linux, 03000000c9110000f055000011010000,HJC Game GAMEPAD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, @@ -420,6 +501,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000000d0f00005e00000011010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000000d0f00009200000011010000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00001600000000010000,Hori Real Arcade Pro.EX-SE (Xbox 360),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, 030000000d0f00006e00000011010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000000d0f00006600000011010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000000d0f0000ee00000011010000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, @@ -428,6 +510,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux, 050000006964726f69643a636f6e0000,idroid:con,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000b50700001503000010010000,impact,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, +03000000d80400008200000003000000,IMS PCU#0 Gamepad Interface,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b5,x:b3,y:b2,platform:Linux, 03000000fd0500000030000000010000,InterAct GoPad I-73000 (Fighting Game Layout),a:b3,b:b4,back:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b7,x:b0,y:b1,platform:Linux, 0500000049190000020400001b010000,Ipega PG-9069 - Bluetooth Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b161,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux, @@ -463,10 +546,12 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000380700001888000010010000,MadCatz PC USB Wired Stick 8818,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000380700003888000010010000,MadCatz PC USB Wired Stick 8838,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -0300000079000000d218000011010000,MAGIC-NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000120c00000500000000010000,Manta Dualshock 2,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, 03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux, 03000000790000004318000010010000,Mayflash GameCube Controller Adapter,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000242f00007300000011010000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux, +0300000079000000d218000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000d620000010a7000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 0300000025090000e803000001010000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, 03000000780000000600000010010000,Microntek USB Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, 030000005e0400000e00000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux, @@ -474,16 +559,20 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000005e0400008e02000062230000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e040000e302000003020000,Microsoft X-Box One Elite pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e040000d102000001010000,Microsoft X-Box One pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000050b000003090000,Microsoft X-Box One Elite 2 pad,a:b0,b:b1,y:b4,x:b3,start:b11,guide:b12,back:b17,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,platform:Linux, 030000005e040000dd02000003020000,Microsoft X-Box One pad (Firmware 2015),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e040000d102000003020000,Microsoft X-Box One pad v2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e0400008502000000010000,Microsoft X-Box pad (Japan),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, 030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, +03000000c62400001a53000000010000,Mini PE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000030000000300000002000000,Miroof,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux, 05000000d6200000e589000001000000,Moga 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, 05000000d6200000ad0d000001000000,Moga Pro,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, 05000000d62000007162000001000000,Moga Pro 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, 03000000250900006688000000010000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, 030000000d0f00000900000010010000,Natec Genesis P44,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,platform:Linux, +030000007e0500003703000000016800,Nintendo GameCube Controller,a:b0,b:b2,dpdown:b6,dpleft:b4,dpright:b5,dpup:b7,lefttrigger:a4,leftx:a0,lefty:a1~,rightshoulder:b9,righttrigger:a5,rightx:a2,righty:a3~,start:b8,x:b1,y:b3,platform:Linux, 050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 050000007e0500003003000001000000,Nintendo Wii Remote Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, 05000000010000000100000003000000,Nintendo Wiimote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, @@ -498,9 +587,11 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000006f0e0000a802000023020000,PDP Wired Controller for Xbox One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +030000004c050000da0c000011010000,Playstation Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, 03000000c62400000053000000010000,PowerA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000c62400003a54000001010000,PowerA 1428124-01,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000d62000006dca000011010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d040000d2ca000011010000,Precision Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, 03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000004c0500006802000010010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, @@ -510,7 +601,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000006f0e00001402000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000008f0e00000300000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 050000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, -050000004c0500006802000000800000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c0500006802000000800000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, 060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, @@ -521,6 +612,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, @@ -533,6 +625,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000321500000204000011010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000321500000104000011010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 03000000321500000010000011010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000507000000010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -540,6 +633,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, 0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000790000001100000010010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, +0300000081170000990a000001010000,Retronic Adapter,a:b0,leftx:a0,lefty:a1,platform:Linux, 0300000000f000000300000000010000,RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, 030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000006f0e00001f01000000010000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -548,9 +642,11 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, 03000000a30600000cff000010010000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,platform:Linux, 03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,platform:Linux, +03000000300f00001201000010010000,Saitek P380,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a1,righty:a2,start:b9,x:b0,y:b1,platform:Linux, 03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,platform:Linux, 03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux, 03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000d81d00000e00000010010000,Savior,a:b0,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b9,x:b4,y:b5,platform:Linux, 03000000c01600008704000011010000,Serial/Keyboard/Mouse/Joystick,a:b12,b:b10,back:b4,dpdown:b2,dpleft:b3,dpright:b1,dpup:b0,leftshoulder:b9,leftstick:b14,lefttrigger:b6,leftx:a1,lefty:a0,rightshoulder:b8,rightstick:b15,righttrigger:b7,rightx:a2,righty:a3,start:b5,x:b13,y:b11,platform:Linux, 03000000f025000021c1000010010000,ShanWan Gioteck PS3 Wired Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 03000000632500007505000010010000,SHANWAN PS3/PC Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, @@ -582,11 +678,15 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000004f04000012b3000010010000,Thrustmaster vibrating gamepad,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, 03000000bd12000015d0000010010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, 03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, +030000005e0400008e02000070050000,Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c01100000591000011010000,Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, 03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, 03000000790000000600000007010000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux, 03000000790000001100000000010000,USB Gamepad1,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux, +030000006f0e00000302000011010000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, 05000000ac0500003232000001000000,VR-BOX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, +03000000791d00000103000010010000,Wii Classic Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -596,9 +696,11 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 0000000058626f782033363020576900,Xbox 360 Wireless Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux, 030000005e040000a102000014010000,Xbox 360 Wireless Receiver (XBOX),a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, -030000005e040000ea02000001030000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000d102000002010000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +050000005e040000fd02000030110000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 050000005e040000e002000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 050000005e040000fd02000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, +030000005e040000ea02000001030000,Xbox One Wireless Controller (Model 1708),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000450c00002043000010010000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 05000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Linux, 03000000c0160000e105000001010000,Xin-Mo Xin-Mo Dual Arcade,a:b4,b:b3,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b9,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b1,y:b0,platform:Linux, @@ -619,6 +721,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 050000004c050000c4050000fffe3f00,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, 050000004c050000cc090000fffe3f00,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, 35643031303033326130316330353564,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000003215000005070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000003215000007070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000003215000000090000bf7f3f00,Razer Serval,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, 05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, 05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, @@ -630,9 +734,15 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, # iOS 05000000ac0500000100000000006d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac050000010000004f066d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac05000001000000cf076d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, 05000000ac0500000200000000006d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS, +05000000ac050000020000004f066d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS, +050000004c050000cc090000df070000,DUALSHOCK 4 Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, 4d466947616d65706164010000000000,MFi Extended Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:iOS, 4d466947616d65706164020000000000,MFi Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:iOS, 05000000ac0500000300000000006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS, +05000000ac0500000300000043006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS, 05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, 05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, +050000005e040000e0020000df070000,Xbox Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, diff --git a/main/input_default.cpp b/main/input_default.cpp index 60675f1115..820069dba3 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/input_default.h b/main/input_default.h index 4fc4ad6506..02ce5c1e82 100644 --- a/main/input_default.h +++ b/main/input_default.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/main.cpp b/main/main.cpp index c34d3da618..308c53de13 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; @@ -205,8 +208,8 @@ void Main::print_help(const char *p_binary) { print_line(String(VERSION_NAME) + " v" + get_full_version_string() + " - " + String(VERSION_WEBSITE)); OS::get_singleton()->print("Free and open source software under the terms of the MIT license.\n"); - OS::get_singleton()->print("(c) 2007-2019 Juan Linietsky, Ariel Manzur.\n"); - OS::get_singleton()->print("(c) 2014-2019 Godot Engine contributors.\n"); + OS::get_singleton()->print("(c) 2007-2020 Juan Linietsky, Ariel Manzur.\n"); + OS::get_singleton()->print("(c) 2014-2020 Godot Engine contributors.\n"); OS::get_singleton()->print("\n"); OS::get_singleton()->print("Usage: %s [options] [path to scene or 'project.godot' file]\n", p_binary); OS::get_singleton()->print("\n"); @@ -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,10 @@ 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 <preset> <path> Export the project using the given preset and matching release template. The preset name should match one defined in export_presets.cfg.\n"); + OS::get_singleton()->print(" <path> should be absolute or relative to the project directory, and include the filename for the binary (e.g. 'builds/game.exe').\n"); + OS::get_singleton()->print(" The target directory should exist. Only the data pack is exported if <path> ends with .pck or .zip.\n"); + OS::get_singleton()->print(" --export-debug <preset> <path> Same as --export, but using the 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 +404,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 +596,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 +1023,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 +1129,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 +1346,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(); @@ -1485,11 +1515,11 @@ bool Main::start() { if (_export_preset != "") { if (game_path == "") { - String err = "Command line param "; + String err = "Command line parameter "; err += export_debug ? "--export-debug" : "--export"; err += " passed but no destination path given.\n"; err += "Please specify the binary's file path to export to. Aborting export."; - ERR_PRINT(err.utf8().get_data()); + ERR_PRINT(err); return false; } } @@ -1517,6 +1547,9 @@ bool Main::start() { ERR_FAIL_COND_V_MSG(script_res.is_null(), false, "Can't load script: " + script); if (check_only) { + if (!script_res->is_valid()) { + OS::get_singleton()->set_exit_code(1); + } return false; } @@ -1667,20 +1700,14 @@ bool Main::start() { } #ifdef TOOLS_ENABLED - EditorNode *editor_node = NULL; if (editor) { - editor_node = memnew(EditorNode); sml->get_root()->add_child(editor_node); - //root_node->set_editor(editor); - //startup editor - if (_export_preset != "") { - - editor_node->export_preset(_export_preset, game_path, export_debug, "", true); - game_path = ""; //no load anything + editor_node->export_preset(_export_preset, game_path, export_debug); + game_path = ""; // Do not load anything. } } #endif @@ -2087,6 +2114,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(); @@ -2134,6 +2166,10 @@ void Main::cleanup() { memdelete(audio_server); } + if (camera_server) { + memdelete(camera_server); + } + OS::get_singleton()->finalize(); finalize_physics(); diff --git a/main/main.h b/main/main.h index b0b90dc0fe..e8f8357518 100644 --- a/main/main.h +++ b/main/main.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/main_timer_sync.cpp b/main/main_timer_sync.cpp index edacb20f28..9e23a1f5cb 100644 --- a/main/main_timer_sync.cpp +++ b/main/main_timer_sync.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/main_timer_sync.h b/main/main_timer_sync.h index 93d335b27f..620d1c747d 100644 --- a/main/main_timer_sync.h +++ b/main/main_timer_sync.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/performance.cpp b/main/performance.cpp index 71cd94aeab..d829c6dfdc 100644 --- a/main/performance.cpp +++ b/main/performance.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/performance.h b/main/performance.h index 912e005c53..638ddbe993 100644 --- a/main/performance.h +++ b/main/performance.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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/main/tests/test_astar.cpp b/main/tests/test_astar.cpp index 4b60a3e94a..dee107f0af 100644 --- a/main/tests/test_astar.cpp +++ b/main/tests/test_astar.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_astar.h b/main/tests/test_astar.h index 0b3e4d6c9d..0992812c18 100644 --- a/main/tests/test_astar.h +++ b/main/tests/test_astar.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_gdscript.cpp b/main/tests/test_gdscript.cpp index b2b2c22bf9..729c5f99cf 100644 --- a/main/tests/test_gdscript.cpp +++ b/main/tests/test_gdscript.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_gdscript.h b/main/tests/test_gdscript.h index 6b98f7cc41..6595da1430 100644 --- a/main/tests/test_gdscript.h +++ b/main/tests/test_gdscript.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_gui.cpp b/main/tests/test_gui.cpp index a71b9cdc69..f0b00aeeae 100644 --- a/main/tests/test_gui.cpp +++ b/main/tests/test_gui.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_gui.h b/main/tests/test_gui.h index 075bc40aa7..5a23179eee 100644 --- a/main/tests/test_gui.h +++ b/main/tests/test_gui.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_main.cpp b/main/tests/test_main.cpp index 22f1d7319f..2c2e6e8b45 100644 --- a/main/tests/test_main.cpp +++ b/main/tests/test_main.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_main.h b/main/tests/test_main.h index 521284bec8..56db3ea2a5 100644 --- a/main/tests/test_main.h +++ b/main/tests/test_main.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_math.cpp b/main/tests/test_math.cpp index 68ecb2b1b2..af537fb3f4 100644 --- a/main/tests/test_math.cpp +++ b/main/tests/test_math.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_math.h b/main/tests/test_math.h index 9f1e96358f..77bce8dd66 100644 --- a/main/tests/test_math.h +++ b/main/tests/test_math.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_oa_hash_map.cpp b/main/tests/test_oa_hash_map.cpp index beee52d1de..edb57f2a9f 100644 --- a/main/tests/test_oa_hash_map.cpp +++ b/main/tests/test_oa_hash_map.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_oa_hash_map.h b/main/tests/test_oa_hash_map.h index fb43dc325f..60cde961c5 100644 --- a/main/tests/test_oa_hash_map.h +++ b/main/tests/test_oa_hash_map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_ordered_hash_map.cpp b/main/tests/test_ordered_hash_map.cpp index 6aef94efe3..4a74ad5898 100644 --- a/main/tests/test_ordered_hash_map.cpp +++ b/main/tests/test_ordered_hash_map.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_ordered_hash_map.h b/main/tests/test_ordered_hash_map.h index 731a36a716..03e559107e 100644 --- a/main/tests/test_ordered_hash_map.h +++ b/main/tests/test_ordered_hash_map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_physics.cpp b/main/tests/test_physics.cpp index 6850c4d88a..3f4f91f8f4 100644 --- a/main/tests/test_physics.cpp +++ b/main/tests/test_physics.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_physics.h b/main/tests/test_physics.h index a281f669e0..fbbc59bba9 100644 --- a/main/tests/test_physics.h +++ b/main/tests/test_physics.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_physics_2d.cpp b/main/tests/test_physics_2d.cpp index 9a2bf0107a..51cca32090 100644 --- a/main/tests/test_physics_2d.cpp +++ b/main/tests/test_physics_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_physics_2d.h b/main/tests/test_physics_2d.h index 3a513f4d6e..517d324f3b 100644 --- a/main/tests/test_physics_2d.h +++ b/main/tests/test_physics_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_render.cpp b/main/tests/test_render.cpp index 826d544f13..0e101fb566 100644 --- a/main/tests/test_render.cpp +++ b/main/tests/test_render.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_render.h b/main/tests/test_render.h index 6dda57db5b..4a6340c443 100644 --- a/main/tests/test_render.h +++ b/main/tests/test_render.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_shader_lang.cpp b/main/tests/test_shader_lang.cpp index d66e706b6f..cac5b95635 100644 --- a/main/tests/test_shader_lang.cpp +++ b/main/tests/test_shader_lang.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_shader_lang.h b/main/tests/test_shader_lang.h index 79213aa96f..2811c5f46e 100644 --- a/main/tests/test_shader_lang.h +++ b/main/tests/test_shader_lang.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_string.cpp b/main/tests/test_string.cpp index 7a41880645..9e8c8706ff 100644 --- a/main/tests/test_string.cpp +++ b/main/tests/test_string.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/main/tests/test_string.h b/main/tests/test_string.h index a8adb3a890..96fa811126 100644 --- a/main/tests/test_string.h +++ b/main/tests/test_string.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/methods.py b/methods.py index 86ab7cd9af..33b8f1cbe7 100644 --- a/methods.py +++ b/methods.py @@ -1,9 +1,7 @@ import os import os.path -import sys import re import glob -import string import subprocess from compat import iteritems, isbasestring, decode_utf8 @@ -69,8 +67,7 @@ def update_version(module_version_string=""): f.write("#define VERSION_NAME \"" + str(version.name) + "\"\n") f.write("#define VERSION_MAJOR " + str(version.major) + "\n") f.write("#define VERSION_MINOR " + str(version.minor) + "\n") - if hasattr(version, 'patch'): - f.write("#define VERSION_PATCH " + str(version.patch) + "\n") + f.write("#define VERSION_PATCH " + str(version.patch) + "\n") f.write("#define VERSION_STATUS \"" + str(version.status) + "\"\n") f.write("#define VERSION_BUILD \"" + str(build_name) + "\"\n") f.write("#define VERSION_MODULE_CONFIG \"" + str(version.module_config) + module_version_string + "\"\n") @@ -307,7 +304,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 +317,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 +324,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/dummy.cpp b/misc/dist/ios_xcode/godot_ios/dummy.cpp index 7b52e926b0..0fcbf227b5 100644 --- a/misc/dist/ios_xcode/godot_ios/dummy.cpp +++ b/misc/dist/ios_xcode/godot_ios/dummy.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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/linux/org.godotengine.Godot.appdata.xml b/misc/dist/linux/org.godotengine.Godot.appdata.xml index 09d5468d70..45a4bbdd9e 100644 --- a/misc/dist/linux/org.godotengine.Godot.appdata.xml +++ b/misc/dist/linux/org.godotengine.Godot.appdata.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Copyright 2017-2019 Rémi Verschelde <akien@godotengine.org> --> +<!-- Copyright 2017-2020 Rémi Verschelde <akien@godotengine.org> --> <component type="desktop"> <id>org.godotengine.Godot</id> <metadata_license>CC0-1.0</metadata_license> 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..46d2d4cb6e 100755 --- a/misc/dist/osx_tools.app/Contents/Info.plist +++ b/misc/dist/osx_tools.app/Contents/Info.plist @@ -9,7 +9,7 @@ <key>CFBundleName</key> <string>Godot</string> <key>CFBundleGetInfoString</key> - <string>(c) 2007-2019 Juan Linietsky, Ariel Manzur & Godot Engine contributors</string> + <string>(c) 2007-2020 Juan Linietsky, Ariel Manzur & Godot Engine contributors</string> <key>CFBundleIconFile</key> <string>Godot.icns</string> <key>CFBundleIdentifier</key> @@ -24,10 +24,14 @@ <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> - <string>© 2007-2019 Juan Linietsky, Ariel Manzur & Godot Engine contributors</string> + <string>© 2007-2020 Juan Linietsky, Ariel Manzur & Godot Engine contributors</string> <key>LSMinimumSystemVersion</key> <string>10.9.0</string> <key>LSMinimumSystemVersionByArchitecture</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_headers.py b/misc/scripts/fix_headers.py index d94db22b42..f0038a8351 100755 --- a/misc/scripts/fix_headers.py +++ b/misc/scripts/fix_headers.py @@ -9,8 +9,8 @@ header = """\ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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.h b/modules/arkit/arkit_interface.h index e1dbca1488..cb18350409 100644 --- a/modules/arkit/arkit_interface.h +++ b/modules/arkit/arkit_interface.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/arkit/arkit_interface.mm b/modules/arkit/arkit_interface.mm index 71642cfc30..1896a34e46 100644 --- a/modules/arkit/arkit_interface.mm +++ b/modules/arkit/arkit_interface.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/arkit/arkit_session_delegate.h b/modules/arkit/arkit_session_delegate.h index 9303552ca6..158b80a60a 100644 --- a/modules/arkit/arkit_session_delegate.h +++ b/modules/arkit/arkit_session_delegate.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/arkit/arkit_session_delegate.mm b/modules/arkit/arkit_session_delegate.mm index d4072fc391..d3c12ad582 100644 --- a/modules/arkit/arkit_session_delegate.mm +++ b/modules/arkit/arkit_session_delegate.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/arkit/register_types.cpp b/modules/arkit/register_types.cpp index af35828004..c78b35529b 100644 --- a/modules/arkit/register_types.cpp +++ b/modules/arkit/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/arkit/register_types.h b/modules/arkit/register_types.h index 6ed2065de2..5c697baf68 100644 --- a/modules/arkit/register_types.h +++ b/modules/arkit/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/assimp/editor_scene_importer_assimp.cpp b/modules/assimp/editor_scene_importer_assimp.cpp index 2cb2a71f1e..1bc84ce3a0 100644 --- a/modules/assimp/editor_scene_importer_assimp.cpp +++ b/modules/assimp/editor_scene_importer_assimp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/editor_scene_importer_assimp.h b/modules/assimp/editor_scene_importer_assimp.h index a47d7ac46e..4cd50e7681 100644 --- a/modules/assimp/editor_scene_importer_assimp.h +++ b/modules/assimp/editor_scene_importer_assimp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/assimp/import_state.h b/modules/assimp/import_state.h index 9859a88c1c..26aad423cd 100644 --- a/modules/assimp/import_state.h +++ b/modules/assimp/import_state.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/assimp/import_utils.h b/modules/assimp/import_utils.h index 8135b352c6..f4505249db 100644 --- a/modules/assimp/import_utils.h +++ b/modules/assimp/import_utils.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/assimp/register_types.cpp b/modules/assimp/register_types.cpp index 2e8181372e..3af8827bf9 100644 --- a/modules/assimp/register_types.cpp +++ b/modules/assimp/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/assimp/register_types.h b/modules/assimp/register_types.h index f841cd26b2..f363744c0a 100644 --- a/modules/assimp/register_types.h +++ b/modules/assimp/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bmp/image_loader_bmp.cpp b/modules/bmp/image_loader_bmp.cpp index 8708430257..5ce6d59daa 100644 --- a/modules/bmp/image_loader_bmp.cpp +++ b/modules/bmp/image_loader_bmp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bmp/image_loader_bmp.h b/modules/bmp/image_loader_bmp.h index 2debb19a1c..3f10a1c598 100644 --- a/modules/bmp/image_loader_bmp.h +++ b/modules/bmp/image_loader_bmp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bmp/register_types.cpp b/modules/bmp/register_types.cpp index a1e3f386f4..d5cc6c5eb3 100644 --- a/modules/bmp/register_types.cpp +++ b/modules/bmp/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bmp/register_types.h b/modules/bmp/register_types.h index cd2a5c0570..398716eaa1 100644 --- a/modules/bmp/register_types.h +++ b/modules/bmp/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/area_bullet.cpp b/modules/bullet/area_bullet.cpp index a6872d81d7..79ada54f0f 100644 --- a/modules/bullet/area_bullet.cpp +++ b/modules/bullet/area_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/area_bullet.h b/modules/bullet/area_bullet.h index 0942212b9e..f770c63bcc 100644 --- a/modules/bullet/area_bullet.h +++ b/modules/bullet/area_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/btRayShape.cpp b/modules/bullet/btRayShape.cpp index b60d6ba693..4071723a3e 100644 --- a/modules/bullet/btRayShape.cpp +++ b/modules/bullet/btRayShape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/btRayShape.h b/modules/bullet/btRayShape.h index 09c1f6c241..df6dd93d57 100644 --- a/modules/bullet/btRayShape.h +++ b/modules/bullet/btRayShape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/bullet_physics_server.cpp b/modules/bullet/bullet_physics_server.cpp index e01928191a..6662e130c8 100644 --- a/modules/bullet/bullet_physics_server.cpp +++ b/modules/bullet/bullet_physics_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/bullet_physics_server.h b/modules/bullet/bullet_physics_server.h index 4c598c84f2..4a3b4a2edc 100644 --- a/modules/bullet/bullet_physics_server.h +++ b/modules/bullet/bullet_physics_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/bullet_types_converter.cpp b/modules/bullet/bullet_types_converter.cpp index fc007169c0..c9493d8892 100644 --- a/modules/bullet/bullet_types_converter.cpp +++ b/modules/bullet/bullet_types_converter.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/bullet_types_converter.h b/modules/bullet/bullet_types_converter.h index ba36331d07..fef07c55b7 100644 --- a/modules/bullet/bullet_types_converter.h +++ b/modules/bullet/bullet_types_converter.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/bullet_utilities.h b/modules/bullet/bullet_utilities.h index 01a11ca63c..968cb38ba2 100644 --- a/modules/bullet/bullet_utilities.h +++ b/modules/bullet/bullet_utilities.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/collision_object_bullet.cpp b/modules/bullet/collision_object_bullet.cpp index e1800fd3eb..c916c65d2b 100644 --- a/modules/bullet/collision_object_bullet.cpp +++ b/modules/bullet/collision_object_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/collision_object_bullet.h b/modules/bullet/collision_object_bullet.h index 04231b0814..42ba4aa907 100644 --- a/modules/bullet/collision_object_bullet.h +++ b/modules/bullet/collision_object_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/cone_twist_joint_bullet.cpp b/modules/bullet/cone_twist_joint_bullet.cpp index 97b9a81f77..afeafcc356 100644 --- a/modules/bullet/cone_twist_joint_bullet.cpp +++ b/modules/bullet/cone_twist_joint_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/cone_twist_joint_bullet.h b/modules/bullet/cone_twist_joint_bullet.h index 7450a2e166..134706f8bb 100644 --- a/modules/bullet/cone_twist_joint_bullet.h +++ b/modules/bullet/cone_twist_joint_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/constraint_bullet.cpp b/modules/bullet/constraint_bullet.cpp index f3f3907ada..7e90e2b488 100644 --- a/modules/bullet/constraint_bullet.cpp +++ b/modules/bullet/constraint_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/constraint_bullet.h b/modules/bullet/constraint_bullet.h index f6ac3e80c2..89ad150257 100644 --- a/modules/bullet/constraint_bullet.h +++ b/modules/bullet/constraint_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/generic_6dof_joint_bullet.cpp b/modules/bullet/generic_6dof_joint_bullet.cpp index 4aae87c220..86bedd6c45 100644 --- a/modules/bullet/generic_6dof_joint_bullet.cpp +++ b/modules/bullet/generic_6dof_joint_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/generic_6dof_joint_bullet.h b/modules/bullet/generic_6dof_joint_bullet.h index 478a39f103..75c8005811 100644 --- a/modules/bullet/generic_6dof_joint_bullet.h +++ b/modules/bullet/generic_6dof_joint_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/godot_collision_configuration.cpp b/modules/bullet/godot_collision_configuration.cpp index a77cf4ebd1..f3e3a01a52 100644 --- a/modules/bullet/godot_collision_configuration.cpp +++ b/modules/bullet/godot_collision_configuration.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/godot_collision_configuration.h b/modules/bullet/godot_collision_configuration.h index 82fb74f121..ffad1b1bda 100644 --- a/modules/bullet/godot_collision_configuration.h +++ b/modules/bullet/godot_collision_configuration.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/godot_collision_dispatcher.cpp b/modules/bullet/godot_collision_dispatcher.cpp index 5cb50d685f..d919c85469 100644 --- a/modules/bullet/godot_collision_dispatcher.cpp +++ b/modules/bullet/godot_collision_dispatcher.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/godot_collision_dispatcher.h b/modules/bullet/godot_collision_dispatcher.h index d5fb3526fe..5a96268ee9 100644 --- a/modules/bullet/godot_collision_dispatcher.h +++ b/modules/bullet/godot_collision_dispatcher.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/godot_motion_state.h b/modules/bullet/godot_motion_state.h index 188389b33c..e2c1b10e94 100644 --- a/modules/bullet/godot_motion_state.h +++ b/modules/bullet/godot_motion_state.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/godot_ray_world_algorithm.cpp b/modules/bullet/godot_ray_world_algorithm.cpp index 2ba75b9a98..2ef277cf5b 100644 --- a/modules/bullet/godot_ray_world_algorithm.cpp +++ b/modules/bullet/godot_ray_world_algorithm.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/godot_ray_world_algorithm.h b/modules/bullet/godot_ray_world_algorithm.h index 3285d0c962..2cdea6c133 100644 --- a/modules/bullet/godot_ray_world_algorithm.h +++ b/modules/bullet/godot_ray_world_algorithm.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/godot_result_callbacks.cpp b/modules/bullet/godot_result_callbacks.cpp index 360950c4c7..6e54d10abf 100644 --- a/modules/bullet/godot_result_callbacks.cpp +++ b/modules/bullet/godot_result_callbacks.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/godot_result_callbacks.h b/modules/bullet/godot_result_callbacks.h index f292b0a797..4f634ed6f0 100644 --- a/modules/bullet/godot_result_callbacks.h +++ b/modules/bullet/godot_result_callbacks.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/hinge_joint_bullet.cpp b/modules/bullet/hinge_joint_bullet.cpp index 4d26e729db..49e67bfbc1 100644 --- a/modules/bullet/hinge_joint_bullet.cpp +++ b/modules/bullet/hinge_joint_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/hinge_joint_bullet.h b/modules/bullet/hinge_joint_bullet.h index 6555c23848..d1061fe52f 100644 --- a/modules/bullet/hinge_joint_bullet.h +++ b/modules/bullet/hinge_joint_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/joint_bullet.cpp b/modules/bullet/joint_bullet.cpp index a52b05f5c4..6257ff0058 100644 --- a/modules/bullet/joint_bullet.cpp +++ b/modules/bullet/joint_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/joint_bullet.h b/modules/bullet/joint_bullet.h index d2c2796367..c840eb8f14 100644 --- a/modules/bullet/joint_bullet.h +++ b/modules/bullet/joint_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/pin_joint_bullet.cpp b/modules/bullet/pin_joint_bullet.cpp index 8d404e7f04..1c2e5e65cc 100644 --- a/modules/bullet/pin_joint_bullet.cpp +++ b/modules/bullet/pin_joint_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/pin_joint_bullet.h b/modules/bullet/pin_joint_bullet.h index 7c0c5be329..d6e7a945b5 100644 --- a/modules/bullet/pin_joint_bullet.h +++ b/modules/bullet/pin_joint_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/register_types.cpp b/modules/bullet/register_types.cpp index 03fb75cc82..7819b67cad 100644 --- a/modules/bullet/register_types.cpp +++ b/modules/bullet/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/register_types.h b/modules/bullet/register_types.h index ebb875eb1f..5a01a1422e 100644 --- a/modules/bullet/register_types.h +++ b/modules/bullet/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/rid_bullet.h b/modules/bullet/rid_bullet.h index 91ad8164e6..28bcedb01a 100644 --- a/modules/bullet/rid_bullet.h +++ b/modules/bullet/rid_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/rigid_body_bullet.cpp b/modules/bullet/rigid_body_bullet.cpp index d611810bfa..1dd75eb8a9 100644 --- a/modules/bullet/rigid_body_bullet.cpp +++ b/modules/bullet/rigid_body_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/rigid_body_bullet.h b/modules/bullet/rigid_body_bullet.h index 0b6dc997db..ca599f7a77 100644 --- a/modules/bullet/rigid_body_bullet.h +++ b/modules/bullet/rigid_body_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/shape_bullet.cpp b/modules/bullet/shape_bullet.cpp index 85f47c3bbb..f46db09e4a 100644 --- a/modules/bullet/shape_bullet.cpp +++ b/modules/bullet/shape_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/shape_bullet.h b/modules/bullet/shape_bullet.h index 39d0ba7b95..8d3512cab4 100644 --- a/modules/bullet/shape_bullet.h +++ b/modules/bullet/shape_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/shape_owner_bullet.cpp b/modules/bullet/shape_owner_bullet.cpp index d504db1844..d63096d9a3 100644 --- a/modules/bullet/shape_owner_bullet.cpp +++ b/modules/bullet/shape_owner_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/shape_owner_bullet.h b/modules/bullet/shape_owner_bullet.h index 02852bc03d..f909632c99 100644 --- a/modules/bullet/shape_owner_bullet.h +++ b/modules/bullet/shape_owner_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/slider_joint_bullet.cpp b/modules/bullet/slider_joint_bullet.cpp index 45be0578d9..d9ebb9d580 100644 --- a/modules/bullet/slider_joint_bullet.cpp +++ b/modules/bullet/slider_joint_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/slider_joint_bullet.h b/modules/bullet/slider_joint_bullet.h index fa9ea3f782..d98a1b8c95 100644 --- a/modules/bullet/slider_joint_bullet.h +++ b/modules/bullet/slider_joint_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/soft_body_bullet.cpp b/modules/bullet/soft_body_bullet.cpp index 88190f8e9e..f4c0ffa6eb 100644 --- a/modules/bullet/soft_body_bullet.cpp +++ b/modules/bullet/soft_body_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/soft_body_bullet.h b/modules/bullet/soft_body_bullet.h index 5e05c266a8..b98116b073 100644 --- a/modules/bullet/soft_body_bullet.h +++ b/modules/bullet/soft_body_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/bullet/space_bullet.cpp b/modules/bullet/space_bullet.cpp index e74c29769f..e5b2ac3808 100644 --- a/modules/bullet/space_bullet.cpp +++ b/modules/bullet/space_bullet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/bullet/space_bullet.h b/modules/bullet/space_bullet.h index ecf8a2db9d..32372f1630 100644 --- a/modules/bullet/space_bullet.h +++ b/modules/bullet/space_bullet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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..89620f788b 100644 --- a/platform/iphone/camera_ios.h +++ b/modules/camera/camera_ios.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/camera_ios.mm b/modules/camera/camera_ios.mm index 5636ed6262..8059277503 100644 --- a/platform/iphone/camera_ios.mm +++ b/modules/camera/camera_ios.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..a07b83c6af 100644 --- a/platform/osx/camera_osx.h +++ b/modules/camera/camera_osx.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/camera_osx.mm b/modules/camera/camera_osx.mm index 2b0f4906fc..658ddb728b 100644 --- a/platform/osx/camera_osx.mm +++ b/modules/camera/camera_osx.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/camera_win.cpp b/modules/camera/camera_win.cpp index 10787d0d0a..875f0b26bc 100644 --- a/platform/windows/camera_win.cpp +++ b/modules/camera/camera_win.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/camera_win.h b/modules/camera/camera_win.h index 22ce9aa43f..39a1b0b86f 100644 --- a/platform/windows/camera_win.h +++ b/modules/camera/camera_win.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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..3b6c916914 --- /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-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#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..f2753cb6d7 100644 --- a/drivers/convex_decomp/b2d_decompose.h +++ b/modules/camera/register_types.h @@ -1,12 +1,12 @@ /*************************************************************************/ -/* b2d_decompose.h */ +/* register_types.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) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/csg/csg.cpp b/modules/csg/csg.cpp index 925fff0cc8..cc3bbed27f 100644 --- a/modules/csg/csg.cpp +++ b/modules/csg/csg.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/csg/csg.h b/modules/csg/csg.h index 4fa1a945cc..a11e55c72a 100644 --- a/modules/csg/csg.h +++ b/modules/csg/csg.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/csg/csg_gizmos.cpp b/modules/csg/csg_gizmos.cpp index 0d26943af6..49387606f3 100644 --- a/modules/csg/csg_gizmos.cpp +++ b/modules/csg/csg_gizmos.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/csg/csg_gizmos.h b/modules/csg/csg_gizmos.h index d38dafc936..966b654802 100644 --- a/modules/csg/csg_gizmos.h +++ b/modules/csg/csg_gizmos.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/csg/csg_shape.cpp b/modules/csg/csg_shape.cpp index 9409b33f24..c8a72ff813 100644 --- a/modules/csg/csg_shape.cpp +++ b/modules/csg/csg_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/csg/csg_shape.h b/modules/csg/csg_shape.h index 6c9419b3c2..1098feea51 100644 --- a/modules/csg/csg_shape.h +++ b/modules/csg/csg_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/csg/register_types.cpp b/modules/csg/register_types.cpp index 33e29ec43e..677a20df38 100644 --- a/modules/csg/register_types.cpp +++ b/modules/csg/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/csg/register_types.h b/modules/csg/register_types.h index 9e112b72f0..4eadeea254 100644 --- a/modules/csg/register_types.h +++ b/modules/csg/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/cvtt/image_compress_cvtt.cpp b/modules/cvtt/image_compress_cvtt.cpp index 17b0038780..c261350e89 100644 --- a/modules/cvtt/image_compress_cvtt.cpp +++ b/modules/cvtt/image_compress_cvtt.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/cvtt/image_compress_cvtt.h b/modules/cvtt/image_compress_cvtt.h index a4a9641236..ecb876ecc6 100644 --- a/modules/cvtt/image_compress_cvtt.h +++ b/modules/cvtt/image_compress_cvtt.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/cvtt/register_types.cpp b/modules/cvtt/register_types.cpp index 40381e75d2..38542a33b9 100644 --- a/modules/cvtt/register_types.cpp +++ b/modules/cvtt/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/cvtt/register_types.h b/modules/cvtt/register_types.h index 63cf172e63..93f684cdd1 100644 --- a/modules/cvtt/register_types.h +++ b/modules/cvtt/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/dds/register_types.cpp b/modules/dds/register_types.cpp index 66ce3ce35d..c6281ff01b 100644 --- a/modules/dds/register_types.cpp +++ b/modules/dds/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/dds/register_types.h b/modules/dds/register_types.h index ae58fc435e..1808a4af36 100644 --- a/modules/dds/register_types.h +++ b/modules/dds/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/dds/texture_loader_dds.cpp b/modules/dds/texture_loader_dds.cpp index 16a0f9d6ee..a7701329d8 100644 --- a/modules/dds/texture_loader_dds.cpp +++ b/modules/dds/texture_loader_dds.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/dds/texture_loader_dds.h b/modules/dds/texture_loader_dds.h index 6ddef4e770..34f4e9b548 100644 --- a/modules/dds/texture_loader_dds.h +++ b/modules/dds/texture_loader_dds.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/enet/doc_classes/NetworkedMultiplayerENet.xml b/modules/enet/doc_classes/NetworkedMultiplayerENet.xml index 4c10588aa6..9509adfb18 100644 --- a/modules/enet/doc_classes/NetworkedMultiplayerENet.xml +++ b/modules/enet/doc_classes/NetworkedMultiplayerENet.xml @@ -49,7 +49,7 @@ <argument index="3" name="out_bandwidth" type="int" default="0"> </argument> <description> - Create server that listens to connections via [code]port[/code]. The port needs to be an available, unused port between 0 and 65535. Note that ports below 1024 are privileged and may require elevated permissions depending on the platform. To change the interface the server listens on, use [method set_bind_ip]. The default IP is the wildcard [code]"*"[/code], which listens on all available interfaces. [code]max_clients[/code] is the maximum number of clients that are allowed at once, any number up to 4096 may be used, although the achievable number of simultaneous clients may be far lower and depends on the application. For additional details on the bandwidth parameters, see [method create_client]. Returns [constant OK] if a server was created, [constant ERR_ALREADY_IN_USE] if this NetworkedMultiplayerENet instance already has an open connection (in which case you need to call [method close_connection] first) or [constant ERR_CANT_CREATE] if the server could not be created. + Create server that listens to connections via [code]port[/code]. The port needs to be an available, unused port between 0 and 65535. Note that ports below 1024 are privileged and may require elevated permissions depending on the platform. To change the interface the server listens on, use [method set_bind_ip]. The default IP is the wildcard [code]"*"[/code], which listens on all available interfaces. [code]max_clients[/code] is the maximum number of clients that are allowed at once, any number up to 4095 may be used, although the achievable number of simultaneous clients may be far lower and depends on the application. For additional details on the bandwidth parameters, see [method create_client]. Returns [constant OK] if a server was created, [constant ERR_ALREADY_IN_USE] if this NetworkedMultiplayerENet instance already has an open connection (in which case you need to call [method close_connection] first) or [constant ERR_CANT_CREATE] if the server could not be created. </description> </method> <method name="disconnect_peer"> @@ -116,6 +116,9 @@ The compression method used for network packets. These have different tradeoffs of compression speed versus bandwidth, you may need to test which one works best for your use case if you use compression at all. </member> <member name="refuse_new_connections" type="bool" setter="set_refuse_new_connections" getter="is_refusing_new_connections" override="true" default="false" /> + <member name="server_relay" type="bool" setter="set_server_relay_enabled" getter="is_server_relay_enabled" default="true"> + Enable or disable the server feature that notifies clients of other peers' connection/disconnection, and relays messages between them. When this option is [code]false[/code], clients won't be automatically notified of other peers and won't be able to send them packets through the server. + </member> <member name="transfer_channel" type="int" setter="set_transfer_channel" getter="get_transfer_channel" default="-1"> Set the default channel to be used to transfer data. By default, this value is [code]-1[/code] which means that ENet will only use 2 channels, one for reliable and one for unreliable packets. Channel [code]0[/code] is reserved, and cannot be used. Setting this member to any value between [code]0[/code] and [member channel_count] (excluded) will force ENet to use that channel for sending data. </member> diff --git a/modules/enet/networked_multiplayer_enet.cpp b/modules/enet/networked_multiplayer_enet.cpp index a787cd3b80..61fc7688c5 100644 --- a/modules/enet/networked_multiplayer_enet.cpp +++ b/modules/enet/networked_multiplayer_enet.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -75,7 +75,7 @@ Error NetworkedMultiplayerENet::create_server(int p_port, int p_max_clients, int ERR_FAIL_COND_V(active, ERR_ALREADY_IN_USE); ERR_FAIL_COND_V(p_port < 0 || p_port > 65535, ERR_INVALID_PARAMETER); - ERR_FAIL_COND_V(p_max_clients < 0, ERR_INVALID_PARAMETER); + ERR_FAIL_COND_V(p_max_clients < 1 || p_max_clients > 4095, ERR_INVALID_PARAMETER); ERR_FAIL_COND_V(p_in_bandwidth < 0, ERR_INVALID_PARAMETER); ERR_FAIL_COND_V(p_out_bandwidth < 0, ERR_INVALID_PARAMETER); @@ -255,6 +255,10 @@ void NetworkedMultiplayerENet::poll() { emit_signal("peer_connected", *new_id); if (server) { + // Do not notify other peers when server_relay is disabled. + if (!server_relay) + break; + // Someone connected, notify all the peers available for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) { @@ -287,31 +291,34 @@ void NetworkedMultiplayerENet::poll() { if (!server) { emit_signal("connection_failed"); } - } else { + // Never fully connected. + break; + } - if (server) { - // Someone disconnected, notify everyone else - for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) { + if (!server) { - if (E->key() == *id) - continue; + // Client just disconnected from server. + emit_signal("server_disconnected"); + close_connection(); + return; + } else if (server_relay) { - ENetPacket *packet = enet_packet_create(NULL, 8, ENET_PACKET_FLAG_RELIABLE); - encode_uint32(SYSMSG_REMOVE_PEER, &packet->data[0]); - encode_uint32(*id, &packet->data[4]); - enet_peer_send(E->get(), SYSCH_CONFIG, packet); - } - } else { - emit_signal("server_disconnected"); - close_connection(); - return; - } + // Server just received a client disconnect and is in relay mode, notify everyone else. + for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) { + + if (E->key() == *id) + continue; - emit_signal("peer_disconnected", *id); - peer_map.erase(*id); - memdelete(id); + ENetPacket *packet = enet_packet_create(NULL, 8, ENET_PACKET_FLAG_RELIABLE); + encode_uint32(SYSMSG_REMOVE_PEER, &packet->data[0]); + encode_uint32(*id, &packet->data[4]); + enet_peer_send(E->get(), SYSCH_CONFIG, packet); + } } + emit_signal("peer_disconnected", *id); + peer_map.erase(*id); + memdelete(id); } break; case ENET_EVENT_TYPE_RECEIVE: { @@ -361,7 +368,13 @@ void NetworkedMultiplayerENet::poll() { packet.from = *id; - if (target == 0) { + if (target == 1) { + // To myself and only myself + incoming_packets.push_back(packet); + } else if (!server_relay) { + // No other destination is allowed when server is not relaying + continue; + } else if (target == 0) { // Re-send to everyone but sender :| incoming_packets.push_back(packet); @@ -398,9 +411,6 @@ void NetworkedMultiplayerENet::poll() { enet_packet_destroy(packet.packet); } - } else if (target == 1) { - // To myself and only myself - incoming_packets.push_back(packet); } else { // To someone else, specifically ERR_CONTINUE(!peer_map.has(target)); @@ -440,6 +450,8 @@ void NetworkedMultiplayerENet::close_connection(uint32_t wait_usec) { for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) { if (E->get()) { enet_peer_disconnect_now(E->get(), unique_id); + int *id = (int *)(E->get()->data); + memdelete(id); peers_disconnected = true; } } @@ -455,6 +467,7 @@ void NetworkedMultiplayerENet::close_connection(uint32_t wait_usec) { enet_host_destroy(host); active = false; incoming_packets.clear(); + peer_map.clear(); unique_id = 1; // Server is 1 connection_status = CONNECTION_DISCONNECTED; } @@ -471,10 +484,13 @@ void NetworkedMultiplayerENet::disconnect_peer(int p_peer, bool now) { // enet_peer_disconnect_now doesn't generate ENET_EVENT_TYPE_DISCONNECT, // notify everyone else, send disconnect signal & remove from peer_map like in poll() + int *id = NULL; for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) { - if (E->key() == p_peer) + if (E->key() == p_peer) { + id = (int *)(E->get()->data); continue; + } ENetPacket *packet = enet_packet_create(NULL, 8, ENET_PACKET_FLAG_RELIABLE); encode_uint32(SYSMSG_REMOVE_PEER, &packet->data[0]); @@ -482,6 +498,9 @@ void NetworkedMultiplayerENet::disconnect_peer(int p_peer, bool now) { enet_peer_send(E->get(), SYSCH_CONFIG, packet); } + if (id) + memdelete(id); + emit_signal("peer_disconnected", p_peer); peer_map.erase(p_peer); } else { @@ -818,6 +837,16 @@ bool NetworkedMultiplayerENet::is_always_ordered() const { return always_ordered; } +void NetworkedMultiplayerENet::set_server_relay_enabled(bool p_enabled) { + ERR_FAIL_COND(active); + + server_relay = p_enabled; +} + +bool NetworkedMultiplayerENet::is_server_relay_enabled() const { + return server_relay; +} + void NetworkedMultiplayerENet::_bind_methods() { ClassDB::bind_method(D_METHOD("create_server", "port", "max_clients", "in_bandwidth", "out_bandwidth"), &NetworkedMultiplayerENet::create_server, DEFVAL(32), DEFVAL(0), DEFVAL(0)); @@ -838,11 +867,14 @@ void NetworkedMultiplayerENet::_bind_methods() { ClassDB::bind_method(D_METHOD("get_channel_count"), &NetworkedMultiplayerENet::get_channel_count); ClassDB::bind_method(D_METHOD("set_always_ordered", "ordered"), &NetworkedMultiplayerENet::set_always_ordered); ClassDB::bind_method(D_METHOD("is_always_ordered"), &NetworkedMultiplayerENet::is_always_ordered); + ClassDB::bind_method(D_METHOD("set_server_relay_enabled", "enabled"), &NetworkedMultiplayerENet::set_server_relay_enabled); + ClassDB::bind_method(D_METHOD("is_server_relay_enabled"), &NetworkedMultiplayerENet::is_server_relay_enabled); ADD_PROPERTY(PropertyInfo(Variant::INT, "compression_mode", PROPERTY_HINT_ENUM, "None,Range Coder,FastLZ,ZLib,ZStd"), "set_compression_mode", "get_compression_mode"); ADD_PROPERTY(PropertyInfo(Variant::INT, "transfer_channel"), "set_transfer_channel", "get_transfer_channel"); ADD_PROPERTY(PropertyInfo(Variant::INT, "channel_count"), "set_channel_count", "get_channel_count"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "always_ordered"), "set_always_ordered", "is_always_ordered"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "server_relay"), "set_server_relay_enabled", "is_server_relay_enabled"); BIND_ENUM_CONSTANT(COMPRESS_NONE); BIND_ENUM_CONSTANT(COMPRESS_RANGE_CODER); @@ -856,6 +888,7 @@ NetworkedMultiplayerENet::NetworkedMultiplayerENet() { active = false; server = false; refuse_connections = false; + server_relay = true; unique_id = 0; target_peer = 0; current_packet.packet = NULL; diff --git a/modules/enet/networked_multiplayer_enet.h b/modules/enet/networked_multiplayer_enet.h index 8dcb202314..11487b99a5 100644 --- a/modules/enet/networked_multiplayer_enet.h +++ b/modules/enet/networked_multiplayer_enet.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -78,6 +78,7 @@ private: ENetHost *host; bool refuse_connections; + bool server_relay; ConnectionStatus connection_status; @@ -158,6 +159,8 @@ public: int get_channel_count() const; void set_always_ordered(bool p_ordered); bool is_always_ordered() const; + void set_server_relay_enabled(bool p_enabled); + bool is_server_relay_enabled() const; NetworkedMultiplayerENet(); ~NetworkedMultiplayerENet(); diff --git a/modules/enet/register_types.cpp b/modules/enet/register_types.cpp index f2c1451446..27f27196d6 100644 --- a/modules/enet/register_types.cpp +++ b/modules/enet/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/enet/register_types.h b/modules/enet/register_types.h index 8d001b8c30..19f8c5a352 100644 --- a/modules/enet/register_types.h +++ b/modules/enet/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/etc/image_etc.cpp b/modules/etc/image_etc.cpp index f0cbf6ae28..b80138c99d 100644 --- a/modules/etc/image_etc.cpp +++ b/modules/etc/image_etc.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -139,6 +139,18 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f return; } + if (force_etc1_format) { + // If VRAM compression is using ETC, but image has alpha, convert to RGBA4444 or LA8 + // This saves space while maintaining the alpha channel + if (detected_channels == Image::DETECTED_RGBA) { + p_img->convert(Image::FORMAT_RGBA4444); + return; + } else if (detected_channels == Image::DETECTED_LA) { + p_img->convert(Image::FORMAT_LA8); + return; + } + } + uint32_t imgw = p_img->get_width(), imgh = p_img->get_height(); Image::Format etc_format = force_etc1_format ? Image::FORMAT_ETC : _get_etc2_mode(detected_channels); diff --git a/modules/etc/image_etc.h b/modules/etc/image_etc.h index 724d06545b..7b4f26e127 100644 --- a/modules/etc/image_etc.h +++ b/modules/etc/image_etc.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/etc/register_types.cpp b/modules/etc/register_types.cpp index 584a1fcce8..26809e0de9 100644 --- a/modules/etc/register_types.cpp +++ b/modules/etc/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/etc/register_types.h b/modules/etc/register_types.h index 161c37b52f..fac83e7d17 100644 --- a/modules/etc/register_types.h +++ b/modules/etc/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/etc/texture_loader_pkm.cpp b/modules/etc/texture_loader_pkm.cpp index da6da74025..27c2358306 100644 --- a/modules/etc/texture_loader_pkm.cpp +++ b/modules/etc/texture_loader_pkm.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/etc/texture_loader_pkm.h b/modules/etc/texture_loader_pkm.h index 79c17953fc..3d52a9ea95 100644 --- a/modules/etc/texture_loader_pkm.h +++ b/modules/etc/texture_loader_pkm.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/freetype/register_types.cpp b/modules/freetype/register_types.cpp index 108ecab329..15fa193183 100644 --- a/modules/freetype/register_types.cpp +++ b/modules/freetype/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/freetype/register_types.h b/modules/freetype/register_types.h index dae7ad1f40..336969d079 100644 --- a/modules/freetype/register_types.h +++ b/modules/freetype/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/freetype/uwpdef.h b/modules/freetype/uwpdef.h index e4d2d223bb..2f9b2f4a53 100644 --- a/modules/freetype/uwpdef.h +++ b/modules/freetype/uwpdef.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/android/android_gdn.cpp b/modules/gdnative/android/android_gdn.cpp index 624ef19dec..4be489cd46 100644 --- a/modules/gdnative/android/android_gdn.cpp +++ b/modules/gdnative/android/android_gdn.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/arvr/arvr_interface_gdnative.cpp b/modules/gdnative/arvr/arvr_interface_gdnative.cpp index bd6eb575d0..5efa915f62 100644 --- a/modules/gdnative/arvr/arvr_interface_gdnative.cpp +++ b/modules/gdnative/arvr/arvr_interface_gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/arvr/arvr_interface_gdnative.h b/modules/gdnative/arvr/arvr_interface_gdnative.h index ab7090876a..1077bef994 100644 --- a/modules/gdnative/arvr/arvr_interface_gdnative.h +++ b/modules/gdnative/arvr/arvr_interface_gdnative.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/arvr/register_types.cpp b/modules/gdnative/arvr/register_types.cpp index fbebccb4c1..0f6e2bca1a 100644 --- a/modules/gdnative/arvr/register_types.cpp +++ b/modules/gdnative/arvr/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/arvr/register_types.h b/modules/gdnative/arvr/register_types.h index 8fd2600037..815f112fbf 100644 --- a/modules/gdnative/arvr/register_types.h +++ b/modules/gdnative/arvr/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative.cpp b/modules/gdnative/gdnative.cpp index ee9e71d4a0..d9dc256ac0 100644 --- a/modules/gdnative/gdnative.cpp +++ b/modules/gdnative/gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative.h b/modules/gdnative/gdnative.h index 408af26753..c0c2cdf24c 100644 --- a/modules/gdnative/gdnative.h +++ b/modules/gdnative/gdnative.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/aabb.cpp b/modules/gdnative/gdnative/aabb.cpp index 91537290af..246e5d4e8d 100644 --- a/modules/gdnative/gdnative/aabb.cpp +++ b/modules/gdnative/gdnative/aabb.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/array.cpp b/modules/gdnative/gdnative/array.cpp index e97a75cca8..4a0308edec 100644 --- a/modules/gdnative/gdnative/array.cpp +++ b/modules/gdnative/gdnative/array.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/basis.cpp b/modules/gdnative/gdnative/basis.cpp index d77c7d91ac..4f489287b9 100644 --- a/modules/gdnative/gdnative/basis.cpp +++ b/modules/gdnative/gdnative/basis.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/color.cpp b/modules/gdnative/gdnative/color.cpp index e63129460c..24587ce4a1 100644 --- a/modules/gdnative/gdnative/color.cpp +++ b/modules/gdnative/gdnative/color.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/dictionary.cpp b/modules/gdnative/gdnative/dictionary.cpp index fff3fc3625..b145b88934 100644 --- a/modules/gdnative/gdnative/dictionary.cpp +++ b/modules/gdnative/gdnative/dictionary.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/gdnative.cpp b/modules/gdnative/gdnative/gdnative.cpp index 98a4fd880c..6ef1f2f4b9 100644 --- a/modules/gdnative/gdnative/gdnative.cpp +++ b/modules/gdnative/gdnative/gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -170,6 +170,19 @@ bool GDAPI godot_is_instance_valid(const godot_object *p_object) { return ObjectDB::instance_validate((Object *)p_object); } +void *godot_get_class_tag(const godot_string_name *p_class) { + StringName class_name = *(StringName *)p_class; + ClassDB::ClassInfo *class_info = ClassDB::classes.getptr(class_name); + return class_info ? class_info->class_ptr : NULL; +} + +godot_object *godot_object_cast_to(const godot_object *p_object, void *p_class_tag) { + if (!p_object) return NULL; + Object *o = (Object *)p_object; + + return o->is_class_ptr(p_class_tag) ? (godot_object *)o : NULL; +} + #ifdef __cplusplus } #endif diff --git a/modules/gdnative/gdnative/node_path.cpp b/modules/gdnative/gdnative/node_path.cpp index c49899fa25..93f43835c8 100644 --- a/modules/gdnative/gdnative/node_path.cpp +++ b/modules/gdnative/gdnative/node_path.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/plane.cpp b/modules/gdnative/gdnative/plane.cpp index d7fceb7516..17221fe081 100644 --- a/modules/gdnative/gdnative/plane.cpp +++ b/modules/gdnative/gdnative/plane.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/pool_arrays.cpp b/modules/gdnative/gdnative/pool_arrays.cpp index 23791af67e..bae1290d59 100644 --- a/modules/gdnative/gdnative/pool_arrays.cpp +++ b/modules/gdnative/gdnative/pool_arrays.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/quat.cpp b/modules/gdnative/gdnative/quat.cpp index 169d0134a8..be30b89e5f 100644 --- a/modules/gdnative/gdnative/quat.cpp +++ b/modules/gdnative/gdnative/quat.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/rect2.cpp b/modules/gdnative/gdnative/rect2.cpp index 04ca92f8dd..906b4f0932 100644 --- a/modules/gdnative/gdnative/rect2.cpp +++ b/modules/gdnative/gdnative/rect2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/rid.cpp b/modules/gdnative/gdnative/rid.cpp index c13a9fdde2..7ea80123a3 100644 --- a/modules/gdnative/gdnative/rid.cpp +++ b/modules/gdnative/gdnative/rid.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/string.cpp b/modules/gdnative/gdnative/string.cpp index 9086121940..414b9b9eaf 100644 --- a/modules/gdnative/gdnative/string.cpp +++ b/modules/gdnative/gdnative/string.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/string_name.cpp b/modules/gdnative/gdnative/string_name.cpp index dcbb773c25..1abb4486b1 100644 --- a/modules/gdnative/gdnative/string_name.cpp +++ b/modules/gdnative/gdnative/string_name.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/transform.cpp b/modules/gdnative/gdnative/transform.cpp index 188c4be1ba..c9b3e37fb2 100644 --- a/modules/gdnative/gdnative/transform.cpp +++ b/modules/gdnative/gdnative/transform.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/transform2d.cpp b/modules/gdnative/gdnative/transform2d.cpp index b735f64251..26a71333b1 100644 --- a/modules/gdnative/gdnative/transform2d.cpp +++ b/modules/gdnative/gdnative/transform2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/variant.cpp b/modules/gdnative/gdnative/variant.cpp index ac4d5a86b2..11b6448e34 100644 --- a/modules/gdnative/gdnative/variant.cpp +++ b/modules/gdnative/gdnative/variant.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/vector2.cpp b/modules/gdnative/gdnative/vector2.cpp index d82f2c692d..e9e2a8edf8 100644 --- a/modules/gdnative/gdnative/vector2.cpp +++ b/modules/gdnative/gdnative/vector2.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative/vector3.cpp b/modules/gdnative/gdnative/vector3.cpp index 15a8ef9a2e..e34a9370a5 100644 --- a/modules/gdnative/gdnative/vector3.cpp +++ b/modules/gdnative/gdnative/vector3.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative_api.json b/modules/gdnative/gdnative_api.json index 9e5295a936..7e2ca49f8d 100644 --- a/modules/gdnative/gdnative_api.json +++ b/modules/gdnative/gdnative_api.json @@ -140,6 +140,21 @@ "arguments": [ ["const godot_pool_color_array *", "p_self"] ] + }, + { + "name": "godot_get_class_tag", + "return_type": "void *", + "arguments": [ + ["const godot_string_name *", "p_class"] + ] + }, + { + "name": "godot_object_cast_to", + "return_type": "godot_object *", + "arguments": [ + ["const godot_object *", "p_object"], + ["void *", "p_class_tag"] + ] } ] }, diff --git a/modules/gdnative/gdnative_library_editor_plugin.cpp b/modules/gdnative/gdnative_library_editor_plugin.cpp index 5d272a6cdc..5ffab0f80e 100644 --- a/modules/gdnative/gdnative_library_editor_plugin.cpp +++ b/modules/gdnative/gdnative_library_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/gdnative_library_editor_plugin.h b/modules/gdnative/gdnative_library_editor_plugin.h index 8c1449f55a..7b59aaac38 100644 --- a/modules/gdnative/gdnative_library_editor_plugin.h +++ b/modules/gdnative/gdnative_library_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative_library_singleton_editor.cpp b/modules/gdnative/gdnative_library_singleton_editor.cpp index 389b353a51..17a7d5492a 100644 --- a/modules/gdnative/gdnative_library_singleton_editor.cpp +++ b/modules/gdnative/gdnative_library_singleton_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/gdnative_library_singleton_editor.h b/modules/gdnative/gdnative_library_singleton_editor.h index b43080dfdb..1a213d8094 100644 --- a/modules/gdnative/gdnative_library_singleton_editor.h +++ b/modules/gdnative/gdnative_library_singleton_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/android/godot_android.h b/modules/gdnative/include/android/godot_android.h index 7063e1d2c5..45d4eaff37 100644 --- a/modules/gdnative/include/android/godot_android.h +++ b/modules/gdnative/include/android/godot_android.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/arvr/godot_arvr.h b/modules/gdnative/include/arvr/godot_arvr.h index d465bbde54..aaef31a855 100644 --- a/modules/gdnative/include/arvr/godot_arvr.h +++ b/modules/gdnative/include/arvr/godot_arvr.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/aabb.h b/modules/gdnative/include/gdnative/aabb.h index 6b9b342f10..9f41e9d4c6 100644 --- a/modules/gdnative/include/gdnative/aabb.h +++ b/modules/gdnative/include/gdnative/aabb.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/array.h b/modules/gdnative/include/gdnative/array.h index a27626325e..36b5c77875 100644 --- a/modules/gdnative/include/gdnative/array.h +++ b/modules/gdnative/include/gdnative/array.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/basis.h b/modules/gdnative/include/gdnative/basis.h index 9f1923c02b..c7425ebbfa 100644 --- a/modules/gdnative/include/gdnative/basis.h +++ b/modules/gdnative/include/gdnative/basis.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/color.h b/modules/gdnative/include/gdnative/color.h index b7837a0940..3f046b7f08 100644 --- a/modules/gdnative/include/gdnative/color.h +++ b/modules/gdnative/include/gdnative/color.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/dictionary.h b/modules/gdnative/include/gdnative/dictionary.h index 483cd9c4e3..873efaa9bf 100644 --- a/modules/gdnative/include/gdnative/dictionary.h +++ b/modules/gdnative/include/gdnative/dictionary.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/gdnative.h b/modules/gdnative/include/gdnative/gdnative.h index 884bcf60d2..2fe59b8a73 100644 --- a/modules/gdnative/include/gdnative/gdnative.h +++ b/modules/gdnative/include/gdnative/gdnative.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -286,6 +286,10 @@ void GDAPI godot_print(const godot_string *p_message); bool GDAPI godot_is_instance_valid(const godot_object *p_object); +//tags used for safe dynamic casting +void GDAPI *godot_get_class_tag(const godot_string_name *p_class); +godot_object GDAPI *godot_object_cast_to(const godot_object *p_object, void *p_class_tag); + #ifdef __cplusplus } #endif diff --git a/modules/gdnative/include/gdnative/node_path.h b/modules/gdnative/include/gdnative/node_path.h index a59833b924..0cd0c3cb9c 100644 --- a/modules/gdnative/include/gdnative/node_path.h +++ b/modules/gdnative/include/gdnative/node_path.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/plane.h b/modules/gdnative/include/gdnative/plane.h index 074f127fa8..b759a8cc1a 100644 --- a/modules/gdnative/include/gdnative/plane.h +++ b/modules/gdnative/include/gdnative/plane.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/pool_arrays.h b/modules/gdnative/include/gdnative/pool_arrays.h index 63e8267f0e..7d51b3cd5c 100644 --- a/modules/gdnative/include/gdnative/pool_arrays.h +++ b/modules/gdnative/include/gdnative/pool_arrays.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/quat.h b/modules/gdnative/include/gdnative/quat.h index 7239c13a36..d315b2d754 100644 --- a/modules/gdnative/include/gdnative/quat.h +++ b/modules/gdnative/include/gdnative/quat.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/rect2.h b/modules/gdnative/include/gdnative/rect2.h index 7652bf054f..0ecf072471 100644 --- a/modules/gdnative/include/gdnative/rect2.h +++ b/modules/gdnative/include/gdnative/rect2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/rid.h b/modules/gdnative/include/gdnative/rid.h index 4a61cb171f..04661cedc8 100644 --- a/modules/gdnative/include/gdnative/rid.h +++ b/modules/gdnative/include/gdnative/rid.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/string.h b/modules/gdnative/include/gdnative/string.h index 7500d70f20..b676d21fb2 100644 --- a/modules/gdnative/include/gdnative/string.h +++ b/modules/gdnative/include/gdnative/string.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/string_name.h b/modules/gdnative/include/gdnative/string_name.h index c6465aff03..f2555ab98f 100644 --- a/modules/gdnative/include/gdnative/string_name.h +++ b/modules/gdnative/include/gdnative/string_name.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/transform.h b/modules/gdnative/include/gdnative/transform.h index e17a18cb43..bc51438b17 100644 --- a/modules/gdnative/include/gdnative/transform.h +++ b/modules/gdnative/include/gdnative/transform.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/transform2d.h b/modules/gdnative/include/gdnative/transform2d.h index e53f36a8c3..6b414ca7b2 100644 --- a/modules/gdnative/include/gdnative/transform2d.h +++ b/modules/gdnative/include/gdnative/transform2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/variant.h b/modules/gdnative/include/gdnative/variant.h index 17afd905b4..c65f7a28d2 100644 --- a/modules/gdnative/include/gdnative/variant.h +++ b/modules/gdnative/include/gdnative/variant.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/vector2.h b/modules/gdnative/include/gdnative/vector2.h index 15a6c80887..15a1a6063b 100644 --- a/modules/gdnative/include/gdnative/vector2.h +++ b/modules/gdnative/include/gdnative/vector2.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/gdnative/vector3.h b/modules/gdnative/include/gdnative/vector3.h index ee7d029028..1b344590ea 100644 --- a/modules/gdnative/include/gdnative/vector3.h +++ b/modules/gdnative/include/gdnative/vector3.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/nativescript/godot_nativescript.h b/modules/gdnative/include/nativescript/godot_nativescript.h index 8a05b6cfa3..d2ed4fb3e5 100644 --- a/modules/gdnative/include/nativescript/godot_nativescript.h +++ b/modules/gdnative/include/nativescript/godot_nativescript.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/net/godot_net.h b/modules/gdnative/include/net/godot_net.h index 3a411755c1..d245f3b965 100644 --- a/modules/gdnative/include/net/godot_net.h +++ b/modules/gdnative/include/net/godot_net.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/net/godot_webrtc.h b/modules/gdnative/include/net/godot_webrtc.h index 783f7b727d..15e2df85cc 100644 --- a/modules/gdnative/include/net/godot_webrtc.h +++ b/modules/gdnative/include/net/godot_webrtc.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/pluginscript/godot_pluginscript.h b/modules/gdnative/include/pluginscript/godot_pluginscript.h index a9e83d1524..2c2528b8b9 100644 --- a/modules/gdnative/include/pluginscript/godot_pluginscript.h +++ b/modules/gdnative/include/pluginscript/godot_pluginscript.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/include/videodecoder/godot_videodecoder.h b/modules/gdnative/include/videodecoder/godot_videodecoder.h index 1b08be30f0..714991ca72 100644 --- a/modules/gdnative/include/videodecoder/godot_videodecoder.h +++ b/modules/gdnative/include/videodecoder/godot_videodecoder.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/nativescript/api_generator.cpp b/modules/gdnative/nativescript/api_generator.cpp index eace195c33..850871579b 100644 --- a/modules/gdnative/nativescript/api_generator.cpp +++ b/modules/gdnative/nativescript/api_generator.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/nativescript/api_generator.h b/modules/gdnative/nativescript/api_generator.h index 73310d1974..edbb1d1f23 100644 --- a/modules/gdnative/nativescript/api_generator.h +++ b/modules/gdnative/nativescript/api_generator.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/nativescript/godot_nativescript.cpp b/modules/gdnative/nativescript/godot_nativescript.cpp index 979e47f7b9..e19e675344 100644 --- a/modules/gdnative/nativescript/godot_nativescript.cpp +++ b/modules/gdnative/nativescript/godot_nativescript.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp index 7c313c983f..7a5a7bbc3a 100644 --- a/modules/gdnative/nativescript/nativescript.cpp +++ b/modules/gdnative/nativescript/nativescript.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/nativescript/nativescript.h b/modules/gdnative/nativescript/nativescript.h index 79a41df107..cf787e1f6a 100644 --- a/modules/gdnative/nativescript/nativescript.h +++ b/modules/gdnative/nativescript/nativescript.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/nativescript/register_types.cpp b/modules/gdnative/nativescript/register_types.cpp index c602b80646..b5e8174e43 100644 --- a/modules/gdnative/nativescript/register_types.cpp +++ b/modules/gdnative/nativescript/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/nativescript/register_types.h b/modules/gdnative/nativescript/register_types.h index 3d2ce4c431..8fcecb9836 100644 --- a/modules/gdnative/nativescript/register_types.h +++ b/modules/gdnative/nativescript/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/net/multiplayer_peer_gdnative.cpp b/modules/gdnative/net/multiplayer_peer_gdnative.cpp index d2c95efa77..8c43a79cc5 100644 --- a/modules/gdnative/net/multiplayer_peer_gdnative.cpp +++ b/modules/gdnative/net/multiplayer_peer_gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/net/multiplayer_peer_gdnative.h b/modules/gdnative/net/multiplayer_peer_gdnative.h index 6fbc62aaa1..cfaf14936e 100644 --- a/modules/gdnative/net/multiplayer_peer_gdnative.h +++ b/modules/gdnative/net/multiplayer_peer_gdnative.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/net/packet_peer_gdnative.cpp b/modules/gdnative/net/packet_peer_gdnative.cpp index 877baff9e2..75e1e0b824 100644 --- a/modules/gdnative/net/packet_peer_gdnative.cpp +++ b/modules/gdnative/net/packet_peer_gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/net/packet_peer_gdnative.h b/modules/gdnative/net/packet_peer_gdnative.h index 8483217210..78d8bb32b6 100644 --- a/modules/gdnative/net/packet_peer_gdnative.h +++ b/modules/gdnative/net/packet_peer_gdnative.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/net/register_types.cpp b/modules/gdnative/net/register_types.cpp index 51448bfcd3..4e48a43210 100644 --- a/modules/gdnative/net/register_types.cpp +++ b/modules/gdnative/net/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/net/register_types.h b/modules/gdnative/net/register_types.h index 4f5b0051b7..526bc49deb 100644 --- a/modules/gdnative/net/register_types.h +++ b/modules/gdnative/net/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/net/stream_peer_gdnative.cpp b/modules/gdnative/net/stream_peer_gdnative.cpp index 8a4ea35f95..22634daf5f 100644 --- a/modules/gdnative/net/stream_peer_gdnative.cpp +++ b/modules/gdnative/net/stream_peer_gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/net/stream_peer_gdnative.h b/modules/gdnative/net/stream_peer_gdnative.h index 7859d57a4b..f3711e0f0f 100644 --- a/modules/gdnative/net/stream_peer_gdnative.h +++ b/modules/gdnative/net/stream_peer_gdnative.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/net/webrtc_gdnative.cpp b/modules/gdnative/net/webrtc_gdnative.cpp index d77fa057c5..a7355e4d12 100644 --- a/modules/gdnative/net/webrtc_gdnative.cpp +++ b/modules/gdnative/net/webrtc_gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/pluginscript/pluginscript_instance.cpp b/modules/gdnative/pluginscript/pluginscript_instance.cpp index 4b5dcc2c11..97897870ba 100644 --- a/modules/gdnative/pluginscript/pluginscript_instance.cpp +++ b/modules/gdnative/pluginscript/pluginscript_instance.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/pluginscript/pluginscript_instance.h b/modules/gdnative/pluginscript/pluginscript_instance.h index 381c334231..d92d3ace77 100644 --- a/modules/gdnative/pluginscript/pluginscript_instance.h +++ b/modules/gdnative/pluginscript/pluginscript_instance.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/pluginscript/pluginscript_language.cpp b/modules/gdnative/pluginscript/pluginscript_language.cpp index 22898a73ce..41f0e34243 100644 --- a/modules/gdnative/pluginscript/pluginscript_language.cpp +++ b/modules/gdnative/pluginscript/pluginscript_language.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/pluginscript/pluginscript_language.h b/modules/gdnative/pluginscript/pluginscript_language.h index 7b3844d0b0..145ab5599c 100644 --- a/modules/gdnative/pluginscript/pluginscript_language.h +++ b/modules/gdnative/pluginscript/pluginscript_language.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/pluginscript/pluginscript_loader.cpp b/modules/gdnative/pluginscript/pluginscript_loader.cpp index c7ff8518b5..fe1cc83c69 100644 --- a/modules/gdnative/pluginscript/pluginscript_loader.cpp +++ b/modules/gdnative/pluginscript/pluginscript_loader.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/pluginscript/pluginscript_loader.h b/modules/gdnative/pluginscript/pluginscript_loader.h index 6218037a15..ede31c027e 100644 --- a/modules/gdnative/pluginscript/pluginscript_loader.h +++ b/modules/gdnative/pluginscript/pluginscript_loader.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/pluginscript/pluginscript_script.cpp b/modules/gdnative/pluginscript/pluginscript_script.cpp index f7c961d38b..cc5bdee0a1 100644 --- a/modules/gdnative/pluginscript/pluginscript_script.cpp +++ b/modules/gdnative/pluginscript/pluginscript_script.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/pluginscript/pluginscript_script.h b/modules/gdnative/pluginscript/pluginscript_script.h index 0a84ccba0d..f67c88c794 100644 --- a/modules/gdnative/pluginscript/pluginscript_script.h +++ b/modules/gdnative/pluginscript/pluginscript_script.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/pluginscript/register_types.cpp b/modules/gdnative/pluginscript/register_types.cpp index 3b46f33afb..97a48b0e89 100644 --- a/modules/gdnative/pluginscript/register_types.cpp +++ b/modules/gdnative/pluginscript/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/pluginscript/register_types.h b/modules/gdnative/pluginscript/register_types.h index 3114fb6b7d..a4f7284b54 100644 --- a/modules/gdnative/pluginscript/register_types.h +++ b/modules/gdnative/pluginscript/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/register_types.cpp b/modules/gdnative/register_types.cpp index fa59c704d5..cb84c23e7a 100644 --- a/modules/gdnative/register_types.cpp +++ b/modules/gdnative/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/gdnative/register_types.h b/modules/gdnative/register_types.h index 9e5cab5581..0091ef3f96 100644 --- a/modules/gdnative/register_types.h +++ b/modules/gdnative/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/videodecoder/register_types.cpp b/modules/gdnative/videodecoder/register_types.cpp index 0a0b2f64d5..c53e8f2c78 100644 --- a/modules/gdnative/videodecoder/register_types.cpp +++ b/modules/gdnative/videodecoder/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/videodecoder/register_types.h b/modules/gdnative/videodecoder/register_types.h index f082343d8c..d81d5c497b 100644 --- a/modules/gdnative/videodecoder/register_types.h +++ b/modules/gdnative/videodecoder/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdnative/videodecoder/video_stream_gdnative.cpp b/modules/gdnative/videodecoder/video_stream_gdnative.cpp index 14b7f9a2ef..dbe00cdf71 100644 --- a/modules/gdnative/videodecoder/video_stream_gdnative.cpp +++ b/modules/gdnative/videodecoder/video_stream_gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -123,9 +123,12 @@ bool VideoStreamPlaybackGDNative::open_file(const String &p_file) { godot_vector2 vec = interface->get_texture_size(data_struct); texture_size = *(Vector2 *)&vec; + // Only do memset if num_channels > 0 otherwise it will crash. + if (num_channels > 0) { + pcm = (float *)memalloc(num_channels * AUX_BUFFER_SIZE * sizeof(float)); + memset(pcm, 0, num_channels * AUX_BUFFER_SIZE * sizeof(float)); + } - pcm = (float *)memalloc(num_channels * AUX_BUFFER_SIZE * sizeof(float)); - memset(pcm, 0, num_channels * AUX_BUFFER_SIZE * sizeof(float)); pcm_write_idx = -1; samples_decoded = 0; @@ -146,7 +149,8 @@ void VideoStreamPlaybackGDNative::update(float p_delta) { ERR_FAIL_COND(interface == NULL); interface->update(data_struct, p_delta); - if (mix_callback) { + // Don't mix if there's no audio (num_channels == 0). + if (mix_callback && num_channels > 0) { if (pcm_write_idx >= 0) { // Previous remains int mixed = mix_callback(mix_udata, pcm + pcm_write_idx * num_channels, samples_decoded); diff --git a/modules/gdnative/videodecoder/video_stream_gdnative.h b/modules/gdnative/videodecoder/video_stream_gdnative.h index 5ff7acb616..bb0346efb4 100644 --- a/modules/gdnative/videodecoder/video_stream_gdnative.h +++ b/modules/gdnative/videodecoder/video_stream_gdnative.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/doc_classes/@GDScript.xml b/modules/gdscript/doc_classes/@GDScript.xml index 840971dcf8..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) @@ -1363,6 +1374,29 @@ Stops the function execution and returns the current suspended state to the calling function. From the caller, call [method GDScriptFunctionState.resume] on the state to resume execution. This invalidates the state. Within the resumed function, [code]yield()[/code] returns whatever was passed to the [code]resume()[/code] function call. If passed an object and a signal, the execution is resumed when the object emits the given signal. In this case, [code]yield()[/code] returns the argument passed to [code]emit_signal()[/code] if the signal takes only one argument, or an array containing all the arguments passed to [code]emit_signal()[/code] if the signal takes multiple arguments. + You can also use [code]yield[/code] to wait for a function to finish: + [codeblock] + func _ready(): + yield(countdown(), "completed") # waiting for the countdown() function to complete + print('Ready') + + 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: + # 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. + 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/doc_classes/GDScript.xml b/modules/gdscript/doc_classes/GDScript.xml index 6f43361914..8e175a7ab8 100644 --- a/modules/gdscript/doc_classes/GDScript.xml +++ b/modules/gdscript/doc_classes/GDScript.xml @@ -4,7 +4,7 @@ A script implemented in the GDScript programming language. </brief_description> <description> - A script implemented in the GDScript programming language. The script exends the functionality of all objects that instance it. + A script implemented in the GDScript programming language. The script extends the functionality of all objects that instance it. [method new] creates a new instance of the script. [method Object.set_script] extends an existing object, if that object's class matches one of the script's base classes. </description> <tutorials> diff --git a/modules/gdscript/editor/gdscript_highlighter.cpp b/modules/gdscript/editor/gdscript_highlighter.cpp index 4d6279074c..687e1785be 100644 --- a/modules/gdscript/editor/gdscript_highlighter.cpp +++ b/modules/gdscript/editor/gdscript_highlighter.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/editor/gdscript_highlighter.h b/modules/gdscript/editor/gdscript_highlighter.h index 9ba2c80552..e652fb1471 100644 --- a/modules/gdscript/editor/gdscript_highlighter.h +++ b/modules/gdscript/editor/gdscript_highlighter.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index b90fab8221..5b0210b16d 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; } @@ -1155,8 +1166,6 @@ bool GDScriptInstance::has_method(const StringName &p_method) const { } Variant GDScriptInstance::call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error) { - //printf("calling %ls:%i method %ls\n", script->get_path().c_str(), -1, String(p_method).c_str()); - GDScript *sptr = script.ptr(); while (sptr) { Map<StringName, GDScriptFunction *>::Element *E = sptr->member_functions.find(p_method); @@ -1952,11 +1961,11 @@ String GDScriptWarning::get_message() const { } break; case UNUSED_VARIABLE: { CHECK_SYMBOLS(1); - return "The local variable '" + symbols[0] + "' is declared but never used in the block."; + return "The local variable '" + symbols[0] + "' is declared but never used in the block. If this is intended, prefix it with an underscore: '_" + symbols[0] + "'"; } break; case SHADOWED_VARIABLE: { CHECK_SYMBOLS(2); - return "The local variable '" + symbols[0] + "' is shadowing an already defined variable at line " + symbols[1] + "."; + return "The local variable '" + symbols[0] + "' is shadowing an already-defined variable at line " + symbols[1] + "."; } break; case UNUSED_CLASS_VARIABLE: { CHECK_SYMBOLS(1); @@ -1964,7 +1973,7 @@ String GDScriptWarning::get_message() const { } break; case UNUSED_ARGUMENT: { CHECK_SYMBOLS(2); - return "The argument '" + symbols[1] + "' is never used in the function '" + symbols[0] + "'."; + return "The argument '" + symbols[1] + "' is never used in the function '" + symbols[0] + "'. If this is intended, prefix it with an underscore: '_" + symbols[1] + "'"; } break; case UNREACHABLE_CODE: { CHECK_SYMBOLS(1); @@ -2145,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.h b/modules/gdscript/gdscript.h index a5ad23c75d..cc25c1c313 100644 --- a/modules/gdscript/gdscript.h +++ b/modules/gdscript/gdscript.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index dea2225e91..11e015b473 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_compiler.h b/modules/gdscript/gdscript_compiler.h index 2cf630ba72..bb3ee881f8 100644 --- a/modules/gdscript/gdscript_compiler.h +++ b/modules/gdscript/gdscript_compiler.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp index 280bc37dc0..e2f2b7fc3b 100644 --- a/modules/gdscript/gdscript_editor.cpp +++ b/modules/gdscript/gdscript_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..a01a7397fe 100644 --- a/modules/gdscript/gdscript_function.cpp +++ b/modules/gdscript/gdscript_function.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_function.h b/modules/gdscript/gdscript_function.h index cefc28d77f..236ca720a2 100644 --- a/modules/gdscript/gdscript_function.h +++ b/modules/gdscript/gdscript_function.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/gdscript_functions.cpp b/modules/gdscript/gdscript_functions.cpp index bbafef68ed..e0e95f259e 100644 --- a/modules/gdscript/gdscript_functions.cpp +++ b/modules/gdscript/gdscript_functions.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_functions.h b/modules/gdscript/gdscript_functions.h index 9ea5dd46cf..1812ddf121 100644 --- a/modules/gdscript/gdscript_functions.h +++ b/modules/gdscript/gdscript_functions.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 6ef3ab67ae..112569a8d6 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; } @@ -4040,7 +4045,13 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_OPEN) { - tokenizer->advance(); +#define _ADVANCE_AND_CONSUME_NEWLINES \ + do { \ + tokenizer->advance(); \ + } while (tokenizer->get_token() == GDScriptTokenizer::TK_NEWLINE) + + _ADVANCE_AND_CONSUME_NEWLINES; + parenthesis++; String hint_prefix = ""; bool is_arrayed = false; @@ -4070,11 +4081,11 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { } current_export.type = type; current_export.usage |= PROPERTY_USAGE_SCRIPT_VARIABLE; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) { // hint expected next! - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; switch (type) { @@ -4082,7 +4093,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "FLAGS") { - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { WARN_DEPRECATED_MSG("Exporting bit flags hint requires string constants."); @@ -4094,7 +4105,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { } current_export.hint = PROPERTY_HINT_FLAGS; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; bool first = true; while (true) { @@ -4113,7 +4124,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { current_export.hint_string += c.xml_escape(); - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) break; @@ -4122,7 +4133,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { _set_error("Expected \")\" or \",\" in the named bit flags hint."); return; } - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } break; @@ -4130,7 +4141,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "LAYERS_2D_RENDER") { - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { _set_error("Expected \")\" in the layers 2D render hint."); return; @@ -4141,7 +4152,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "LAYERS_2D_PHYSICS") { - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { _set_error("Expected \")\" in the layers 2D physics hint."); return; @@ -4152,7 +4163,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "LAYERS_3D_RENDER") { - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { _set_error("Expected \")\" in the layers 3D render hint."); return; @@ -4163,7 +4174,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "LAYERS_3D_PHYSICS") { - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { _set_error("Expected \")\" in the layers 3D physics hint."); return; @@ -4193,7 +4204,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { current_export.hint_string += c.xml_escape(); - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) break; @@ -4203,7 +4214,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { return; } - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } break; @@ -4215,7 +4226,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "EASE") { current_export.hint = PROPERTY_HINT_EXP_EASING; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { _set_error("Expected \")\" in the hint."); return; @@ -4227,7 +4238,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "EXP") { current_export.hint = PROPERTY_HINT_EXP_RANGE; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) break; @@ -4235,7 +4246,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { _set_error("Expected \")\" or \",\" in the exponential range hint."); return; } - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } else current_export.hint = PROPERTY_HINT_RANGE; @@ -4243,7 +4254,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_OP_SUB) { sign = -1; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } if (tokenizer->get_token() != GDScriptTokenizer::TK_CONSTANT || !tokenizer->get_token_constant().is_num()) { @@ -4253,7 +4264,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { } current_export.hint_string = rtos(sign * double(tokenizer->get_token_constant())); - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { current_export.hint_string = "0," + current_export.hint_string; @@ -4267,12 +4278,12 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { return; } - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; sign = 1.0; if (tokenizer->get_token() == GDScriptTokenizer::TK_OP_SUB) { sign = -1; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } if (tokenizer->get_token() != GDScriptTokenizer::TK_CONSTANT || !tokenizer->get_token_constant().is_num()) { @@ -4283,7 +4294,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { } current_export.hint_string += "," + rtos(sign * double(tokenizer->get_token_constant())); - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) break; @@ -4295,11 +4306,11 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { return; } - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; sign = 1.0; if (tokenizer->get_token() == GDScriptTokenizer::TK_OP_SUB) { sign = -1; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } if (tokenizer->get_token() != GDScriptTokenizer::TK_CONSTANT || !tokenizer->get_token_constant().is_num()) { @@ -4310,7 +4321,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { } current_export.hint_string += "," + rtos(sign * double(tokenizer->get_token_constant())); - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } break; case Variant::STRING: { @@ -4335,7 +4346,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { first = false; current_export.hint_string += c.xml_escape(); - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) break; @@ -4344,7 +4355,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { _set_error("Expected \")\" or \",\" in the enumeration hint."); return; } - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } break; @@ -4352,13 +4363,13 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "DIR") { - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) current_export.hint = PROPERTY_HINT_DIR; else if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) { - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() != GDScriptTokenizer::TK_IDENTIFIER || !(tokenizer->get_token_identifier() == "GLOBAL")) { _set_error("Expected \"GLOBAL\" after comma in the directory hint."); @@ -4369,7 +4380,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { return; } current_export.hint = PROPERTY_HINT_GLOBAL_DIR; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { _set_error("Expected \")\" in the hint."); @@ -4385,11 +4396,11 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "FILE") { current_export.hint = PROPERTY_HINT_FILE; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) { - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "GLOBAL") { @@ -4398,12 +4409,12 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { return; } current_export.hint = PROPERTY_HINT_GLOBAL_FILE; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) break; else if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; else { _set_error("Expected \")\" or \",\" in the hint."); return; @@ -4419,7 +4430,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { return; } current_export.hint_string = tokenizer->get_token_constant(); - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { @@ -4432,7 +4443,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "MULTILINE") { current_export.hint = PROPERTY_HINT_MULTILINE_TEXT; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) { _set_error("Expected \")\" in the hint."); return; @@ -4459,7 +4470,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { _set_error("Color type hint expects RGB or RGBA as hints."); return; } - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } break; default: { @@ -4510,11 +4521,11 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { bool is_flags = false; if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) { - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "FLAGS") { is_flags = true; - tokenizer->advance(); + _ADVANCE_AND_CONSUME_NEWLINES; } else { current_export = PropertyInfo(); _set_error("Expected \"FLAGS\" after comma."); @@ -4558,6 +4569,9 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { return; } + tokenizer->advance(); + parenthesis--; + if (is_arrayed) { hint_prefix += itos(current_export.type); if (current_export.hint) { @@ -4567,8 +4581,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { current_export.hint = PROPERTY_HINT_TYPE_STRING; current_export.type = Variant::ARRAY; } - - tokenizer->advance(); +#undef _ADVANCE_AND_CONSUME_NEWLINES } if (tokenizer->get_token() != GDScriptTokenizer::TK_PR_VAR && tokenizer->get_token() != GDScriptTokenizer::TK_PR_ONREADY && tokenizer->get_token() != GDScriptTokenizer::TK_PR_REMOTE && tokenizer->get_token() != GDScriptTokenizer::TK_PR_MASTER && tokenizer->get_token() != GDScriptTokenizer::TK_PR_PUPPET && tokenizer->get_token() != GDScriptTokenizer::TK_PR_SYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_REMOTESYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_MASTERSYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_PUPPETSYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_SLAVE) { @@ -8180,7 +8193,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 +8207,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 +8240,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/gdscript_parser.h b/modules/gdscript/gdscript_parser.h index 93557d745d..c74d7dd856 100644 --- a/modules/gdscript/gdscript_parser.h +++ b/modules/gdscript/gdscript_parser.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/gdscript_tokenizer.cpp b/modules/gdscript/gdscript_tokenizer.cpp index 761a3de37c..11ffa22906 100644 --- a/modules/gdscript/gdscript_tokenizer.cpp +++ b/modules/gdscript/gdscript_tokenizer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/gdscript_tokenizer.h b/modules/gdscript/gdscript_tokenizer.h index 58749012b7..0efc8551cb 100644 --- a/modules/gdscript/gdscript_tokenizer.h +++ b/modules/gdscript/gdscript_tokenizer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/language_server/gdscript_extend_parser.cpp b/modules/gdscript/language_server/gdscript_extend_parser.cpp index 6b5c26ec81..8287c9c084 100644 --- a/modules/gdscript/language_server/gdscript_extend_parser.cpp +++ b/modules/gdscript/language_server/gdscript_extend_parser.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_extend_parser.h b/modules/gdscript/language_server/gdscript_extend_parser.h index a6e0ca5534..5afe991d24 100644 --- a/modules/gdscript/language_server/gdscript_extend_parser.h +++ b/modules/gdscript/language_server/gdscript_extend_parser.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/language_server/gdscript_language_protocol.cpp b/modules/gdscript/language_server/gdscript_language_protocol.cpp index 90646f73ba..cff7653d3a 100644 --- a/modules/gdscript/language_server/gdscript_language_protocol.cpp +++ b/modules/gdscript/language_server/gdscript_language_protocol.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/language_server/gdscript_language_protocol.h b/modules/gdscript/language_server/gdscript_language_protocol.h index 136b45fd78..e45db274e9 100644 --- a/modules/gdscript/language_server/gdscript_language_protocol.h +++ b/modules/gdscript/language_server/gdscript_language_protocol.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/language_server/gdscript_language_server.cpp b/modules/gdscript/language_server/gdscript_language_server.cpp index 8d58b99e02..159f2ba2d4 100644 --- a/modules/gdscript/language_server/gdscript_language_server.cpp +++ b/modules/gdscript/language_server/gdscript_language_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_language_server.h b/modules/gdscript/language_server/gdscript_language_server.h index 83c2320d98..191b8bfa85 100644 --- a/modules/gdscript/language_server/gdscript_language_server.h +++ b/modules/gdscript/language_server/gdscript_language_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/language_server/gdscript_text_document.cpp b/modules/gdscript/language_server/gdscript_text_document.cpp index b83db718b8..b3d1b67af5 100644 --- a/modules/gdscript/language_server/gdscript_text_document.cpp +++ b/modules/gdscript/language_server/gdscript_text_document.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -49,6 +49,7 @@ void GDScriptTextDocument::_bind_methods() { ClassDB::bind_method(D_METHOD("colorPresentation"), &GDScriptTextDocument::colorPresentation); ClassDB::bind_method(D_METHOD("hover"), &GDScriptTextDocument::hover); ClassDB::bind_method(D_METHOD("definition"), &GDScriptTextDocument::definition); + ClassDB::bind_method(D_METHOD("declaration"), &GDScriptTextDocument::declaration); ClassDB::bind_method(D_METHOD("show_native_symbol_in_editor"), &GDScriptTextDocument::show_native_symbol_in_editor); } @@ -281,8 +282,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; } @@ -342,84 +341,96 @@ Variant GDScriptTextDocument::hover(const Dictionary &p_params) { } Array GDScriptTextDocument::definition(const Dictionary &p_params) { - Array arr; + lsp::TextDocumentPositionParams params; + params.load(p_params); + List<const lsp::DocumentSymbol *> symbols; + Array arr = this->find_symbols(params, symbols); + return arr; +} +Variant GDScriptTextDocument::declaration(const Dictionary &p_params) { lsp::TextDocumentPositionParams params; params.load(p_params); + List<const lsp::DocumentSymbol *> symbols; + Array arr = this->find_symbols(params, symbols); + if (arr.empty() && !symbols.empty() && !symbols.front()->get()->native_class.empty()) { // Find a native symbol + const lsp::DocumentSymbol *symbol = symbols.front()->get(); + if (GDScriptLanguageProtocol::get_singleton()->is_goto_native_symbols_enabled()) { + String id; + switch (symbol->kind) { + case lsp::SymbolKind::Class: + id = "class_name:" + symbol->name; + break; + case lsp::SymbolKind::Constant: + id = "class_constant:" + symbol->native_class + ":" + symbol->name; + break; + case lsp::SymbolKind::Property: + case lsp::SymbolKind::Variable: + id = "class_property:" + symbol->native_class + ":" + symbol->name; + break; + case lsp::SymbolKind::Enum: + id = "class_enum:" + symbol->native_class + ":" + symbol->name; + break; + case lsp::SymbolKind::Method: + case lsp::SymbolKind::Function: + id = "class_method:" + symbol->native_class + ":" + symbol->name; + break; + default: + id = "class_global:" + symbol->native_class + ":" + symbol->name; + break; + } + call_deferred("show_native_symbol_in_editor", id); + } else { + notify_client_show_symbol(symbol); + } + } + return arr; +} - const lsp::DocumentSymbol *symbol = GDScriptLanguageProtocol::get_singleton()->get_workspace()->resolve_symbol(params); +GDScriptTextDocument::GDScriptTextDocument() { + file_checker = FileAccess::create(FileAccess::ACCESS_RESOURCES); +} + +GDScriptTextDocument::~GDScriptTextDocument() { + memdelete(file_checker); +} + +void GDScriptTextDocument::sync_script_content(const String &p_path, const String &p_content) { + String path = GDScriptLanguageProtocol::get_singleton()->get_workspace()->get_file_path(p_path); + GDScriptLanguageProtocol::get_singleton()->get_workspace()->parse_script(path, p_content); +} + +void GDScriptTextDocument::show_native_symbol_in_editor(const String &p_symbol_id) { + ScriptEditor::get_singleton()->call_deferred("_help_class_goto", p_symbol_id); + OS::get_singleton()->move_window_to_foreground(); +} + +Array GDScriptTextDocument::find_symbols(const lsp::TextDocumentPositionParams &p_location, List<const lsp::DocumentSymbol *> &r_list) { + Array arr; + const lsp::DocumentSymbol *symbol = GDScriptLanguageProtocol::get_singleton()->get_workspace()->resolve_symbol(p_location); if (symbol) { lsp::Location location; location.uri = symbol->uri; location.range = symbol->range; - const String &path = GDScriptLanguageProtocol::get_singleton()->get_workspace()->get_file_path(symbol->uri); if (file_checker->file_exists(path)) { arr.push_back(location.to_json()); - } else if (!symbol->native_class.empty()) { - if (GDScriptLanguageProtocol::get_singleton()->is_goto_native_symbols_enabled()) { - String id; - switch (symbol->kind) { - case lsp::SymbolKind::Class: - id = "class_name:" + symbol->name; - break; - case lsp::SymbolKind::Constant: - id = "class_constant:" + symbol->native_class + ":" + symbol->name; - break; - case lsp::SymbolKind::Property: - case lsp::SymbolKind::Variable: - id = "class_property:" + symbol->native_class + ":" + symbol->name; - break; - case lsp::SymbolKind::Enum: - id = "class_enum:" + symbol->native_class + ":" + symbol->name; - break; - case lsp::SymbolKind::Method: - case lsp::SymbolKind::Function: - id = "class_method:" + symbol->native_class + ":" + symbol->name; - break; - default: - id = "class_global:" + symbol->native_class + ":" + symbol->name; - break; - } - call_deferred("show_native_symbol_in_editor", id); - } else { - notify_client_show_symbol(symbol); - } } + r_list.push_back(symbol); } else if (GDScriptLanguageProtocol::get_singleton()->is_smart_resolve_enabled()) { - List<const lsp::DocumentSymbol *> list; - GDScriptLanguageProtocol::get_singleton()->get_workspace()->resolve_related_symbols(params, list); + GDScriptLanguageProtocol::get_singleton()->get_workspace()->resolve_related_symbols(p_location, list); for (List<const lsp::DocumentSymbol *>::Element *E = list.front(); E; E = E->next()) { - if (const lsp::DocumentSymbol *s = E->get()) { if (!s->uri.empty()) { lsp::Location location; location.uri = s->uri; location.range = s->range; arr.push_back(location.to_json()); + r_list.push_back(s); } } } } - return arr; } - -GDScriptTextDocument::GDScriptTextDocument() { - file_checker = FileAccess::create(FileAccess::ACCESS_RESOURCES); -} - -GDScriptTextDocument::~GDScriptTextDocument() { - memdelete(file_checker); -} - -void GDScriptTextDocument::sync_script_content(const String &p_path, const String &p_content) { - String path = GDScriptLanguageProtocol::get_singleton()->get_workspace()->get_file_path(p_path); - GDScriptLanguageProtocol::get_singleton()->get_workspace()->parse_script(path, p_content); -} - -void GDScriptTextDocument::show_native_symbol_in_editor(const String &p_symbol_id) { - ScriptEditor::get_singleton()->call_deferred("_help_class_goto", p_symbol_id); - OS::get_singleton()->move_window_to_foreground(); -} diff --git a/modules/gdscript/language_server/gdscript_text_document.h b/modules/gdscript/language_server/gdscript_text_document.h index 235e2c3f6e..d93d828003 100644 --- a/modules/gdscript/language_server/gdscript_text_document.h +++ b/modules/gdscript/language_server/gdscript_text_document.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -51,6 +51,7 @@ protected: Array native_member_completions; private: + Array find_symbols(const lsp::TextDocumentPositionParams &p_location, List<const lsp::DocumentSymbol *> &r_list); lsp::TextDocumentItem load_document_item(const Variant &p_param); void notify_client_show_symbol(const lsp::DocumentSymbol *symbol); @@ -65,6 +66,7 @@ public: Array colorPresentation(const Dictionary &p_params); Variant hover(const Dictionary &p_params); Array definition(const Dictionary &p_params); + Variant declaration(const Dictionary &p_params); void initialize(); diff --git a/modules/gdscript/language_server/gdscript_workspace.cpp b/modules/gdscript/language_server/gdscript_workspace.cpp index f9a974bad3..0661c4af26 100644 --- a/modules/gdscript/language_server/gdscript_workspace.cpp +++ b/modules/gdscript/language_server/gdscript_workspace.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/language_server/gdscript_workspace.h b/modules/gdscript/language_server/gdscript_workspace.h index a416ae1075..f44153dcd0 100644 --- a/modules/gdscript/language_server/gdscript_workspace.h +++ b/modules/gdscript/language_server/gdscript_workspace.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/language_server/lsp.hpp b/modules/gdscript/language_server/lsp.hpp index 35471d63d6..ffeea70008 100644 --- a/modules/gdscript/language_server/lsp.hpp +++ b/modules/gdscript/language_server/lsp.hpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/register_types.cpp b/modules/gdscript/register_types.cpp index 94b9e8c2d9..b5eb09d6ba 100644 --- a/modules/gdscript/register_types.cpp +++ b/modules/gdscript/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gdscript/register_types.h b/modules/gdscript/register_types.h index 0f01a4cdab..55920e8b97 100644 --- a/modules/gdscript/register_types.h +++ b/modules/gdscript/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gridmap/doc_classes/GridMap.xml b/modules/gridmap/doc_classes/GridMap.xml index b762868f2c..3de971db6d 100644 --- a/modules/gridmap/doc_classes/GridMap.xml +++ b/modules/gridmap/doc_classes/GridMap.xml @@ -4,10 +4,10 @@ Node for 3D tile-based maps. </brief_description> <description> - GridMap lets you place meshes on a grid interactively. It works both from the editor and can help you create in-game level editors. - GridMaps use a [MeshLibrary] which contain a list of tiles: meshes with materials plus optional collisions and extra elements. - A GridMap contains a collection of cells. Each grid cell refers to a [MeshLibrary] item. All cells in the map have the same dimensions. - A GridMap is split into a sparse collection of octants for efficient rendering and physics processing. Every octant has the same dimensions and can contain several cells. + GridMap lets you place meshes on a grid interactively. It works both from the editor and from scripts, which can help you create in-game level editors. + GridMaps use a [MeshLibrary] which contains a list of tiles. Each tile is a mesh with materials plus optional collision and navigation shapes. + A GridMap contains a collection of cells. Each grid cell refers to a tile in the [MeshLibrary]. All cells in the map have the same dimensions. + Internally, a GridMap is split into a sparse collection of octants for efficient rendering and physics processing. Every octant has the same dimensions and can contain several cells. </description> <tutorials> <link>https://docs.godotengine.org/en/latest/tutorials/3d/using_gridmaps.html</link> @@ -72,6 +72,7 @@ <argument index="0" name="bit" type="int"> </argument> <description> + Returns an individual bit on the [member collision_layer]. </description> </method> <method name="get_collision_mask_bit" qualifiers="const"> @@ -80,20 +81,21 @@ <argument index="0" name="bit" type="int"> </argument> <description> + Returns an individual bit on the [member collision_mask]. </description> </method> <method name="get_meshes"> <return type="Array"> </return> <description> - Array of [Transform] and [Mesh] references corresponding to the non-empty cells in the grid. The transforms are specified in world space. + Returns an array of [Transform] and [Mesh] references corresponding to the non-empty cells in the grid. The transforms are specified in world space. </description> </method> <method name="get_used_cells" qualifiers="const"> <return type="Array"> </return> <description> - Array of [Vector3] with the non-empty cell coordinates in the grid map. + Returns an array of [Vector3] with the non-empty cell coordinates in the grid map. </description> </method> <method name="make_baked_meshes"> @@ -116,6 +118,7 @@ <argument index="2" name="z" type="int"> </argument> <description> + Returns the position of a grid cell in the GridMap's local coordinate space. </description> </method> <method name="resource_changed"> @@ -140,9 +143,9 @@ <argument index="4" name="orientation" type="int" default="0"> </argument> <description> - Set the mesh index for the cell referenced by its grid-based X, Y and Z coordinates. - A negative item index will clear the cell. - Optionally, the item's orientation can be passed. + Sets the mesh index for the cell referenced by its grid-based X, Y and Z coordinates. + A negative item index such as [constant INVALID_CELL_ITEM] will clear the cell. + Optionally, the item's orientation can be passed. For valid orientation values, see [method Basis.get_orthogonal_index]. </description> </method> <method name="set_clip"> @@ -167,6 +170,7 @@ <argument index="1" name="value" type="bool"> </argument> <description> + Sets an individual bit on the [member collision_layer]. </description> </method> <method name="set_collision_mask_bit"> @@ -177,6 +181,7 @@ <argument index="1" name="value" type="bool"> </argument> <description> + Sets an individual bit on the [member collision_mask]. </description> </method> <method name="world_to_map" qualifiers="const"> @@ -185,6 +190,8 @@ <argument index="0" name="pos" type="Vector3"> </argument> <description> + Returns the coordinates of the grid cell containing the given point. + [code]pos[/code] should be in the GridMap's local coordinate space. </description> </method> </methods> @@ -202,26 +209,30 @@ The size of each octant measured in number of cells. This applies to all three axis. </member> <member name="cell_scale" type="float" setter="set_cell_scale" getter="get_cell_scale" default="1.0"> + The scale of the cell items. + This does not affect the size of the grid cells themselves, only the items in them. This can be used to make cell items overlap their neighbors. </member> <member name="cell_size" type="Vector3" setter="set_cell_size" getter="get_cell_size" default="Vector3( 2, 2, 2 )"> The dimensions of the grid's cells. + This does not affect the size of the meshes. See [member cell_scale]. </member> <member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer" default="1"> + The physics layers this GridMap is in. + GridMaps act as static bodies, meaning they aren't affected by gravity or other forces. They only affect other physics bodies that collide with them. </member> <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="1"> + The physics layers this GridMap detects collisions in. </member> <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"> <argument index="0" name="cell_size" type="Vector3"> </argument> <description> + Emitted when [member cell_size] changes. </description> </signal> </signals> diff --git a/modules/gridmap/grid_map.cpp b/modules/gridmap/grid_map.cpp index 47ac0de7f9..8126c9338f 100644 --- a/modules/gridmap/grid_map.cpp +++ b/modules/gridmap/grid_map.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -193,22 +193,6 @@ bool GridMap::get_collision_layer_bit(int p_bit) const { return get_collision_layer() & (1 << p_bit); } -#ifndef DISABLE_DEPRECATED -void GridMap::set_theme(const Ref<MeshLibrary> &p_theme) { - - WARN_DEPRECATED_MSG("GridMap.theme/set_theme() is deprecated and will be removed in a future version. Use GridMap.mesh_library/set_mesh_library() instead."); - - set_mesh_library(p_theme); -} - -Ref<MeshLibrary> GridMap::get_theme() const { - - WARN_DEPRECATED_MSG("GridMap.theme/get_theme() is deprecated and will be removed in a future version. Use GridMap.mesh_library/get_mesh_library() instead."); - - return get_mesh_library(); -} -#endif // DISABLE_DEPRECATED - void GridMap::set_mesh_library(const Ref<MeshLibrary> &p_mesh_library) { if (!mesh_library.is_null()) @@ -838,11 +822,6 @@ void GridMap::_bind_methods() { ClassDB::bind_method(D_METHOD("set_collision_layer_bit", "bit", "value"), &GridMap::set_collision_layer_bit); ClassDB::bind_method(D_METHOD("get_collision_layer_bit", "bit"), &GridMap::get_collision_layer_bit); -#ifndef DISABLE_DEPRECATED - ClassDB::bind_method(D_METHOD("set_theme", "theme"), &GridMap::set_theme); - ClassDB::bind_method(D_METHOD("get_theme"), &GridMap::get_theme); -#endif // DISABLE_DEPRECATED - ClassDB::bind_method(D_METHOD("set_mesh_library", "mesh_library"), &GridMap::set_mesh_library); ClassDB::bind_method(D_METHOD("get_mesh_library"), &GridMap::get_mesh_library); @@ -885,10 +864,6 @@ void GridMap::_bind_methods() { ClassDB::bind_method(D_METHOD("clear_baked_meshes"), &GridMap::clear_baked_meshes); ClassDB::bind_method(D_METHOD("make_baked_meshes", "gen_lightmap_uv", "lightmap_uv_texel_size"), &GridMap::make_baked_meshes, DEFVAL(false), DEFVAL(0.1)); -#ifndef DISABLE_DEPRECATED - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "theme", PROPERTY_HINT_RESOURCE_TYPE, "MeshLibrary", 0), "set_theme", "get_theme"); -#endif // DISABLE_DEPRECATED - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "mesh_library", PROPERTY_HINT_RESOURCE_TYPE, "MeshLibrary"), "set_mesh_library", "get_mesh_library"); ADD_GROUP("Cell", "cell_"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "cell_size"), "set_cell_size", "get_cell_size"); diff --git a/modules/gridmap/grid_map.h b/modules/gridmap/grid_map.h index f4407099f5..705f4929e1 100644 --- a/modules/gridmap/grid_map.h +++ b/modules/gridmap/grid_map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -227,11 +227,6 @@ public: void set_collision_mask_bit(int p_bit, bool p_value); bool get_collision_mask_bit(int p_bit) const; -#ifndef DISABLE_DEPRECATED - void set_theme(const Ref<MeshLibrary> &p_theme); - Ref<MeshLibrary> get_theme() const; -#endif // DISABLE_DEPRECATED - void set_mesh_library(const Ref<MeshLibrary> &p_mesh_library); Ref<MeshLibrary> get_mesh_library() const; diff --git a/modules/gridmap/grid_map_editor_plugin.cpp b/modules/gridmap/grid_map_editor_plugin.cpp index 1bd570c55f..4aa407f966 100644 --- a/modules/gridmap/grid_map_editor_plugin.cpp +++ b/modules/gridmap/grid_map_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -664,14 +664,15 @@ bool GridMapEditor::forward_spatial_input_event(Camera *p_camera, const Ref<Inpu input_action = INPUT_NONE; } else if (mb->get_button_index() == BUTTON_LEFT) { + bool can_edit = (node && node->get_mesh_library().is_valid()); if (input_action == INPUT_PASTE) { _do_paste(); input_action = INPUT_NONE; _update_paste_indicator(); - } else if (mb->get_shift()) { + } else if (mb->get_shift() && can_edit) { input_action = INPUT_SELECT; last_selection = selection; - } else if (mb->get_command()) { + } else if (mb->get_command() && can_edit) { input_action = INPUT_PICK; } else { input_action = INPUT_PAINT; @@ -1256,7 +1257,7 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) { options->get_popup()->add_item(TTR("Cursor Back Rotate Z"), MENU_OPTION_CURSOR_BACK_ROTATE_Z, KEY_MASK_SHIFT + KEY_D); options->get_popup()->add_item(TTR("Cursor Clear Rotation"), MENU_OPTION_CURSOR_CLEAR_ROTATION, KEY_W); options->get_popup()->add_separator(); - options->get_popup()->add_check_item("Paste Selects", MENU_OPTION_PASTE_SELECTS); + options->get_popup()->add_check_item(TTR("Paste Selects"), MENU_OPTION_PASTE_SELECTS); options->get_popup()->add_separator(); options->get_popup()->add_item(TTR("Duplicate Selection"), MENU_OPTION_SELECTION_DUPLICATE, KEY_MASK_CTRL + KEY_C); options->get_popup()->add_item(TTR("Cut Selection"), MENU_OPTION_SELECTION_CUT, KEY_MASK_CTRL + KEY_X); diff --git a/modules/gridmap/grid_map_editor_plugin.h b/modules/gridmap/grid_map_editor_plugin.h index 42e62f2842..404e95b74c 100644 --- a/modules/gridmap/grid_map_editor_plugin.h +++ b/modules/gridmap/grid_map_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gridmap/register_types.cpp b/modules/gridmap/register_types.cpp index 03db5d323e..afd51945ab 100644 --- a/modules/gridmap/register_types.cpp +++ b/modules/gridmap/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/gridmap/register_types.h b/modules/gridmap/register_types.h index 5a07ea84d9..bc720f460c 100644 --- a/modules/gridmap/register_types.h +++ b/modules/gridmap/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/hdr/image_loader_hdr.cpp b/modules/hdr/image_loader_hdr.cpp index 1abf26bfee..4505df0f8f 100644 --- a/modules/hdr/image_loader_hdr.cpp +++ b/modules/hdr/image_loader_hdr.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/hdr/image_loader_hdr.h b/modules/hdr/image_loader_hdr.h index e9575ee4fb..a5f1f9c387 100644 --- a/modules/hdr/image_loader_hdr.h +++ b/modules/hdr/image_loader_hdr.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/hdr/register_types.cpp b/modules/hdr/register_types.cpp index 8a2b6f14d1..2ef6b7cd07 100644 --- a/modules/hdr/register_types.cpp +++ b/modules/hdr/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/hdr/register_types.h b/modules/hdr/register_types.h index 57a9058a89..c1c69a1e27 100644 --- a/modules/hdr/register_types.h +++ b/modules/hdr/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/jpg/image_loader_jpegd.cpp b/modules/jpg/image_loader_jpegd.cpp index dcd8b8aebd..a1f0f0ef6a 100644 --- a/modules/jpg/image_loader_jpegd.cpp +++ b/modules/jpg/image_loader_jpegd.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/jpg/image_loader_jpegd.h b/modules/jpg/image_loader_jpegd.h index e9016ce43e..9ef37ae303 100644 --- a/modules/jpg/image_loader_jpegd.h +++ b/modules/jpg/image_loader_jpegd.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/jpg/register_types.cpp b/modules/jpg/register_types.cpp index 1febfdebf5..f6077d5c68 100644 --- a/modules/jpg/register_types.cpp +++ b/modules/jpg/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/jpg/register_types.h b/modules/jpg/register_types.h index 633160d941..291098fae2 100644 --- a/modules/jpg/register_types.h +++ b/modules/jpg/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/jsonrpc/jsonrpc.cpp b/modules/jsonrpc/jsonrpc.cpp index ea90cce83d..014b65e3e2 100644 --- a/modules/jsonrpc/jsonrpc.cpp +++ b/modules/jsonrpc/jsonrpc.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/jsonrpc/jsonrpc.h b/modules/jsonrpc/jsonrpc.h index 91897d0b55..e2b7ab0975 100644 --- a/modules/jsonrpc/jsonrpc.h +++ b/modules/jsonrpc/jsonrpc.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/jsonrpc/register_types.cpp b/modules/jsonrpc/register_types.cpp index 242b0e9df4..0d3e446e3e 100644 --- a/modules/jsonrpc/register_types.cpp +++ b/modules/jsonrpc/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/jsonrpc/register_types.h b/modules/jsonrpc/register_types.h index e4648b901f..958f16344a 100644 --- a/modules/jsonrpc/register_types.h +++ b/modules/jsonrpc/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mbedtls/crypto_mbedtls.cpp b/modules/mbedtls/crypto_mbedtls.cpp index 204f4e8905..9b072785af 100644 --- a/modules/mbedtls/crypto_mbedtls.cpp +++ b/modules/mbedtls/crypto_mbedtls.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/crypto_mbedtls.h b/modules/mbedtls/crypto_mbedtls.h index 06b3ecd234..edb5841761 100644 --- a/modules/mbedtls/crypto_mbedtls.h +++ b/modules/mbedtls/crypto_mbedtls.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mbedtls/register_types.cpp b/modules/mbedtls/register_types.cpp index f7dc6c785f..8f9e2c370b 100755 --- a/modules/mbedtls/register_types.cpp +++ b/modules/mbedtls/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mbedtls/register_types.h b/modules/mbedtls/register_types.h index 535dae7999..f179d39438 100755 --- a/modules/mbedtls/register_types.h +++ b/modules/mbedtls/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mbedtls/ssl_context_mbedtls.cpp b/modules/mbedtls/ssl_context_mbedtls.cpp index eeaf831b4a..82584e3494 100644 --- a/modules/mbedtls/ssl_context_mbedtls.cpp +++ b/modules/mbedtls/ssl_context_mbedtls.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mbedtls/ssl_context_mbedtls.h b/modules/mbedtls/ssl_context_mbedtls.h index e49d532912..9145e0fd72 100644 --- a/modules/mbedtls/ssl_context_mbedtls.h +++ b/modules/mbedtls/ssl_context_mbedtls.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mbedtls/stream_peer_mbedtls.cpp b/modules/mbedtls/stream_peer_mbedtls.cpp index a2e342e219..b88d9e48a4 100755 --- a/modules/mbedtls/stream_peer_mbedtls.cpp +++ b/modules/mbedtls/stream_peer_mbedtls.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/mbedtls/stream_peer_mbedtls.h b/modules/mbedtls/stream_peer_mbedtls.h index eec7eab631..68b03ae995 100755 --- a/modules/mbedtls/stream_peer_mbedtls.h +++ b/modules/mbedtls/stream_peer_mbedtls.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mobile_vr/mobile_vr_interface.cpp b/modules/mobile_vr/mobile_vr_interface.cpp index fe107d3683..22b708f206 100644 --- a/modules/mobile_vr/mobile_vr_interface.cpp +++ b/modules/mobile_vr/mobile_vr_interface.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mobile_vr/mobile_vr_interface.h b/modules/mobile_vr/mobile_vr_interface.h index 7fa51eecb7..c762c9b799 100644 --- a/modules/mobile_vr/mobile_vr_interface.h +++ b/modules/mobile_vr/mobile_vr_interface.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mobile_vr/register_types.cpp b/modules/mobile_vr/register_types.cpp index 2ff7987cae..faf6c3b151 100644 --- a/modules/mobile_vr/register_types.cpp +++ b/modules/mobile_vr/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mobile_vr/register_types.h b/modules/mobile_vr/register_types.h index 340a7a4b2a..602fae1f4e 100644 --- a/modules/mobile_vr/register_types.h +++ b/modules/mobile_vr/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/SCsub b/modules/mono/SCsub index a9afa7ccf6..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_solution_build.build(env_mono) + 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) - 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 1fe00a3028..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'] @@ -55,12 +52,22 @@ def build(env_mono): 'GodotSharpEditor.dll', 'GodotSharpEditor.pdb', 'GodotSharpEditor.xml' ] + depend_cmd = [] + for build_config in ['Debug', 'Release']: output_dir = Dir('#bin').abspath editor_api_dir = os.path.join(output_dir, 'GodotSharp', 'Api', build_config) targets = [os.path.join(editor_api_dir, filename) for filename in target_filenames] - cmd = env_mono.CommandNoCache(targets, [], build_api_solution, + cmd = env_mono.CommandNoCache(targets, depend_cmd, build_api_solution, module_dir=os.getcwd(), solution_build_config=build_config) env_mono.AlwaysBuild(cmd) + + # Make the Release build of the API solution depend on the Debug build. + # We do this in order to prevent SCons from building them in parallel, + # which can freak out MSBuild. In many cases, one of the builds would + # hang indefinitely requiring a key to be pressed for it to continue. + depend_cmd = cmd + + return depend_cmd 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 35daa6d307..99341c631e 100644 --- a/modules/mono/build_scripts/godot_tools_build.py +++ b/modules/mono/build_scripts/godot_tools_build.py @@ -13,106 +13,27 @@ 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)) - - -def build(env_mono): - assert env_mono['tools'] - - output_dir = Dir('#bin').abspath - editor_tools_dir = os.path.join(output_dir, 'GodotSharp', 'Tools') - editor_api_dir = os.path.join(output_dir, 'GodotSharp', 'Api', 'Debug') - - source_filenames = ['GodotSharp.dll', 'GodotSharpEditor.dll'] - sources = [os.path.join(editor_api_dir, filename) for filename in source_filenames] - - target_filenames = [ - 'GodotTools.dll', 'GodotTools.IdeConnection.dll', 'GodotTools.BuildLogger.dll', - 'GodotTools.ProjectEditor.dll', 'DotNet.Glob.dll', 'GodotTools.Core.dll' - ] - - if env_mono['target'] == 'debug': - target_filenames += [ - 'GodotTools.pdb', 'GodotTools.IdeConnection.pdb', 'GodotTools.BuildLogger.pdb', - 'GodotTools.ProjectEditor.pdb', 'GodotTools.Core.pdb' - ] - - targets = [os.path.join(editor_tools_dir, filename) for filename in target_filenames] - - cmd = env_mono.CommandNoCache(targets, sources, build_godot_tools, module_dir=os.getcwd()) - env_mono.AlwaysBuild(cmd) + 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_project_editor_only(env_mono): +def build(env_mono, api_sln_cmd): 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'] + target_filenames = ['GodotTools.dll'] if env_mono['target'] == 'debug': - target_filenames += ['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, [], build_godot_tools_project_editor, module_dir=os.getcwd()) + cmd = env_mono.CommandNoCache(targets, api_sln_cmd, build_godot_tools, 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 5388061f84..033c467da9 100644 --- a/modules/mono/build_scripts/mono_configure.py +++ b/modules/mono/build_scripts/mono_configure.py @@ -120,9 +120,9 @@ def configure(env, env_mono): env.Append(LIBPATH=mono_lib_path) env_mono.Prepend(CPPPATH=os.path.join(mono_root, 'include', 'mono-2.0')) - if mono_static: - lib_suffix = Environment()['LIBSUFFIX'] + lib_suffix = Environment()['LIBSUFFIX'] + if mono_static: if env.msvc: mono_static_lib_name = 'libmono-static-sgen' else: @@ -144,13 +144,13 @@ def configure(env, env_mono): env.Append(LIBS=['psapi']) env.Append(LIBS=['version']) else: - mono_lib_name = find_file_in_dir(mono_lib_path, mono_lib_names, extension='.lib') + mono_lib_name = find_file_in_dir(mono_lib_path, mono_lib_names, extension=lib_suffix) if not mono_lib_name: raise RuntimeError('Could not find mono library in: ' + mono_lib_path) if env.msvc: - env.Append(LINKFLAGS=mono_lib_name + Environment()['LIBSUFFIX']) + env.Append(LINKFLAGS=mono_lib_name + lib_suffix) else: env.Append(LIBS=[mono_lib_name]) @@ -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 @@ -426,15 +427,17 @@ def copy_mono_shared_libs(env, mono_root, target_mono_root_dir): platform = env['platform'] if platform == 'windows': + src_mono_bin_dir = os.path.join(mono_root, 'bin') target_mono_bin_dir = os.path.join(target_mono_root_dir, 'bin') if not os.path.isdir(target_mono_bin_dir): os.makedirs(target_mono_bin_dir) - copy(os.path.join(mono_root, 'bin', 'MonoPosixHelper.dll'), target_mono_bin_dir) + mono_posix_helper_name = find_file_in_dir(src_mono_bin_dir, ['MonoPosixHelper', 'libMonoPosixHelper'], extension='.dll') + copy(os.path.join(src_mono_bin_dir, mono_posix_helper_name + '.dll'), os.path.join(target_mono_bin_dir, 'MonoPosixHelper.dll')) # For newer versions - btls_dll_path = os.path.join(mono_root, 'bin', 'libmono-btls-shared.dll') + btls_dll_path = os.path.join(src_mono_bin_dir, 'libmono-btls-shared.dll') if os.path.isfile(btls_dll_path): copy(btls_dll_path, target_mono_bin_dir) else: @@ -443,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/class_db_api_json.cpp b/modules/mono/class_db_api_json.cpp index bbc779601e..c1d6f4dccf 100644 --- a/modules/mono/class_db_api_json.cpp +++ b/modules/mono/class_db_api_json.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/class_db_api_json.h b/modules/mono/class_db_api_json.h index 9888ecfb55..7f016ac3d6 100644 --- a/modules/mono/class_db_api_json.h +++ b/modules/mono/class_db_api_json.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index 34dcde40f4..d82e78d080 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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 @@ -128,7 +129,8 @@ void CSharpLanguage::init() { print_line("Run this binary with '--generate-mono-glue path/to/modules/mono/glue'"); #endif - gdmono->initialize_load_assemblies(); + if (gdmono->is_runtime_initialized()) + gdmono->initialize_load_assemblies(); #ifdef TOOLS_ENABLED EditorNode::add_init_callback(&_editor_init_callback); diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h index eb168f344d..027f429125 100644 --- a/modules/mono/csharp_script.h +++ b/modules/mono/csharp_script.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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..b6bb0aac34 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>$(SolutionDir)\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..82627de01a 100644 --- a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectGenerator.cs +++ b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectGenerator.cs @@ -2,6 +2,7 @@ using GodotTools.Core; using System; using System.Collections.Generic; using System.IO; +using System.Reflection; using Microsoft.Build.Construction; namespace GodotTools.ProjectEditor @@ -10,68 +11,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 +56,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 +84,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 +93,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"); @@ -155,6 +101,7 @@ namespace GodotTools.ProjectEditor mainGroup.AddProperty("RootNamespace", IdentifierUtils.SanitizeQualifiedIdentifier(name, allowEmptyIdentifiers: true)); mainGroup.AddProperty("AssemblyName", name); mainGroup.AddProperty("TargetFrameworkVersion", "v4.5"); + mainGroup.AddProperty("GodotProjectGeneratorVersion", Assembly.GetExecutingAssembly().GetName().Version.ToString()); var debugGroup = root.AddPropertyGroup(); debugGroup.Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "; @@ -184,16 +131,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 cf3823fd16..96cafba87f 100644 --- a/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs +++ b/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs @@ -22,6 +22,7 @@ namespace GodotTools.Export // TODO: These would be better as export preset options, but that doesn't seem to be supported yet GlobalDef("mono/export/include_scripts_content", false); + GlobalDef("mono/export/export_assemblies_inside_pck", true); GlobalDef("mono/export/aot/enabled", false); GlobalDef("mono/export/aot/full_aot", false); @@ -38,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) @@ -53,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) { @@ -77,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. } @@ -113,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"; @@ -124,31 +131,56 @@ 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)) + outputDataDir = ExportDataDirectory(features, platform, isDebug, outputDir); + string apiConfig = isDebug ? "Debug" : "Release"; string resAssembliesDir = Path.Combine(GodotSharpDirs.ResAssembliesBaseDir, apiConfig); - foreach (var dependency in dependencies) + bool assembliesInsidePck = (bool)ProjectSettings.GetSetting("mono/export/export_assemblies_inside_pck") || outputDataDir == null; + + if (!assembliesInsidePck) { - string dependSrcPath = dependency.Value; - string dependDstPath = Path.Combine(resAssembliesDir, dependSrcPath.GetFile()); - AddFile(dependSrcPath, dependDstPath); + string outputDataGameAssembliesDir = Path.Combine(outputDataDir, "Assemblies"); + if (!Directory.Exists(outputDataGameAssembliesDir)) + Directory.CreateDirectory(outputDataGameAssembliesDir); } - // Mono specific export template extras (data dir) - string outputDataDir = null; + foreach (var dependency in dependencies) + { + string dependSrcPath = dependency.Value; - if (PlatformHasTemplateDir(platform)) - outputDataDir = ExportDataDirectory(features, platform, isDebug, outputDir); + if (assembliesInsidePck) + { + string dependDstPath = Path.Combine(resAssembliesDir, dependSrcPath.GetFile()); + AddFile(dependSrcPath, dependDstPath); + } + else + { + string dependDstPath = Path.Combine(outputDataDir, "Assemblies", dependSrcPath.GetFile()); + File.Copy(dependSrcPath, dependDstPath); + } + } // AOT - if ((bool) ProjectSettings.GetSetting("mono/export/aot/enabled")) + if ((bool)ProjectSettings.GetSetting("mono/export/aot/enabled")) { AotCompileDependencies(features, platform, isDebug, outputDir, outputDataDir, dependencies); } @@ -183,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); @@ -308,7 +342,7 @@ namespace GodotTools.Export AotCompileAssembly(platform, isDebug, data, assemblyPath, outputFilePathForThisAbi); - AddSharedObject(outputFilePathForThisAbi, tags: new[] {abi}); + AddSharedObject(outputFilePathForThisAbi, tags: new[] { abi }); } } else @@ -349,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)); @@ -366,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)) { @@ -391,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); @@ -485,7 +519,7 @@ namespace GodotTools.Export case OS.Platforms.HTML5: return "wasm-wasm32"; default: - throw new NotSupportedException(); + throw new NotSupportedException($"Platform not supported: {platform}"); } } @@ -547,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) @@ -561,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; @@ -572,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: @@ -594,7 +661,7 @@ namespace GodotTools.Export case OS.Platforms.HTML5: return "wasm"; default: - throw new NotSupportedException(); + throw new NotSupportedException($"Platform not supported: {platform}"); } } @@ -602,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..9beadb1778 100644 --- a/modules/mono/editor/bindings_generator.cpp +++ b/modules/mono/editor/bindings_generator.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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 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; 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; } @@ -1600,7 +1602,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf // Apparently the name attribute must not include the @ String param_tag_name = iarg.name.begins_with("@") ? iarg.name.substr(1, iarg.name.length()) : iarg.name; - default_args_doc.append(INDENT2 "/// <param name=\"" + param_tag_name + "\">If the parameter is null, then the default value is " + def_arg + "</param>\n"); + default_args_doc.append(MEMBER_BEGIN "/// <param name=\"" + param_tag_name + "\">If the parameter is null, then the default value is " + def_arg + "</param>"); } else { icall_params += arg_type->cs_in.empty() ? iarg.name : sformat(arg_type->cs_in, iarg.name); } @@ -1619,7 +1621,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf String xml_summary = bbcode_to_xml(fix_doc_description(p_imethod.method_doc->description), &p_itype); Vector<String> summary_lines = xml_summary.length() ? xml_summary.split("\n") : Vector<String>(); - if (summary_lines.size() || default_args_doc.get_string_length()) { + if (summary_lines.size()) { p_output.append(MEMBER_BEGIN "/// <summary>\n"); for (int i = 0; i < summary_lines.size(); i++) { @@ -1628,11 +1630,14 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf p_output.append("\n"); } - p_output.append(default_args_doc.as_string()); p_output.append(INDENT2 "/// </summary>"); } } + if (default_args_doc.get_string_length()) { + p_output.append(default_args_doc.as_string()); + } + if (!p_imethod.is_internal) { p_output.append(MEMBER_BEGIN "[GodotMethod(\""); p_output.append(p_imethod.name); @@ -2064,9 +2069,11 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte p_output.append(p_imethod.arguments.size() ? C_LOCAL_PTRCALL_ARGS ".ptr()" : "NULL"); p_output.append(", total_length, vcall_error);\n"); - // See the comment on the C_LOCAL_VARARG_RET declaration - if (return_type->cname != name_cache.type_Variant) { - p_output.append("\t" C_LOCAL_RET " = " C_LOCAL_VARARG_RET ";\n"); + if (!ret_void) { + // See the comment on the C_LOCAL_VARARG_RET declaration + if (return_type->cname != name_cache.type_Variant) { + p_output.append("\t" C_LOCAL_RET " = " C_LOCAL_VARARG_RET ";\n"); + } } } else { p_output.append("\t" CS_PARAM_METHODBIND "->ptrcall(" CS_PARAM_INSTANCE ", "); @@ -3170,7 +3177,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..d3a8937313 100644 --- a/modules/mono/editor/bindings_generator.h +++ b/modules/mono/editor/bindings_generator.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..872f45ba91 100644 --- a/modules/mono/editor/csharp_project.cpp +++ b/modules/mono/editor/csharp_project.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..515b8d3d62 100644 --- a/modules/mono/editor/csharp_project.h +++ b/modules/mono/editor/csharp_project.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..cfc869cd39 100644 --- a/modules/mono/editor/editor_internal_calls.cpp +++ b/modules/mono/editor/editor_internal_calls.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/editor_internal_calls.h b/modules/mono/editor/editor_internal_calls.h index 1682da66e5..ef4e639161 100644 --- a/modules/mono/editor/editor_internal_calls.h +++ b/modules/mono/editor/editor_internal_calls.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/editor/godotsharp_export.cpp b/modules/mono/editor/godotsharp_export.cpp index 9ae9399e1d..ce0b6ad0e6 100644 --- a/modules/mono/editor/godotsharp_export.cpp +++ b/modules/mono/editor/godotsharp_export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..36138f81b7 100644 --- a/modules/mono/editor/godotsharp_export.h +++ b/modules/mono/editor/godotsharp_export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..c400479b89 100644 --- a/modules/mono/editor/script_class_parser.cpp +++ b/modules/mono/editor/script_class_parser.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/editor/script_class_parser.h b/modules/mono/editor/script_class_parser.h index 39003336ac..a76a3a50a9 100644 --- a/modules/mono/editor/script_class_parser.h +++ b/modules/mono/editor/script_class_parser.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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..0462ef1125 100644 --- a/modules/mono/glue/Managed/Files/Color.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs @@ -541,7 +541,7 @@ namespace Godot return true; } - public static Color Color8(byte r8, byte g8, byte b8, byte a8) + public static Color Color8(byte r8, byte g8, byte b8, byte a8 = 255) { return new Color(r8 / 255f, g8 / 255f, b8 / 255f, a8 / 255f); } @@ -605,6 +605,74 @@ namespace Godot throw new ArgumentOutOfRangeException("Invalid color code. Blue part is not valid hexadecimal: " + rgba); } + public static Color operator +(Color left, Color right) + { + left.r += right.r; + left.g += right.g; + left.b += right.b; + left.a += right.a; + return left; + } + + public static Color operator -(Color left, Color right) + { + left.r -= right.r; + left.g -= right.g; + left.b -= right.b; + left.a -= right.a; + return left; + } + + public static Color operator -(Color color) + { + return Colors.White - color; + } + + public static Color operator *(Color color, float scale) + { + color.r *= scale; + color.g *= scale; + color.b *= scale; + color.a *= scale; + return color; + } + + public static Color operator *(float scale, Color color) + { + color.r *= scale; + color.g *= scale; + color.b *= scale; + color.a *= scale; + return color; + } + + public static Color operator *(Color left, Color right) + { + left.r *= right.r; + left.g *= right.g; + left.b *= right.b; + left.a *= right.a; + return left; + } + + public static Color operator /(Color color, float scale) + { + color.r /= scale; + color.g /= scale; + color.b /= scale; + color.a /= scale; + return color; + } + + public static Color operator /(Color left, Color right) + { + left.r /= right.r; + left.g /= right.g; + left.b /= right.b; + left.a /= right.a; + return left; + } + public static bool operator ==(Color left, Color right) { return left.Equals(right); 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..ddfed180b5 100644 --- a/modules/mono/glue/Managed/Files/Mathf.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs @@ -266,12 +266,14 @@ namespace Godot public static int Sign(int s) { + if (s == 0) return 0; return s < 0 ? -1 : 1; } - public static real_t Sign(real_t s) + public static int Sign(real_t s) { - return s < 0f ? -1f : 1f; + if (s == 0) return 0; + return s < 0 ? -1 : 1; } public static real_t Sin(real_t s) 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/arguments_vector.h b/modules/mono/glue/arguments_vector.h index 8c0f308c15..aeb466ba72 100644 --- a/modules/mono/glue/arguments_vector.h +++ b/modules/mono/glue/arguments_vector.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/base_object_glue.cpp b/modules/mono/glue/base_object_glue.cpp index 2488f78350..04a489f1f9 100644 --- a/modules/mono/glue/base_object_glue.cpp +++ b/modules/mono/glue/base_object_glue.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/base_object_glue.h b/modules/mono/glue/base_object_glue.h index e4ac9fb99d..22532dcff9 100644 --- a/modules/mono/glue/base_object_glue.h +++ b/modules/mono/glue/base_object_glue.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/collections_glue.cpp b/modules/mono/glue/collections_glue.cpp index bfb7b0f775..b7fa7fcab2 100644 --- a/modules/mono/glue/collections_glue.cpp +++ b/modules/mono/glue/collections_glue.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..f8351a1fc7 100644 --- a/modules/mono/glue/collections_glue.h +++ b/modules/mono/glue/collections_glue.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/glue/gd_glue.cpp b/modules/mono/glue/gd_glue.cpp index 1381d79e2e..9bea625450 100644 --- a/modules/mono/glue/gd_glue.cpp +++ b/modules/mono/glue/gd_glue.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -71,48 +71,114 @@ MonoObject *godot_icall_GD_instance_from_id(uint64_t p_instance_id) { } void godot_icall_GD_print(MonoArray *p_what) { - Array what = GDMonoMarshal::mono_array_to_Array(p_what); String str; - for (int i = 0; i < what.size(); i++) - str += what[i].operator String(); + int length = mono_array_length(p_what); + + for (int i = 0; i < length; i++) { + MonoObject *elem = mono_array_get(p_what, MonoObject *, i); + + MonoException *exc = NULL; + String elem_str = GDMonoMarshal::mono_object_to_variant_string(elem, &exc); + + if (exc) { + GDMonoUtils::set_pending_exception(exc); + return; + } + + str += elem_str; + } + print_line(str); } void godot_icall_GD_printerr(MonoArray *p_what) { - Array what = GDMonoMarshal::mono_array_to_Array(p_what); + String str; - for (int i = 0; i < what.size(); i++) - str += what[i].operator String(); - OS::get_singleton()->printerr("%s\n", str.utf8().get_data()); + int length = mono_array_length(p_what); + + for (int i = 0; i < length; i++) { + MonoObject *elem = mono_array_get(p_what, MonoObject *, i); + + MonoException *exc = NULL; + String elem_str = GDMonoMarshal::mono_object_to_variant_string(elem, &exc); + + if (exc) { + GDMonoUtils::set_pending_exception(exc); + return; + } + + str += elem_str; + } + + print_error(str); } void godot_icall_GD_printraw(MonoArray *p_what) { - Array what = GDMonoMarshal::mono_array_to_Array(p_what); String str; - for (int i = 0; i < what.size(); i++) - str += what[i].operator String(); + int length = mono_array_length(p_what); + + for (int i = 0; i < length; i++) { + MonoObject *elem = mono_array_get(p_what, MonoObject *, i); + + MonoException *exc = NULL; + String elem_str = GDMonoMarshal::mono_object_to_variant_string(elem, &exc); + + if (exc) { + GDMonoUtils::set_pending_exception(exc); + return; + } + + str += elem_str; + } + OS::get_singleton()->print("%s", str.utf8().get_data()); } void godot_icall_GD_prints(MonoArray *p_what) { - Array what = GDMonoMarshal::mono_array_to_Array(p_what); String str; - for (int i = 0; i < what.size(); i++) { + int length = mono_array_length(p_what); + + for (int i = 0; i < length; i++) { + MonoObject *elem = mono_array_get(p_what, MonoObject *, i); + + MonoException *exc = NULL; + String elem_str = GDMonoMarshal::mono_object_to_variant_string(elem, &exc); + + if (exc) { + GDMonoUtils::set_pending_exception(exc); + return; + } + if (i) str += " "; - str += what[i].operator String(); + + str += elem_str; } + print_line(str); } void godot_icall_GD_printt(MonoArray *p_what) { - Array what = GDMonoMarshal::mono_array_to_Array(p_what); String str; - for (int i = 0; i < what.size(); i++) { + int length = mono_array_length(p_what); + + for (int i = 0; i < length; i++) { + MonoObject *elem = mono_array_get(p_what, MonoObject *, i); + + MonoException *exc = NULL; + String elem_str = GDMonoMarshal::mono_object_to_variant_string(elem, &exc); + + if (exc) { + GDMonoUtils::set_pending_exception(exc); + return; + } + if (i) str += "\t"; - str += what[i].operator String(); + + str += elem_str; } + print_line(str); } diff --git a/modules/mono/glue/gd_glue.h b/modules/mono/glue/gd_glue.h index a34c0bc50f..f00e2efc5d 100644 --- a/modules/mono/glue/gd_glue.h +++ b/modules/mono/glue/gd_glue.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/glue_header.h b/modules/mono/glue/glue_header.h index 1836130b76..758b71f719 100644 --- a/modules/mono/glue/glue_header.h +++ b/modules/mono/glue/glue_header.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/nodepath_glue.cpp b/modules/mono/glue/nodepath_glue.cpp index 2edc43af8d..e413f404d8 100644 --- a/modules/mono/glue/nodepath_glue.cpp +++ b/modules/mono/glue/nodepath_glue.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/nodepath_glue.h b/modules/mono/glue/nodepath_glue.h index 2192444336..727679c278 100644 --- a/modules/mono/glue/nodepath_glue.h +++ b/modules/mono/glue/nodepath_glue.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/rid_glue.cpp b/modules/mono/glue/rid_glue.cpp index 6a9810d0d4..66a49d8fec 100644 --- a/modules/mono/glue/rid_glue.cpp +++ b/modules/mono/glue/rid_glue.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/rid_glue.h b/modules/mono/glue/rid_glue.h index 4b593e8a95..506d715451 100644 --- a/modules/mono/glue/rid_glue.h +++ b/modules/mono/glue/rid_glue.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/string_glue.cpp b/modules/mono/glue/string_glue.cpp index e9373fb486..e407a70db9 100644 --- a/modules/mono/glue/string_glue.cpp +++ b/modules/mono/glue/string_glue.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/glue/string_glue.h b/modules/mono/glue/string_glue.h index c9052edd40..a5e833ba61 100644 --- a/modules/mono/glue/string_glue.h +++ b/modules/mono/glue/string_glue.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/godotsharp_defs.h b/modules/mono/godotsharp_defs.h index 4c17a6ec9d..7d57d0fac3 100644 --- a/modules/mono/godotsharp_defs.h +++ b/modules/mono/godotsharp_defs.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/godotsharp_dirs.cpp b/modules/mono/godotsharp_dirs.cpp index cb0ac9431e..47eb432490 100644 --- a/modules/mono/godotsharp_dirs.cpp +++ b/modules/mono/godotsharp_dirs.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -108,6 +108,10 @@ public: String data_editor_tools_dir; String data_editor_prebuilt_api_dir; +#else + // Equivalent of res_assemblies_dir, but in the data directory rather than in 'res://'. + // Only defined on export templates. Used when exporting assemblies outside of PCKs. + String data_game_assemblies_dir; #endif String data_mono_etc_dir; @@ -205,6 +209,7 @@ private: data_mono_lib_dir = GDMonoAndroid::get_app_native_lib_dir(); #else data_mono_lib_dir = data_mono_root_dir.plus_file("lib"); + data_game_assemblies_dir = data_dir_root.plus_file("Assemblies"); #endif #ifdef WINDOWS_ENABLED @@ -216,6 +221,10 @@ private: data_mono_etc_dir = exe_dir.plus_file("../Resources/GodotSharp/Mono/etc"); data_mono_lib_dir = exe_dir.plus_file("../Frameworks/GodotSharp/Mono/lib"); } + + if (!DirAccess::exists(data_game_assemblies_dir)) { + data_game_assemblies_dir = exe_dir.plus_file("../Frameworks/GodotSharp/Assemblies"); + } #endif #endif @@ -295,6 +304,10 @@ String get_data_editor_tools_dir() { String get_data_editor_prebuilt_api_dir() { return _GodotSharpDirs::get_singleton().data_editor_prebuilt_api_dir; } +#else +String get_data_game_assemblies_dir() { + return _GodotSharpDirs::get_singleton().data_game_assemblies_dir; +} #endif String get_data_mono_etc_dir() { diff --git a/modules/mono/godotsharp_dirs.h b/modules/mono/godotsharp_dirs.h index ff51888d1c..2ab4b0e309 100644 --- a/modules/mono/godotsharp_dirs.h +++ b/modules/mono/godotsharp_dirs.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -56,6 +56,8 @@ String get_project_csproj_path(); String get_data_editor_tools_dir(); String get_data_editor_prebuilt_api_dir(); +#else +String get_data_game_assemblies_dir(); #endif String get_data_mono_etc_dir(); diff --git a/modules/mono/icons/icon_c_#.svg b/modules/mono/icons/icon_c_sharp_script.svg index 69664ca553..69664ca553 100644 --- a/modules/mono/icons/icon_c_#.svg +++ b/modules/mono/icons/icon_c_sharp_script.svg diff --git a/modules/mono/mono_gc_handle.cpp b/modules/mono/mono_gc_handle.cpp index a9e2136a19..feeea848ee 100644 --- a/modules/mono/mono_gc_handle.cpp +++ b/modules/mono/mono_gc_handle.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gc_handle.h b/modules/mono/mono_gc_handle.h index 60a1eed212..37fc7d8a17 100644 --- a/modules/mono/mono_gc_handle.h +++ b/modules/mono/mono_gc_handle.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/android_mono_config.h b/modules/mono/mono_gd/android_mono_config.h index c5cc244aec..93f708bba0 100644 --- a/modules/mono/mono_gd/android_mono_config.h +++ b/modules/mono/mono_gd/android_mono_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp index 384ef08cd0..60008f8fab 100644 --- a/modules/mono/mono_gd/gd_mono.cpp +++ b/modules/mono/mono_gd/gd_mono.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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); @@ -239,35 +229,22 @@ void GDMono::add_mono_shared_libs_dir_to_path() { #endif // WINDOWS_ENABLED || UNIX_ENABLED } -void GDMono::initialize() { - - ERR_FAIL_NULL(Engine::get_singleton()); - - print_verbose("Mono: Initializing module..."); - - char *runtime_build_info = mono_get_runtime_build_info(); - print_verbose("Mono JIT compiler version " + String(runtime_build_info)); - mono_free(runtime_build_info); - -#ifdef DEBUG_METHODS_ENABLED - _initialize_and_check_api_hashes(); -#endif - - GDMonoLog::get_singleton()->initialize(); +void GDMono::determine_mono_dirs(String &r_assembly_rootdir, String &r_config_dir) { - String assembly_rootdir; - String config_dir; + String bundled_assembly_rootdir = GodotSharpDirs::get_data_mono_lib_dir(); + String bundled_config_dir = GodotSharpDirs::get_data_mono_etc_dir(); #ifdef TOOLS_ENABLED + #if defined(WINDOWS_ENABLED) mono_reg_info = MonoRegUtils::find_mono(); if (mono_reg_info.assembly_dir.length() && DirAccess::exists(mono_reg_info.assembly_dir)) { - assembly_rootdir = mono_reg_info.assembly_dir; + r_assembly_rootdir = mono_reg_info.assembly_dir; } if (mono_reg_info.config_dir.length() && DirAccess::exists(mono_reg_info.config_dir)) { - config_dir = mono_reg_info.config_dir; + r_config_dir = mono_reg_info.config_dir; } #elif defined(OSX_ENABLED) const char *c_assembly_rootdir = mono_assembly_getrootdir(); @@ -284,29 +261,24 @@ void GDMono::initialize() { String hint_config_dir = path::join(locations[i], "etc"); if (FileAccess::exists(hint_mscorlib_path) && DirAccess::exists(hint_config_dir)) { - assembly_rootdir = hint_assembly_rootdir; - config_dir = hint_config_dir; + r_assembly_rootdir = hint_assembly_rootdir; + r_config_dir = hint_config_dir; break; } } } #endif -#endif // TOOLS_ENABLED - String bundled_assembly_rootdir = GodotSharpDirs::get_data_mono_lib_dir(); - String bundled_config_dir = GodotSharpDirs::get_data_mono_etc_dir(); - -#ifdef TOOLS_ENABLED if (DirAccess::exists(bundled_assembly_rootdir)) { - assembly_rootdir = bundled_assembly_rootdir; + r_assembly_rootdir = bundled_assembly_rootdir; } if (DirAccess::exists(bundled_config_dir)) { - config_dir = bundled_config_dir; + r_config_dir = bundled_config_dir; } #ifdef WINDOWS_ENABLED - if (assembly_rootdir.empty() || config_dir.empty()) { + if (r_assembly_rootdir.empty() || r_config_dir.empty()) { ERR_PRINT("Cannot find Mono in the registry."); // Assertion: if they are not set, then they weren't found in the registry CRASH_COND(mono_reg_info.assembly_dir.length() > 0 || mono_reg_info.config_dir.length() > 0); @@ -314,12 +286,32 @@ void GDMono::initialize() { #endif // WINDOWS_ENABLED #else - // These are always the directories in export templates - assembly_rootdir = bundled_assembly_rootdir; - config_dir = bundled_config_dir; -#endif // TOOLS_ENABLED + // Export templates always use the bundled directories + r_assembly_rootdir = bundled_assembly_rootdir; + r_config_dir = bundled_config_dir; +#endif +} + +void GDMono::initialize() { + + ERR_FAIL_NULL(Engine::get_singleton()); + + print_verbose("Mono: Initializing module..."); + + char *runtime_build_info = mono_get_runtime_build_info(); + print_verbose("Mono JIT compiler version " + String(runtime_build_info)); + mono_free(runtime_build_info); + + _init_godot_api_hashes(); + _init_exception_policy(); + + GDMonoLog::get_singleton()->initialize(); #if !defined(JAVASCRIPT_ENABLED) + String assembly_rootdir; + String config_dir; + determine_mono_dirs(assembly_rootdir, config_dir); + // Leak if we call mono_set_dirs more than once mono_set_dirs(assembly_rootdir.length() ? assembly_rootdir.utf8().get_data() : NULL, config_dir.length() ? config_dir.utf8().get_data() : NULL); @@ -328,21 +320,9 @@ void GDMono::initialize() { #endif #if defined(ANDROID_ENABLED) - GDMonoAndroid::register_android_dl_fallback(); + GDMonoAndroid::initialize(); #endif - { - PropertyInfo exc_policy_prop = PropertyInfo(Variant::INT, "mono/unhandled_exception_policy", PROPERTY_HINT_ENUM, - vformat("Terminate Application:%s,Log Error:%s", (int)POLICY_TERMINATE_APP, (int)POLICY_LOG_ERROR)); - unhandled_exception_policy = (UnhandledExceptionPolicy)(int)GLOBAL_DEF(exc_policy_prop.name, (int)POLICY_TERMINATE_APP); - ProjectSettings::get_singleton()->set_custom_property_info(exc_policy_prop.name, exc_policy_prop); - - if (Engine::get_singleton()->is_editor_hint()) { - // Unhandled exceptions should not terminate the editor - unhandled_exception_policy = POLICY_LOG_ERROR; - } - } - GDMonoAssembly::initialize(); #if !defined(JAVASCRIPT_ENABLED) @@ -358,18 +338,24 @@ void GDMono::initialize() { mono_install_unhandled_exception_hook(&unhandled_exception_hook, NULL); #ifndef TOOLS_ENABLED - // Export templates only load the Mono runtime if the project uses it - if (!DirAccess::exists("res://.mono")) + // Exported games that don't use C# must still work. They likely don't ship with mscorlib. + // We only initialize the Mono runtime if we can find mscorlib. Otherwise it would crash. + if (GDMonoAssembly::find_assembly("mscorlib.dll").empty()) { + print_verbose("Mono: Skipping runtime initialization because 'mscorlib.dll' could not be found"); return; + } #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."); @@ -383,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."); @@ -390,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"); @@ -475,9 +459,8 @@ void GDMono::_register_internal_calls() { GodotSharpBindings::register_generated_icalls(); } -void GDMono::_initialize_and_check_api_hashes() { -#ifdef MONO_GLUE_ENABLED -#ifdef DEBUG_METHODS_ENABLED +void GDMono::_init_godot_api_hashes() { +#if defined(MONO_GLUE_ENABLED) && defined(DEBUG_METHODS_ENABLED) if (get_api_core_hash() != GodotSharpBindings::get_core_api_hash()) { ERR_PRINT("Mono: Core API hash mismatch."); } @@ -487,8 +470,19 @@ void GDMono::_initialize_and_check_api_hashes() { ERR_PRINT("Mono: Editor API hash mismatch."); } #endif // TOOLS_ENABLED -#endif // DEBUG_METHODS_ENABLED -#endif // MONO_GLUE_ENABLED +#endif // MONO_GLUE_ENABLED && DEBUG_METHODS_ENABLED +} + +void GDMono::_init_exception_policy() { + PropertyInfo exc_policy_prop = PropertyInfo(Variant::INT, "mono/unhandled_exception_policy", PROPERTY_HINT_ENUM, + vformat("Terminate Application:%s,Log Error:%s", (int)POLICY_TERMINATE_APP, (int)POLICY_LOG_ERROR)); + unhandled_exception_policy = (UnhandledExceptionPolicy)(int)GLOBAL_DEF(exc_policy_prop.name, (int)POLICY_TERMINATE_APP); + ProjectSettings::get_singleton()->set_custom_property_info(exc_policy_prop.name, exc_policy_prop); + + if (Engine::get_singleton()->is_editor_hint()) { + // Unhandled exceptions should not terminate the editor + unhandled_exception_policy = POLICY_LOG_ERROR; + } } void GDMono::add_assembly(uint32_t p_domain_id, GDMonoAssembly *p_assembly) { @@ -1250,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.h b/modules/mono/mono_gd/gd_mono.h index e14a0d8409..306fa15f12 100644 --- a/modules/mono/mono_gd/gd_mono.h +++ b/modules/mono/mono_gd/gd_mono.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -153,7 +153,8 @@ private: #ifdef TOOLS_ENABLED uint64_t api_editor_hash; #endif - void _initialize_and_check_api_hashes(); + void _init_godot_api_hashes(); + void _init_exception_policy(); GDMonoLog *gdmono_log; @@ -162,6 +163,7 @@ private: #endif void add_mono_shared_libs_dir_to_path(); + void determine_mono_dirs(String &r_assembly_rootdir, String &r_config_dir); protected: static GDMono *singleton; diff --git a/modules/mono/mono_gd/gd_mono_android.cpp b/modules/mono/mono_gd/gd_mono_android.cpp index 1ee035589d..27f394fae0 100644 --- a/modules/mono/mono_gd/gd_mono_android.cpp +++ b/modules/mono/mono_gd/gd_mono_android.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..0e04847924 100644 --- a/modules/mono/mono_gd/gd_mono_android.h +++ b/modules/mono/mono_gd/gd_mono_android.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_assembly.cpp b/modules/mono/mono_gd/gd_mono_assembly.cpp index 91842420b7..9d7ac5c5ea 100644 --- a/modules/mono/mono_gd/gd_mono_assembly.cpp +++ b/modules/mono/mono_gd/gd_mono_assembly.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -62,6 +62,13 @@ void GDMonoAssembly::fill_search_dirs(Vector<String> &r_search_dirs, const Strin r_search_dirs.push_back(framework_dir.plus_file("Facades")); } +#if !defined(TOOLS_ENABLED) + String data_game_assemblies_dir = GodotSharpDirs::get_data_game_assemblies_dir(); + if (!data_game_assemblies_dir.empty()) { + r_search_dirs.push_back(data_game_assemblies_dir); + } +#endif + if (p_custom_config.length()) { r_search_dirs.push_back(GodotSharpDirs::get_res_temp_assemblies_base_dir().plus_file(p_custom_config)); } else { @@ -147,10 +154,6 @@ MonoAssembly *GDMonoAssembly::_preload_hook(MonoAssemblyName *aname, char **, vo (void)user_data; // UNUSED - if (search_dirs.empty()) { - fill_search_dirs(search_dirs); - } - { // If we find the assembly here, we load it with 'mono_assembly_load_from_full', // which in turn invokes load hooks before returning the MonoAssembly to us. @@ -228,6 +231,33 @@ GDMonoAssembly *GDMonoAssembly::_load_assembly_search(const String &p_name, cons return NULL; } +String GDMonoAssembly::find_assembly(const String &p_name) { + + String path; + + bool has_extension = p_name.ends_with(".dll") || p_name.ends_with(".exe"); + + for (int i = 0; i < search_dirs.size(); i++) { + const String &search_dir = search_dirs[i]; + + if (has_extension) { + path = search_dir.plus_file(p_name); + if (FileAccess::exists(path)) + return path; + } else { + path = search_dir.plus_file(p_name + ".dll"); + if (FileAccess::exists(path)) + return path; + + path = search_dir.plus_file(p_name + ".exe"); + if (FileAccess::exists(path)) + return path; + } + } + + return String(); +} + GDMonoAssembly *GDMonoAssembly::_load_assembly_from(const String &p_name, const String &p_path, bool p_refonly) { GDMonoAssembly *assembly = memnew(GDMonoAssembly(p_name, p_path)); @@ -264,6 +294,8 @@ void GDMonoAssembly::_wrap_mono_assembly(MonoAssembly *assembly) { void GDMonoAssembly::initialize() { + fill_search_dirs(search_dirs); + mono_install_assembly_search_hook(&assembly_search_hook, NULL); mono_install_assembly_refonly_search_hook(&assembly_refonly_search_hook, NULL); mono_install_assembly_preload_hook(&assembly_preload_hook, NULL); diff --git a/modules/mono/mono_gd/gd_mono_assembly.h b/modules/mono/mono_gd/gd_mono_assembly.h index 39749dfc1d..4740e10339 100644 --- a/modules/mono/mono_gd/gd_mono_assembly.h +++ b/modules/mono/mono_gd/gd_mono_assembly.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -122,6 +122,8 @@ public: GDMonoClass *get_object_derived_class(const StringName &p_class); + static String find_assembly(const String &p_name); + static void fill_search_dirs(Vector<String> &r_search_dirs, const String &p_custom_config = String(), const String &p_custom_bcl_dir = String()); static GDMonoAssembly *load_from(const String &p_name, const String &p_path, bool p_refonly); diff --git a/modules/mono/mono_gd/gd_mono_cache.cpp b/modules/mono/mono_gd/gd_mono_cache.cpp index caa1ca9203..f1f6524cd2 100644 --- a/modules/mono/mono_gd/gd_mono_cache.cpp +++ b/modules/mono/mono_gd/gd_mono_cache.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_cache.h b/modules/mono/mono_gd/gd_mono_cache.h index b21f92cdd8..1dc6b70479 100644 --- a/modules/mono/mono_gd/gd_mono_cache.h +++ b/modules/mono/mono_gd/gd_mono_cache.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_class.cpp b/modules/mono/mono_gd/gd_mono_class.cpp index fb9b6be3d4..2132fd36f7 100644 --- a/modules/mono/mono_gd/gd_mono_class.cpp +++ b/modules/mono/mono_gd/gd_mono_class.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_class.h b/modules/mono/mono_gd/gd_mono_class.h index 562c337822..0c9a8cdafe 100644 --- a/modules/mono/mono_gd/gd_mono_class.h +++ b/modules/mono/mono_gd/gd_mono_class.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp index d84359b1ab..3e0f9a3f15 100644 --- a/modules/mono/mono_gd/gd_mono_field.cpp +++ b/modules/mono/mono_gd/gd_mono_field.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_field.h b/modules/mono/mono_gd/gd_mono_field.h index a7727ddf34..76ee0963c4 100644 --- a/modules/mono/mono_gd/gd_mono_field.h +++ b/modules/mono/mono_gd/gd_mono_field.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_header.h b/modules/mono/mono_gd/gd_mono_header.h index 173e1613bf..0f4f888546 100644 --- a/modules/mono/mono_gd/gd_mono_header.h +++ b/modules/mono/mono_gd/gd_mono_header.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_internals.cpp b/modules/mono/mono_gd/gd_mono_internals.cpp index 3324ecb3a8..8669182c4e 100644 --- a/modules/mono/mono_gd/gd_mono_internals.cpp +++ b/modules/mono/mono_gd/gd_mono_internals.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_internals.h b/modules/mono/mono_gd/gd_mono_internals.h index 0d82723913..038d17f782 100644 --- a/modules/mono/mono_gd/gd_mono_internals.h +++ b/modules/mono/mono_gd/gd_mono_internals.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_log.cpp b/modules/mono/mono_gd/gd_mono_log.cpp index 261b800619..ad68a4d90e 100644 --- a/modules/mono/mono_gd/gd_mono_log.cpp +++ b/modules/mono/mono_gd/gd_mono_log.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_log.h b/modules/mono/mono_gd/gd_mono_log.h index 4cd5a662fb..ecf4c78b1a 100644 --- a/modules/mono/mono_gd/gd_mono_log.h +++ b/modules/mono/mono_gd/gd_mono_log.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp index 3827960e6b..b81c20348d 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.cpp +++ b/modules/mono/mono_gd/gd_mono_marshal.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; @@ -698,15 +700,11 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty p_type.type_class->get_name() + "' Encoding: " + itos(p_type.type_encoding) + "."); } -Variant mono_object_to_variant(MonoObject *p_obj) { - if (!p_obj) - return Variant(); +Variant mono_object_to_variant_impl(MonoObject *p_obj, const ManagedType &p_type, bool p_fail_with_err = true) { - ManagedType type = ManagedType::from_class(mono_object_get_class(p_obj)); - - ERR_FAIL_COND_V(!type.type_class, Variant()); + ERR_FAIL_COND_V(!p_type.type_class, Variant()); - switch (type.type_encoding) { + switch (p_type.type_encoding) { case MONO_TYPE_BOOLEAN: return (bool)unbox<MonoBoolean>(p_obj); @@ -743,7 +741,7 @@ Variant mono_object_to_variant(MonoObject *p_obj) { } break; case MONO_TYPE_VALUETYPE: { - GDMonoClass *vtclass = type.type_class; + GDMonoClass *vtclass = p_type.type_class; if (vtclass == CACHED_CLASS(Vector2)) return MARSHALLED_IN(Vector2, (GDMonoMarshal::M_Vector2 *)mono_object_unbox(p_obj)); @@ -781,7 +779,7 @@ Variant mono_object_to_variant(MonoObject *p_obj) { case MONO_TYPE_ARRAY: case MONO_TYPE_SZARRAY: { - MonoArrayType *array_type = mono_type_get_array_type(type.type_class->get_mono_type()); + MonoArrayType *array_type = mono_type_get_array_type(p_type.type_class->get_mono_type()); if (array_type->eklass == CACHED_CLASS_RAW(MonoObject)) return mono_array_to_Array((MonoArray *)p_obj); @@ -807,11 +805,15 @@ Variant mono_object_to_variant(MonoObject *p_obj) { if (array_type->eklass == CACHED_CLASS_RAW(Color)) return mono_array_to_PoolColorArray((MonoArray *)p_obj); - ERR_FAIL_V_MSG(Variant(), "Attempted to convert a managed array of unmarshallable element type to Variant."); + if (p_fail_with_err) { + ERR_FAIL_V_MSG(Variant(), "Attempted to convert a managed array of unmarshallable element type to Variant."); + } else { + return Variant(); + } } break; case MONO_TYPE_CLASS: { - GDMonoClass *type_class = type.type_class; + GDMonoClass *type_class = p_type.type_class; // GodotObject if (CACHED_CLASS(GodotObject)->is_assignable_from(type_class)) { @@ -869,18 +871,18 @@ Variant mono_object_to_variant(MonoObject *p_obj) { } break; case MONO_TYPE_GENERICINST: { - MonoReflectionType *reftype = mono_type_get_object(mono_domain_get(), type.type_class->get_mono_type()); + MonoReflectionType *reftype = mono_type_get_object(mono_domain_get(), p_type.type_class->get_mono_type()); if (GDMonoUtils::Marshal::type_is_generic_dictionary(reftype)) { MonoException *exc = NULL; - MonoObject *ret = type.type_class->get_method("GetPtr")->invoke(p_obj, &exc); + MonoObject *ret = p_type.type_class->get_method("GetPtr")->invoke(p_obj, &exc); UNHANDLED_EXCEPTION(exc); return *unbox<Dictionary *>(ret); } if (GDMonoUtils::Marshal::type_is_generic_array(reftype)) { MonoException *exc = NULL; - MonoObject *ret = type.type_class->get_method("GetPtr")->invoke(p_obj, &exc); + MonoObject *ret = p_type.type_class->get_method("GetPtr")->invoke(p_obj, &exc); UNHANDLED_EXCEPTION(exc); return *unbox<Array *>(ret); } @@ -891,7 +893,7 @@ Variant mono_object_to_variant(MonoObject *p_obj) { return GDMonoUtils::Marshal::generic_idictionary_to_dictionary(p_obj); } - if (type.type_class->implements_interface(CACHED_CLASS(System_Collections_IDictionary))) { + if (p_type.type_class->implements_interface(CACHED_CLASS(System_Collections_IDictionary))) { return GDMonoUtils::Marshal::idictionary_to_dictionary(p_obj); } @@ -899,14 +901,62 @@ Variant mono_object_to_variant(MonoObject *p_obj) { return GDMonoUtils::Marshal::enumerable_to_array(p_obj); } - if (type.type_class->implements_interface(CACHED_CLASS(System_Collections_IEnumerable))) { + if (p_type.type_class->implements_interface(CACHED_CLASS(System_Collections_IEnumerable))) { return GDMonoUtils::Marshal::enumerable_to_array(p_obj); } } break; } - ERR_FAIL_V_MSG(Variant(), "Attempted to convert an unmarshallable managed type to Variant. Name: '" + - type.type_class->get_name() + "' Encoding: " + itos(type.type_encoding) + "."); + if (p_fail_with_err) { + ERR_FAIL_V_MSG(Variant(), "Attempted to convert an unmarshallable managed type to Variant. Name: '" + + p_type.type_class->get_name() + "' Encoding: " + itos(p_type.type_encoding) + "."); + } else { + return Variant(); + } +} + +Variant mono_object_to_variant(MonoObject *p_obj) { + if (!p_obj) + return Variant(); + + ManagedType type = ManagedType::from_class(mono_object_get_class(p_obj)); + + return mono_object_to_variant_impl(p_obj, type); +} + +Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) { + if (!p_obj) + return Variant(); + + return mono_object_to_variant_impl(p_obj, p_type); +} + +Variant mono_object_to_variant_no_err(MonoObject *p_obj, const ManagedType &p_type) { + if (!p_obj) + return Variant(); + + return mono_object_to_variant_impl(p_obj, p_type, /* fail_with_err: */ false); +} + +String mono_object_to_variant_string(MonoObject *p_obj, MonoException **r_exc) { + ManagedType type = ManagedType::from_class(mono_object_get_class(p_obj)); + Variant var = GDMonoMarshal::mono_object_to_variant_no_err(p_obj, type); + + if (var.get_type() == Variant::NIL && p_obj != NULL) { + // Cannot convert MonoObject* to Variant; fallback to 'ToString()'. + MonoException *exc = NULL; + MonoString *mono_str = GDMonoUtils::object_to_string(p_obj, &exc); + + if (exc) { + if (r_exc) + *r_exc = exc; + return String(); + } + + return GDMonoMarshal::mono_string_to_godot(mono_str); + } else { + return var.operator String(); + } } MonoArray *Array_to_mono_array(const Array &p_array) { @@ -935,6 +985,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/mono_gd/gd_mono_marshal.h b/modules/mono/mono_gd/gd_mono_marshal.h index 53eae45320..e662e7814e 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.h +++ b/modules/mono/mono_gd/gd_mono_marshal.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -115,6 +115,12 @@ _FORCE_INLINE_ MonoObject *variant_to_mono_object(const Variant &p_var, const Ma } Variant mono_object_to_variant(MonoObject *p_obj); +Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type); +Variant mono_object_to_variant_no_err(MonoObject *p_obj, const ManagedType &p_type); + +/// Tries to convert the MonoObject* to Variant and then convert the Variant to String. +/// If the MonoObject* cannot be converted to Variant, then 'ToString()' is called instead. +String mono_object_to_variant_string(MonoObject *p_obj, MonoException **r_exc); // Array diff --git a/modules/mono/mono_gd/gd_mono_method.cpp b/modules/mono/mono_gd/gd_mono_method.cpp index 080b3a676a..971c5ac737 100644 --- a/modules/mono/mono_gd/gd_mono_method.cpp +++ b/modules/mono/mono_gd/gd_mono_method.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_method.h b/modules/mono/mono_gd/gd_mono_method.h index abbae92e29..b47e42dec2 100644 --- a/modules/mono/mono_gd/gd_mono_method.h +++ b/modules/mono/mono_gd/gd_mono_method.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_method_thunk.h b/modules/mono/mono_gd/gd_mono_method_thunk.h index f8cc736ec3..d8c9a5eb02 100644 --- a/modules/mono/mono_gd/gd_mono_method_thunk.h +++ b/modules/mono/mono_gd/gd_mono_method_thunk.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_property.cpp b/modules/mono/mono_gd/gd_mono_property.cpp index 277fe10087..3b5ce58d80 100644 --- a/modules/mono/mono_gd/gd_mono_property.cpp +++ b/modules/mono/mono_gd/gd_mono_property.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_property.h b/modules/mono/mono_gd/gd_mono_property.h index d6efa60412..692037f76a 100644 --- a/modules/mono/mono_gd/gd_mono_property.h +++ b/modules/mono/mono_gd/gd_mono_property.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp index 8d7aaa97f2..3c8aa0c727 100644 --- a/modules/mono/mono_gd/gd_mono_utils.cpp +++ b/modules/mono/mono_gd/gd_mono_utils.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/gd_mono_utils.h b/modules/mono/mono_gd/gd_mono_utils.h index 848df843fe..d9eb912cd7 100644 --- a/modules/mono/mono_gd/gd_mono_utils.h +++ b/modules/mono/mono_gd/gd_mono_utils.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/i_mono_class_member.h b/modules/mono/mono_gd/i_mono_class_member.h index f4de4e3230..2e8e01c80e 100644 --- a/modules/mono/mono_gd/i_mono_class_member.h +++ b/modules/mono/mono_gd/i_mono_class_member.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/managed_type.cpp b/modules/mono/mono_gd/managed_type.cpp index 9f736b71cd..3e971efece 100644 --- a/modules/mono/mono_gd/managed_type.cpp +++ b/modules/mono/mono_gd/managed_type.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/mono_gd/managed_type.h b/modules/mono/mono_gd/managed_type.h index a537e56aea..11b832d0cc 100644 --- a/modules/mono/mono_gd/managed_type.h +++ b/modules/mono/mono_gd/managed_type.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/register_types.cpp b/modules/mono/register_types.cpp index 3607b6f8b3..4823ba3679 100644 --- a/modules/mono/register_types.cpp +++ b/modules/mono/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/register_types.h b/modules/mono/register_types.h index 0601e9a382..7fd0d24eb0 100644 --- a/modules/mono/register_types.h +++ b/modules/mono/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/signal_awaiter_utils.cpp b/modules/mono/signal_awaiter_utils.cpp index ee16327856..d3226762ea 100644 --- a/modules/mono/signal_awaiter_utils.cpp +++ b/modules/mono/signal_awaiter_utils.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/signal_awaiter_utils.h b/modules/mono/signal_awaiter_utils.h index 4fb3cdb56d..a9956ad5ba 100644 --- a/modules/mono/signal_awaiter_utils.h +++ b/modules/mono/signal_awaiter_utils.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/macros.h b/modules/mono/utils/macros.h index e44f254e1c..754000dc14 100644 --- a/modules/mono/utils/macros.h +++ b/modules/mono/utils/macros.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/mono_reg_utils.cpp b/modules/mono/utils/mono_reg_utils.cpp index 98aeadc8c8..c1cd5f1db4 100644 --- a/modules/mono/utils/mono_reg_utils.cpp +++ b/modules/mono/utils/mono_reg_utils.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/mono_reg_utils.h b/modules/mono/utils/mono_reg_utils.h index 25446a4992..f844a7233a 100644 --- a/modules/mono/utils/mono_reg_utils.h +++ b/modules/mono/utils/mono_reg_utils.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/mutex_utils.h b/modules/mono/utils/mutex_utils.h index b8be033cba..bafd875395 100644 --- a/modules/mono/utils/mutex_utils.h +++ b/modules/mono/utils/mutex_utils.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/osx_utils.cpp b/modules/mono/utils/osx_utils.cpp index f1362be249..432b306414 100644 --- a/modules/mono/utils/osx_utils.cpp +++ b/modules/mono/utils/osx_utils.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/osx_utils.h b/modules/mono/utils/osx_utils.h index cc72233058..55002702f8 100644 --- a/modules/mono/utils/osx_utils.h +++ b/modules/mono/utils/osx_utils.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/path_utils.cpp b/modules/mono/utils/path_utils.cpp index 20863b1afe..545da6c79e 100644 --- a/modules/mono/utils/path_utils.cpp +++ b/modules/mono/utils/path_utils.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..9965f58b0a 100644 --- a/modules/mono/utils/path_utils.h +++ b/modules/mono/utils/path_utils.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/mono/utils/string_utils.cpp b/modules/mono/utils/string_utils.cpp index 88366a6a03..911ac5c4a3 100644 --- a/modules/mono/utils/string_utils.cpp +++ b/modules/mono/utils/string_utils.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/string_utils.h b/modules/mono/utils/string_utils.h index e7f02955bd..0318fec592 100644 --- a/modules/mono/utils/string_utils.h +++ b/modules/mono/utils/string_utils.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/thread_local.cpp b/modules/mono/utils/thread_local.cpp index 13179bf408..4f10e3fb85 100644 --- a/modules/mono/utils/thread_local.cpp +++ b/modules/mono/utils/thread_local.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/mono/utils/thread_local.h b/modules/mono/utils/thread_local.h index e52b6e73ef..b1cc2e37ea 100644 --- a/modules/mono/utils/thread_local.h +++ b/modules/mono/utils/thread_local.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/ogg/register_types.cpp b/modules/ogg/register_types.cpp index bea88bd654..73c691397c 100644 --- a/modules/ogg/register_types.cpp +++ b/modules/ogg/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/ogg/register_types.h b/modules/ogg/register_types.h index 84e309455e..09095c9b62 100644 --- a/modules/ogg/register_types.h +++ b/modules/ogg/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opensimplex/noise_texture.cpp b/modules/opensimplex/noise_texture.cpp index 9240183265..aa1c822813 100644 --- a/modules/opensimplex/noise_texture.cpp +++ b/modules/opensimplex/noise_texture.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -53,6 +53,10 @@ NoiseTexture::NoiseTexture() { NoiseTexture::~NoiseTexture() { VS::get_singleton()->free(texture); + if (noise_thread) { + Thread::wait_to_finish(noise_thread); + memdelete(noise_thread); + } } void NoiseTexture::_bind_methods() { @@ -73,6 +77,7 @@ void NoiseTexture::_bind_methods() { ClassDB::bind_method(D_METHOD("get_bump_strength"), &NoiseTexture::get_bump_strength); ClassDB::bind_method(D_METHOD("_update_texture"), &NoiseTexture::_update_texture); + ClassDB::bind_method(D_METHOD("_queue_update"), &NoiseTexture::_queue_update); ClassDB::bind_method(D_METHOD("_generate_texture"), &NoiseTexture::_generate_texture); ClassDB::bind_method(D_METHOD("_thread_done", "image"), &NoiseTexture::_thread_done); @@ -130,8 +135,6 @@ void NoiseTexture::_queue_update() { Ref<Image> NoiseTexture::_generate_texture() { - update_queued = false; - if (noise.is_null()) return Ref<Image>(); Ref<Image> image; @@ -171,17 +174,18 @@ void NoiseTexture::_update_texture() { Ref<Image> image = _generate_texture(); _set_texture_data(image); } + update_queued = false; } void NoiseTexture::set_noise(Ref<OpenSimplexNoise> p_noise) { if (p_noise == noise) return; if (noise.is_valid()) { - noise->disconnect(CoreStringNames::get_singleton()->changed, this, "_update_texture"); + noise->disconnect(CoreStringNames::get_singleton()->changed, this, "_queue_update"); } noise = p_noise; if (noise.is_valid()) { - noise->connect(CoreStringNames::get_singleton()->changed, this, "_update_texture"); + noise->connect(CoreStringNames::get_singleton()->changed, this, "_queue_update"); } _queue_update(); } diff --git a/modules/opensimplex/noise_texture.h b/modules/opensimplex/noise_texture.h index 5e4a02fcee..285fd1eba9 100644 --- a/modules/opensimplex/noise_texture.h +++ b/modules/opensimplex/noise_texture.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opensimplex/open_simplex_noise.cpp b/modules/opensimplex/open_simplex_noise.cpp index 3a3a698e5c..c99588aefa 100644 --- a/modules/opensimplex/open_simplex_noise.cpp +++ b/modules/opensimplex/open_simplex_noise.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opensimplex/open_simplex_noise.h b/modules/opensimplex/open_simplex_noise.h index c31cbf68c3..89b12253b9 100644 --- a/modules/opensimplex/open_simplex_noise.h +++ b/modules/opensimplex/open_simplex_noise.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opensimplex/register_types.cpp b/modules/opensimplex/register_types.cpp index e110752109..6fae1fe415 100644 --- a/modules/opensimplex/register_types.cpp +++ b/modules/opensimplex/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opensimplex/register_types.h b/modules/opensimplex/register_types.h index 733a4812e0..56e128f09e 100644 --- a/modules/opensimplex/register_types.h +++ b/modules/opensimplex/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opus/audio_stream_opus.cpp b/modules/opus/audio_stream_opus.cpp index 43b0aecbf1..67a07628d9 100644 --- a/modules/opus/audio_stream_opus.cpp +++ b/modules/opus/audio_stream_opus.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opus/audio_stream_opus.h b/modules/opus/audio_stream_opus.h index 04c2e9d9f0..5c0a02a9d0 100644 --- a/modules/opus/audio_stream_opus.h +++ b/modules/opus/audio_stream_opus.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opus/register_types.cpp b/modules/opus/register_types.cpp index be266c8591..dff309b49c 100644 --- a/modules/opus/register_types.cpp +++ b/modules/opus/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opus/register_types.h b/modules/opus/register_types.h index 611bbf4fd0..445be4e166 100644 --- a/modules/opus/register_types.h +++ b/modules/opus/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opus/stub/register_types.cpp b/modules/opus/stub/register_types.cpp index e1f6ce7a27..a4329e142c 100644 --- a/modules/opus/stub/register_types.cpp +++ b/modules/opus/stub/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/opus/stub/register_types.h b/modules/opus/stub/register_types.h index 611bbf4fd0..445be4e166 100644 --- a/modules/opus/stub/register_types.h +++ b/modules/opus/stub/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/pvr/register_types.cpp b/modules/pvr/register_types.cpp index c87e631a11..5f900a0256 100644 --- a/modules/pvr/register_types.cpp +++ b/modules/pvr/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/pvr/register_types.h b/modules/pvr/register_types.h index cafa11791e..06c54f50b1 100644 --- a/modules/pvr/register_types.h +++ b/modules/pvr/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/pvr/texture_loader_pvr.cpp b/modules/pvr/texture_loader_pvr.cpp index cf6b396180..65c21d5af8 100644 --- a/modules/pvr/texture_loader_pvr.cpp +++ b/modules/pvr/texture_loader_pvr.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/pvr/texture_loader_pvr.h b/modules/pvr/texture_loader_pvr.h index 606268e447..e384ed2b4c 100644 --- a/modules/pvr/texture_loader_pvr.h +++ b/modules/pvr/texture_loader_pvr.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/recast/navigation_mesh_editor_plugin.cpp b/modules/recast/navigation_mesh_editor_plugin.cpp index 9f30806925..6e68dba8ee 100644 --- a/modules/recast/navigation_mesh_editor_plugin.cpp +++ b/modules/recast/navigation_mesh_editor_plugin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/recast/navigation_mesh_editor_plugin.h b/modules/recast/navigation_mesh_editor_plugin.h index 23d35efc15..09c8673b43 100644 --- a/modules/recast/navigation_mesh_editor_plugin.h +++ b/modules/recast/navigation_mesh_editor_plugin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/recast/navigation_mesh_generator.cpp b/modules/recast/navigation_mesh_generator.cpp index 320591cf7c..c67136b814 100644 --- a/modules/recast/navigation_mesh_generator.cpp +++ b/modules/recast/navigation_mesh_generator.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/recast/navigation_mesh_generator.h b/modules/recast/navigation_mesh_generator.h index f19622a4a9..8c7ca8b62c 100644 --- a/modules/recast/navigation_mesh_generator.h +++ b/modules/recast/navigation_mesh_generator.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/recast/register_types.cpp b/modules/recast/register_types.cpp index 44129fbb61..a1286c58c8 100644 --- a/modules/recast/register_types.cpp +++ b/modules/recast/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/recast/register_types.h b/modules/recast/register_types.h index 0b64143e97..d16ba37f5e 100644 --- a/modules/recast/register_types.h +++ b/modules/recast/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/regex/regex.cpp b/modules/regex/regex.cpp index 12091caa5f..53d1a1dd65 100644 --- a/modules/regex/regex.cpp +++ b/modules/regex/regex.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/regex/regex.h b/modules/regex/regex.h index b0171f74c0..a342c17c78 100644 --- a/modules/regex/regex.h +++ b/modules/regex/regex.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/regex/register_types.cpp b/modules/regex/register_types.cpp index 63687fc0a7..77b19fa8f0 100644 --- a/modules/regex/register_types.cpp +++ b/modules/regex/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/regex/register_types.h b/modules/regex/register_types.h index ed32322c01..99a6bbeb2c 100644 --- a/modules/regex/register_types.h +++ b/modules/regex/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/register_module_types.h b/modules/register_module_types.h index 559d66c927..a8eb68b929 100644 --- a/modules/register_module_types.h +++ b/modules/register_module_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/squish/image_compress_squish.cpp b/modules/squish/image_compress_squish.cpp index 9b0a55eae3..ef4ea93e57 100644 --- a/modules/squish/image_compress_squish.cpp +++ b/modules/squish/image_compress_squish.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/squish/image_compress_squish.h b/modules/squish/image_compress_squish.h index 3047b73b91..2666815e47 100644 --- a/modules/squish/image_compress_squish.h +++ b/modules/squish/image_compress_squish.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/squish/register_types.cpp b/modules/squish/register_types.cpp index be91fba4ef..1cd551defb 100644 --- a/modules/squish/register_types.cpp +++ b/modules/squish/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/squish/register_types.h b/modules/squish/register_types.h index 5933146329..0845e2b500 100644 --- a/modules/squish/register_types.h +++ b/modules/squish/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp index 10097316ec..b80b126bde 100644 --- a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp +++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.h b/modules/stb_vorbis/audio_stream_ogg_vorbis.h index c8c179554a..cfa5e97faa 100644 --- a/modules/stb_vorbis/audio_stream_ogg_vorbis.h +++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/stb_vorbis/register_types.cpp b/modules/stb_vorbis/register_types.cpp index ce64626e4b..ac2612bd6a 100644 --- a/modules/stb_vorbis/register_types.cpp +++ b/modules/stb_vorbis/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/stb_vorbis/register_types.h b/modules/stb_vorbis/register_types.h index 736c15e3d8..f6147abd01 100644 --- a/modules/stb_vorbis/register_types.h +++ b/modules/stb_vorbis/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp index 977ff064bc..06399f4005 100644 --- a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp +++ b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/stb_vorbis/resource_importer_ogg_vorbis.h b/modules/stb_vorbis/resource_importer_ogg_vorbis.h index 8e4fbde916..43541bcf3c 100644 --- a/modules/stb_vorbis/resource_importer_ogg_vorbis.h +++ b/modules/stb_vorbis/resource_importer_ogg_vorbis.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/svg/image_loader_svg.cpp b/modules/svg/image_loader_svg.cpp index a2ef88d130..57097aaa06 100644 --- a/modules/svg/image_loader_svg.cpp +++ b/modules/svg/image_loader_svg.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/svg/image_loader_svg.h b/modules/svg/image_loader_svg.h index 2116079aef..9e9366e91b 100644 --- a/modules/svg/image_loader_svg.h +++ b/modules/svg/image_loader_svg.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/svg/register_types.cpp b/modules/svg/register_types.cpp index 5707c29f60..b0782dae88 100644 --- a/modules/svg/register_types.cpp +++ b/modules/svg/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/svg/register_types.h b/modules/svg/register_types.h index 13eb12d2d1..aa50540552 100644 --- a/modules/svg/register_types.h +++ b/modules/svg/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/tga/image_loader_tga.cpp b/modules/tga/image_loader_tga.cpp index 6ee408d472..480016eb97 100644 --- a/modules/tga/image_loader_tga.cpp +++ b/modules/tga/image_loader_tga.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/tga/image_loader_tga.h b/modules/tga/image_loader_tga.h index d466ac6e38..6b3d33e7ef 100644 --- a/modules/tga/image_loader_tga.h +++ b/modules/tga/image_loader_tga.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/tga/register_types.cpp b/modules/tga/register_types.cpp index d21c0a51d0..359f4d785e 100644 --- a/modules/tga/register_types.cpp +++ b/modules/tga/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/tga/register_types.h b/modules/tga/register_types.h index 445a7f3e31..beef05a590 100644 --- a/modules/tga/register_types.h +++ b/modules/tga/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/theora/register_types.cpp b/modules/theora/register_types.cpp index 4b50c3f146..f58e27c855 100644 --- a/modules/theora/register_types.cpp +++ b/modules/theora/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/theora/register_types.h b/modules/theora/register_types.h index e1fd39f679..66eb49aed1 100644 --- a/modules/theora/register_types.h +++ b/modules/theora/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/theora/video_stream_theora.cpp b/modules/theora/video_stream_theora.cpp index 12f07aa773..9ba77d3c77 100644 --- a/modules/theora/video_stream_theora.cpp +++ b/modules/theora/video_stream_theora.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/theora/video_stream_theora.h b/modules/theora/video_stream_theora.h index b241722cd1..0f201ffa9d 100644 --- a/modules/theora/video_stream_theora.h +++ b/modules/theora/video_stream_theora.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/tinyexr/image_loader_tinyexr.cpp b/modules/tinyexr/image_loader_tinyexr.cpp index 74a584821a..bca3b749e3 100644 --- a/modules/tinyexr/image_loader_tinyexr.cpp +++ b/modules/tinyexr/image_loader_tinyexr.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/tinyexr/image_loader_tinyexr.h b/modules/tinyexr/image_loader_tinyexr.h index ee8479b1b4..af95989254 100644 --- a/modules/tinyexr/image_loader_tinyexr.h +++ b/modules/tinyexr/image_loader_tinyexr.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/tinyexr/image_saver_tinyexr.cpp b/modules/tinyexr/image_saver_tinyexr.cpp index e1d42d3217..17f920746f 100644 --- a/modules/tinyexr/image_saver_tinyexr.cpp +++ b/modules/tinyexr/image_saver_tinyexr.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -262,10 +262,6 @@ Error save_exr(const String &p_path, const Ref<Image> &p_img, bool p_grayscale) header.channels = channel_infos; header.pixel_types = pixel_types; header.requested_pixel_types = requested_pixel_types; - // TODO DEBUG REMOVE - for (int i = 0; i < 4; ++i) { - print_line(String("requested_pixel_types{0}: {1}").format(varray(i, requested_pixel_types[i]))); - } CharString utf8_filename = p_path.utf8(); const char *err; diff --git a/modules/tinyexr/image_saver_tinyexr.h b/modules/tinyexr/image_saver_tinyexr.h index 298bd1d21c..c7154bcfc7 100644 --- a/modules/tinyexr/image_saver_tinyexr.h +++ b/modules/tinyexr/image_saver_tinyexr.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/tinyexr/register_types.cpp b/modules/tinyexr/register_types.cpp index 233b3afa08..d8529fd893 100644 --- a/modules/tinyexr/register_types.cpp +++ b/modules/tinyexr/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/tinyexr/register_types.h b/modules/tinyexr/register_types.h index 4c830674f8..2028cd4a33 100644 --- a/modules/tinyexr/register_types.h +++ b/modules/tinyexr/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/upnp/register_types.cpp b/modules/upnp/register_types.cpp index fbf0ee8b97..270aa2d7e8 100644 --- a/modules/upnp/register_types.cpp +++ b/modules/upnp/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/upnp/register_types.h b/modules/upnp/register_types.h index 3079c26580..4d752e4a94 100644 --- a/modules/upnp/register_types.h +++ b/modules/upnp/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/upnp/upnp.cpp b/modules/upnp/upnp.cpp index 05b96d8a30..5ef7575b0c 100644 --- a/modules/upnp/upnp.cpp +++ b/modules/upnp/upnp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/upnp/upnp.h b/modules/upnp/upnp.h index 011b6d44b3..d052e155de 100644 --- a/modules/upnp/upnp.h +++ b/modules/upnp/upnp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/upnp/upnp_device.cpp b/modules/upnp/upnp_device.cpp index 4d67e3ddc8..6edfbc2d7d 100644 --- a/modules/upnp/upnp_device.cpp +++ b/modules/upnp/upnp_device.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/upnp/upnp_device.h b/modules/upnp/upnp_device.h index 09fce6af89..f25d3427fc 100644 --- a/modules/upnp/upnp_device.h +++ b/modules/upnp/upnp_device.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/vhacd/register_types.cpp b/modules/vhacd/register_types.cpp index 076a1738ab..26c6146bab 100644 --- a/modules/vhacd/register_types.cpp +++ b/modules/vhacd/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/vhacd/register_types.h b/modules/vhacd/register_types.h index cb948faf44..de56620813 100644 --- a/modules/vhacd/register_types.h +++ b/modules/vhacd/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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/register_types.cpp b/modules/visual_script/register_types.cpp index 49272345fe..63bd88ad81 100644 --- a/modules/visual_script/register_types.cpp +++ b/modules/visual_script/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/register_types.h b/modules/visual_script/register_types.h index 05b3164b3c..546c2fbff3 100644 --- a/modules/visual_script/register_types.h +++ b/modules/visual_script/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp index bb8612af6f..c591e3b5c2 100644 --- a/modules/visual_script/visual_script.cpp +++ b/modules/visual_script/visual_script.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h index a035f6d42d..9305226dc6 100644 --- a/modules/visual_script/visual_script.h +++ b/modules/visual_script/visual_script.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp index 3fdceacebb..2894f6367b 100644 --- a/modules/visual_script/visual_script_builtin_funcs.cpp +++ b/modules/visual_script/visual_script_builtin_funcs.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_builtin_funcs.h b/modules/visual_script/visual_script_builtin_funcs.h index 998a6cbc6a..f5021cb545 100644 --- a/modules/visual_script/visual_script_builtin_funcs.h +++ b/modules/visual_script/visual_script_builtin_funcs.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp index b2791cfc8b..4bfd4f48ce 100644 --- a/modules/visual_script/visual_script_editor.cpp +++ b/modules/visual_script/visual_script_editor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_editor.h b/modules/visual_script/visual_script_editor.h index fbf021e7b6..7f3bf79d50 100644 --- a/modules/visual_script/visual_script_editor.h +++ b/modules/visual_script/visual_script_editor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_expression.cpp b/modules/visual_script/visual_script_expression.cpp index 4b74c088e0..4feef53c2e 100644 --- a/modules/visual_script/visual_script_expression.cpp +++ b/modules/visual_script/visual_script_expression.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_expression.h b/modules/visual_script/visual_script_expression.h index 3a045d2cf7..d131713ef0 100644 --- a/modules/visual_script/visual_script_expression.h +++ b/modules/visual_script/visual_script_expression.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_flow_control.cpp b/modules/visual_script/visual_script_flow_control.cpp index d927b75f89..213dc897af 100644 --- a/modules/visual_script/visual_script_flow_control.cpp +++ b/modules/visual_script/visual_script_flow_control.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_flow_control.h b/modules/visual_script/visual_script_flow_control.h index d3c7aa68e3..8597d051db 100644 --- a/modules/visual_script/visual_script_flow_control.h +++ b/modules/visual_script/visual_script_flow_control.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp index 4e90a08009..63c36ae431 100644 --- a/modules/visual_script/visual_script_func_nodes.cpp +++ b/modules/visual_script/visual_script_func_nodes.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_func_nodes.h b/modules/visual_script/visual_script_func_nodes.h index 11eb96293b..2dba0ae3c1 100644 --- a/modules/visual_script/visual_script_func_nodes.h +++ b/modules/visual_script/visual_script_func_nodes.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp index 857d640b43..0a9f228b0a 100644 --- a/modules/visual_script/visual_script_nodes.cpp +++ b/modules/visual_script/visual_script_nodes.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h index c7354cb0d8..fe44af277f 100644 --- a/modules/visual_script/visual_script_nodes.h +++ b/modules/visual_script/visual_script_nodes.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_property_selector.cpp b/modules/visual_script/visual_script_property_selector.cpp index 62b818150c..99d7ffd05f 100644 --- a/modules/visual_script/visual_script_property_selector.cpp +++ b/modules/visual_script/visual_script_property_selector.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_property_selector.h b/modules/visual_script/visual_script_property_selector.h index 3a7c8de6a2..a1eb0b842c 100644 --- a/modules/visual_script/visual_script_property_selector.h +++ b/modules/visual_script/visual_script_property_selector.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_yield_nodes.cpp b/modules/visual_script/visual_script_yield_nodes.cpp index ebd0f0b3cb..877d5836d2 100644 --- a/modules/visual_script/visual_script_yield_nodes.cpp +++ b/modules/visual_script/visual_script_yield_nodes.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/visual_script/visual_script_yield_nodes.h b/modules/visual_script/visual_script_yield_nodes.h index 647f2b1e2e..4b976bd6c6 100644 --- a/modules/visual_script/visual_script_yield_nodes.h +++ b/modules/visual_script/visual_script_yield_nodes.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/vorbis/audio_stream_ogg_vorbis.cpp b/modules/vorbis/audio_stream_ogg_vorbis.cpp index c330af60a4..87067faf8e 100644 --- a/modules/vorbis/audio_stream_ogg_vorbis.cpp +++ b/modules/vorbis/audio_stream_ogg_vorbis.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/vorbis/audio_stream_ogg_vorbis.h b/modules/vorbis/audio_stream_ogg_vorbis.h index a37867d9f9..739765a12f 100644 --- a/modules/vorbis/audio_stream_ogg_vorbis.h +++ b/modules/vorbis/audio_stream_ogg_vorbis.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/vorbis/register_types.cpp b/modules/vorbis/register_types.cpp index bc6176a65f..de055551ad 100644 --- a/modules/vorbis/register_types.cpp +++ b/modules/vorbis/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/vorbis/register_types.h b/modules/vorbis/register_types.h index 0071a2d295..83d4904a87 100644 --- a/modules/vorbis/register_types.h +++ b/modules/vorbis/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/vorbis/stub/register_types.cpp b/modules/vorbis/stub/register_types.cpp index c38967c60e..8874b3887b 100644 --- a/modules/vorbis/stub/register_types.cpp +++ b/modules/vorbis/stub/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/vorbis/stub/register_types.h b/modules/vorbis/stub/register_types.h index 0071a2d295..83d4904a87 100644 --- a/modules/vorbis/stub/register_types.h +++ b/modules/vorbis/stub/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webm/register_types.cpp b/modules/webm/register_types.cpp index ad8e2cf310..5449dd458c 100644 --- a/modules/webm/register_types.cpp +++ b/modules/webm/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webm/register_types.h b/modules/webm/register_types.h index 10811badaf..962a0dab4e 100644 --- a/modules/webm/register_types.h +++ b/modules/webm/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webm/video_stream_webm.cpp b/modules/webm/video_stream_webm.cpp index 54b284f939..6e2527595b 100644 --- a/modules/webm/video_stream_webm.cpp +++ b/modules/webm/video_stream_webm.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webm/video_stream_webm.h b/modules/webm/video_stream_webm.h index 4f79d46cce..e679196cf2 100644 --- a/modules/webm/video_stream_webm.h +++ b/modules/webm/video_stream_webm.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webp/image_loader_webp.cpp b/modules/webp/image_loader_webp.cpp index d1bfa20842..7f4afa9a08 100644 --- a/modules/webp/image_loader_webp.cpp +++ b/modules/webp/image_loader_webp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webp/image_loader_webp.h b/modules/webp/image_loader_webp.h index 5a5c038017..9206ca2525 100644 --- a/modules/webp/image_loader_webp.h +++ b/modules/webp/image_loader_webp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webp/register_types.cpp b/modules/webp/register_types.cpp index 5055fa2034..12a0c05f44 100644 --- a/modules/webp/register_types.cpp +++ b/modules/webp/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webp/register_types.h b/modules/webp/register_types.h index bf76abf653..9591b91558 100644 --- a/modules/webp/register_types.h +++ b/modules/webp/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/register_types.cpp b/modules/webrtc/register_types.cpp index 6f97842064..5b296b1ac6 100644 --- a/modules/webrtc/register_types.cpp +++ b/modules/webrtc/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/register_types.h b/modules/webrtc/register_types.h index 4923547a95..e6b50506e5 100644 --- a/modules/webrtc/register_types.h +++ b/modules/webrtc/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_data_channel.cpp b/modules/webrtc/webrtc_data_channel.cpp index 7b3843410a..7566532982 100644 --- a/modules/webrtc/webrtc_data_channel.cpp +++ b/modules/webrtc/webrtc_data_channel.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_data_channel.h b/modules/webrtc/webrtc_data_channel.h index 7e2c08d9d7..e61f786ca1 100644 --- a/modules/webrtc/webrtc_data_channel.h +++ b/modules/webrtc/webrtc_data_channel.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_data_channel_gdnative.cpp b/modules/webrtc/webrtc_data_channel_gdnative.cpp index 6362634626..b0c4b473fc 100644 --- a/modules/webrtc/webrtc_data_channel_gdnative.cpp +++ b/modules/webrtc/webrtc_data_channel_gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_data_channel_gdnative.h b/modules/webrtc/webrtc_data_channel_gdnative.h index 3685f86353..be3ea13028 100644 --- a/modules/webrtc/webrtc_data_channel_gdnative.h +++ b/modules/webrtc/webrtc_data_channel_gdnative.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_data_channel_js.cpp b/modules/webrtc/webrtc_data_channel_js.cpp index 2edd212a50..37203a4ec9 100644 --- a/modules/webrtc/webrtc_data_channel_js.cpp +++ b/modules/webrtc/webrtc_data_channel_js.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_data_channel_js.h b/modules/webrtc/webrtc_data_channel_js.h index b87f8e9326..00b5963ea1 100644 --- a/modules/webrtc/webrtc_data_channel_js.h +++ b/modules/webrtc/webrtc_data_channel_js.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_multiplayer.cpp b/modules/webrtc/webrtc_multiplayer.cpp index a759b17b83..9df2420bbc 100644 --- a/modules/webrtc/webrtc_multiplayer.cpp +++ b/modules/webrtc/webrtc_multiplayer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_multiplayer.h b/modules/webrtc/webrtc_multiplayer.h index 82bbfd4f68..66a3cd0ff5 100644 --- a/modules/webrtc/webrtc_multiplayer.h +++ b/modules/webrtc/webrtc_multiplayer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_peer_connection.cpp b/modules/webrtc/webrtc_peer_connection.cpp index 69c7a51a40..90c62e2495 100644 --- a/modules/webrtc/webrtc_peer_connection.cpp +++ b/modules/webrtc/webrtc_peer_connection.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_peer_connection.h b/modules/webrtc/webrtc_peer_connection.h index 7be1390dab..7366c3d0e8 100644 --- a/modules/webrtc/webrtc_peer_connection.h +++ b/modules/webrtc/webrtc_peer_connection.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_peer_connection_gdnative.cpp b/modules/webrtc/webrtc_peer_connection_gdnative.cpp index 5e9dcb5366..411ad50275 100644 --- a/modules/webrtc/webrtc_peer_connection_gdnative.cpp +++ b/modules/webrtc/webrtc_peer_connection_gdnative.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_peer_connection_gdnative.h b/modules/webrtc/webrtc_peer_connection_gdnative.h index 0a281c3d89..8e59ad62ba 100644 --- a/modules/webrtc/webrtc_peer_connection_gdnative.h +++ b/modules/webrtc/webrtc_peer_connection_gdnative.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_peer_connection_js.cpp b/modules/webrtc/webrtc_peer_connection_js.cpp index 9758ab3644..a84dabab72 100644 --- a/modules/webrtc/webrtc_peer_connection_js.cpp +++ b/modules/webrtc/webrtc_peer_connection_js.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/webrtc/webrtc_peer_connection_js.h b/modules/webrtc/webrtc_peer_connection_js.h index 43c0e3d6ee..6540077e84 100644 --- a/modules/webrtc/webrtc_peer_connection_js.h +++ b/modules/webrtc/webrtc_peer_connection_js.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/emws_client.cpp b/modules/websocket/emws_client.cpp index 983db60d5e..7e68936fc3 100644 --- a/modules/websocket/emws_client.cpp +++ b/modules/websocket/emws_client.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/emws_client.h b/modules/websocket/emws_client.h index 67705891b2..9f1c220ed4 100644 --- a/modules/websocket/emws_client.h +++ b/modules/websocket/emws_client.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/emws_peer.cpp b/modules/websocket/emws_peer.cpp index 58d4c52688..d07360c525 100644 --- a/modules/websocket/emws_peer.cpp +++ b/modules/websocket/emws_peer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/emws_peer.h b/modules/websocket/emws_peer.h index 6ceb69a1b7..9fe7fb8edc 100644 --- a/modules/websocket/emws_peer.h +++ b/modules/websocket/emws_peer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/emws_server.cpp b/modules/websocket/emws_server.cpp index 9a6a30d613..23faa05365 100644 --- a/modules/websocket/emws_server.cpp +++ b/modules/websocket/emws_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/emws_server.h b/modules/websocket/emws_server.h index e8da8c26b4..869e59fe03 100644 --- a/modules/websocket/emws_server.h +++ b/modules/websocket/emws_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/packet_buffer.h b/modules/websocket/packet_buffer.h index 057fecfb56..ea3658c827 100644 --- a/modules/websocket/packet_buffer.h +++ b/modules/websocket/packet_buffer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/register_types.cpp b/modules/websocket/register_types.cpp index 1c808f0d5c..e389d75ffd 100644 --- a/modules/websocket/register_types.cpp +++ b/modules/websocket/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/register_types.h b/modules/websocket/register_types.h index 0bcae50d14..b254b9dae8 100644 --- a/modules/websocket/register_types.h +++ b/modules/websocket/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/websocket_client.cpp b/modules/websocket/websocket_client.cpp index 8bbd5aa37f..7ee4b990b5 100644 --- a/modules/websocket/websocket_client.cpp +++ b/modules/websocket/websocket_client.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/websocket_client.h b/modules/websocket/websocket_client.h index 08fd6798fe..4dc1224066 100644 --- a/modules/websocket/websocket_client.h +++ b/modules/websocket/websocket_client.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/websocket_macros.h b/modules/websocket/websocket_macros.h index 56f278187f..8aa01a70ed 100644 --- a/modules/websocket/websocket_macros.h +++ b/modules/websocket/websocket_macros.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/websocket_multiplayer_peer.cpp b/modules/websocket/websocket_multiplayer_peer.cpp index dd86c758bf..b639c635fd 100644 --- a/modules/websocket/websocket_multiplayer_peer.cpp +++ b/modules/websocket/websocket_multiplayer_peer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/websocket_multiplayer_peer.h b/modules/websocket/websocket_multiplayer_peer.h index e3ab0784ab..27cb6e4eb7 100644 --- a/modules/websocket/websocket_multiplayer_peer.h +++ b/modules/websocket/websocket_multiplayer_peer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/websocket_peer.cpp b/modules/websocket/websocket_peer.cpp index 15df1bf85a..474b11f012 100644 --- a/modules/websocket/websocket_peer.cpp +++ b/modules/websocket/websocket_peer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/websocket_peer.h b/modules/websocket/websocket_peer.h index 62c1f3e9a3..c4e1984aa0 100644 --- a/modules/websocket/websocket_peer.h +++ b/modules/websocket/websocket_peer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/websocket_server.cpp b/modules/websocket/websocket_server.cpp index c7414075ed..ded1850846 100644 --- a/modules/websocket/websocket_server.cpp +++ b/modules/websocket/websocket_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/websocket_server.h b/modules/websocket/websocket_server.h index 0b39f94473..bfdac11489 100644 --- a/modules/websocket/websocket_server.h +++ b/modules/websocket/websocket_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/wsl_client.cpp b/modules/websocket/wsl_client.cpp index ad70c9c0e1..88a306c7f5 100644 --- a/modules/websocket/wsl_client.cpp +++ b/modules/websocket/wsl_client.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/wsl_client.h b/modules/websocket/wsl_client.h index 870be94a87..2cecfd97ee 100644 --- a/modules/websocket/wsl_client.h +++ b/modules/websocket/wsl_client.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/wsl_peer.cpp b/modules/websocket/wsl_peer.cpp index 9d610109ed..2f7f84c893 100644 --- a/modules/websocket/wsl_peer.cpp +++ b/modules/websocket/wsl_peer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..2fbb7aeec3 100644 --- a/modules/websocket/wsl_peer.h +++ b/modules/websocket/wsl_peer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/modules/websocket/wsl_server.cpp b/modules/websocket/wsl_server.cpp index 2181775b99..c98c62cce9 100644 --- a/modules/websocket/wsl_server.cpp +++ b/modules/websocket/wsl_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/websocket/wsl_server.h b/modules/websocket/wsl_server.h index aae563355e..649d1adee6 100644 --- a/modules/websocket/wsl_server.h +++ b/modules/websocket/wsl_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/xatlas_unwrap/register_types.cpp b/modules/xatlas_unwrap/register_types.cpp index 2fc554fe7a..c69b566525 100644 --- a/modules/xatlas_unwrap/register_types.cpp +++ b/modules/xatlas_unwrap/register_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/xatlas_unwrap/register_types.h b/modules/xatlas_unwrap/register_types.h index 9b57fff63b..3f2181fa63 100644 --- a/modules/xatlas_unwrap/register_types.h +++ b/modules/xatlas_unwrap/register_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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/audio_driver_jandroid.cpp b/platform/android/audio_driver_jandroid.cpp index bcef5b0c85..5a8e3b94da 100644 --- a/platform/android/audio_driver_jandroid.cpp +++ b/platform/android/audio_driver_jandroid.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/audio_driver_jandroid.h b/platform/android/audio_driver_jandroid.h index f92ef06052..d3d1641c20 100644 --- a/platform/android/audio_driver_jandroid.h +++ b/platform/android/audio_driver_jandroid.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/audio_driver_opensl.cpp b/platform/android/audio_driver_opensl.cpp index 711088c158..9e294f3f14 100644 --- a/platform/android/audio_driver_opensl.cpp +++ b/platform/android/audio_driver_opensl.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/audio_driver_opensl.h b/platform/android/audio_driver_opensl.h index 2981073cec..57d9b30af6 100644 --- a/platform/android/audio_driver_opensl.h +++ b/platform/android/audio_driver_opensl.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/dir_access_jandroid.cpp b/platform/android/dir_access_jandroid.cpp index 8c464465ca..69178317f7 100644 --- a/platform/android/dir_access_jandroid.cpp +++ b/platform/android/dir_access_jandroid.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/dir_access_jandroid.h b/platform/android/dir_access_jandroid.h index cdea93ff4c..caeb4b58b9 100644 --- a/platform/android/dir_access_jandroid.h +++ b/platform/android/dir_access_jandroid.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 6d021ad33a..d7a72779e6 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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" @@ -220,6 +221,7 @@ class EditorExportPlatformAndroid : public EditorExportPlatform { String name; String description; int api_level; + bool usb; }; struct APKExportData { @@ -246,17 +248,20 @@ class EditorExportPlatformAndroid : public EditorExportPlatform { String devices; List<String> args; args.push_back("devices"); + args.push_back("-l"); int ec; OS::get_singleton()->execute(adb, args, true, NULL, &devices, &ec); Vector<String> ds = devices.split("\n"); Vector<String> ldevices; + Vector<bool> ldevices_usbconnection; for (int i = 1; i < ds.size(); i++) { String d = ds[i]; - int dpos = d.find("device"); + int dpos = d.find(" device "); if (dpos == -1) continue; + ldevices_usbconnection.push_back(d.find(" usb:") != -1); d = d.substr(0, dpos).strip_edges(); ldevices.push_back(d); } @@ -287,6 +292,7 @@ class EditorExportPlatformAndroid : public EditorExportPlatform { Device d; d.id = ldevices[i]; + d.usb = ldevices_usbconnection[i]; for (int j = 0; j < ea->devices.size(); j++) { if (ea->devices[j].id == ldevices[i]) { d.description = ea->devices[j].description; @@ -341,9 +347,17 @@ class EditorExportPlatformAndroid : public EditorExportPlatform { } else if (p.begins_with("ro.opengles.version=")) { uint32_t opengl = p.get_slice("=", 1).to_int(); d.description += "OpenGL: " + itos(opengl >> 16) + "." + itos((opengl >> 8) & 0xFF) + "." + itos((opengl)&0xFF) + "\n"; + } else if (p.begins_with("ro.boot.serialno=")) { + d.description += "Serial: " + p.get_slice("=", 1).strip_edges() + "\n"; } } + if (d.usb) { + d.description += "Connection: USB\n"; + } else { + d.description += "Connection: " + d.id + "\n"; + } + d.name = vendor + " " + device; if (device == String()) continue; } @@ -1285,9 +1299,9 @@ public: r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "graphics/degrees_of_freedom", PROPERTY_HINT_ENUM, "None,3DOF and 6DOF,6DOF"), 0)); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "graphics/32_bits_framebuffer"), true)); r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "one_click_deploy/clear_previous_install"), false)); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_package/debug", PROPERTY_HINT_GLOBAL_FILE, "*.apk"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_package/release", PROPERTY_HINT_GLOBAL_FILE, "*.apk"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "custom_package/use_custom_build"), false)); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/debug", PROPERTY_HINT_GLOBAL_FILE, "*.apk"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/release", PROPERTY_HINT_GLOBAL_FILE, "*.apk"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "custom_template/use_custom_build"), false)); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "command_line/extra_args"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "version/code", PROPERTY_HINT_RANGE, "1,4096,1,or_greater"), 1)); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "version/name"), "1.0")); @@ -1415,7 +1429,9 @@ public: } const bool use_remote = (p_debug_flags & DEBUG_FLAG_REMOTE_DEBUG) || (p_debug_flags & DEBUG_FLAG_DUMB_CLIENT); - const bool use_reverse = devices[p_device].api_level >= 21; + const bool use_reverse = devices[p_device].api_level >= 21 && devices[p_device].usb; + // Note: Reverse can still fail if device is connected by both usb and network + // Ideally we'd know for sure whether adb reverse would work before we build the APK if (use_reverse) p_debug_flags |= DEBUG_FLAG_REMOTE_DEBUG_LOCALHOST; @@ -1520,7 +1536,7 @@ public: } } else { - static const char *const msg = "--- Device API < 21; debugging over Wi-Fi ---"; + static const char *const msg = "--- Device API < 21 or no USB connection; debugging over Wi-Fi ---"; EditorNode::get_singleton()->get_log()->add_message(msg, EditorLog::MSG_TYPE_EDITOR); print_line(String(msg).to_upper()); } @@ -1561,29 +1577,34 @@ public: virtual bool can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const { String err; + bool valid = false; - if (!bool(p_preset->get("custom_package/use_custom_build"))) { + // Look for export templates (first official, and if defined custom templates). - r_missing_templates = find_export_template("android_debug.apk") == String() || find_export_template("android_release.apk") == String(); + if (!bool(p_preset->get("custom_template/use_custom_build"))) { + bool dvalid = exists_export_template("android_debug.apk", &err); + bool rvalid = exists_export_template("android_release.apk", &err); - if (p_preset->get("custom_package/debug") != "") { - if (FileAccess::exists(p_preset->get("custom_package/debug"))) { - r_missing_templates = false; - } else { + if (p_preset->get("custom_template/debug") != "") { + dvalid = FileAccess::exists(p_preset->get("custom_template/debug")); + if (!dvalid) { err += TTR("Custom debug template not found.") + "\n"; } } - - if (p_preset->get("custom_package/release") != "") { - if (FileAccess::exists(p_preset->get("custom_package/release"))) { - r_missing_templates = false; - } else { + if (p_preset->get("custom_template/release") != "") { + rvalid = FileAccess::exists(p_preset->get("custom_template/release")); + if (!rvalid) { err += TTR("Custom release template not found.") + "\n"; } } + + valid = dvalid || rvalid; + } else { + valid = exists_export_template("android_source.zip", &err); } + r_missing_templates = !valid; - bool valid = !r_missing_templates; + // Validate the rest of the configuration. String adb = EditorSettings::get_singleton()->get("export/android/adb"); @@ -1612,7 +1633,7 @@ public: } } - if (bool(p_preset->get("custom_package/use_custom_build"))) { + if (bool(p_preset->get("custom_template/use_custom_build"))) { String sdk_path = EditorSettings::get_singleton()->get("export/android/custom_build_sdk_path"); if (sdk_path == "") { err += TTR("Custom build requires a valid Android SDK path in Editor Settings.") + "\n"; @@ -1933,7 +1954,7 @@ public: EditorProgress ep("export", "Exporting for Android", 105, true); - if (bool(p_preset->get("custom_package/use_custom_build"))) { //custom build + if (bool(p_preset->get("custom_template/use_custom_build"))) { //custom build //re-generate build.gradle and AndroidManifest.xml { //test that installed build version is alright @@ -1968,10 +1989,13 @@ public: build_command = build_path.plus_file(build_command); + String package_name = get_package_name(p_preset->get("package/unique_name")); + List<String> cmdline; cmdline.push_back("build"); - cmdline.push_back("-p"); - cmdline.push_back(build_path); + cmdline.push_back("-Pexport_package_name=" + package_name); // argument to specify the package name. + cmdline.push_back("-p"); // argument to specify the start directory. + cmdline.push_back(build_path); // start directory. /*{ used for debug int ec; String pipe; @@ -1998,9 +2022,9 @@ public: } else { if (p_debug) - src_apk = p_preset->get("custom_package/debug"); + src_apk = p_preset->get("custom_template/debug"); else - src_apk = p_preset->get("custom_package/release"); + src_apk = p_preset->get("custom_template/release"); src_apk = src_apk.strip_edges(); if (src_apk == "") { diff --git a/platform/android/export/export.h b/platform/android/export/export.h index 42f3e70450..ce786cc8b6 100644 --- a/platform/android/export/export.h +++ b/platform/android/export/export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/file_access_android.cpp b/platform/android/file_access_android.cpp index f8a2c73a1e..965342b364 100644 --- a/platform/android/file_access_android.cpp +++ b/platform/android/file_access_android.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/file_access_android.h b/platform/android/file_access_android.h index b8e78627ec..6b5ec541fd 100644 --- a/platform/android/file_access_android.h +++ b/platform/android/file_access_android.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/file_access_jandroid.cpp b/platform/android/file_access_jandroid.cpp index d4c2a23aa0..db3aa4255e 100644 --- a/platform/android/file_access_jandroid.cpp +++ b/platform/android/file_access_jandroid.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/file_access_jandroid.h b/platform/android/file_access_jandroid.h index 9429100d65..b361c64922 100644 --- a/platform/android/file_access_jandroid.h +++ b/platform/android/file_access_jandroid.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/app/build.gradle b/platform/android/java/app/build.gradle index 9f64c3dc8a..258ca9197a 100644 --- a/platform/android/java/app/build.gradle +++ b/platform/android/java/app/build.gradle @@ -51,7 +51,7 @@ android { defaultConfig { // Feel free to modify the application id to your own. - applicationId "com.godot.game" + applicationId getExportPackageName() minSdkVersion versions.minSdk targetSdkVersion versions.targetSdk //CHUNK_ANDROID_DEFAULTCONFIG_BEGIN diff --git a/platform/android/java/app/config.gradle b/platform/android/java/app/config.gradle index 20c3123221..862a954fac 100644 --- a/platform/android/java/app/config.gradle +++ b/platform/android/java/app/config.gradle @@ -10,3 +10,13 @@ ext.versions = [ ext.libraries = [ androidGradlePlugin : "com.android.tools.build:gradle:$versions.androidGradlePlugin" ] + +ext.getExportPackageName = { -> + // Retrieve the app id from the project property set by the Godot build command. + String appId = project.hasProperty("export_package_name") ? project.property("export_package_name") : "" + // Check if the app id is valid, otherwise use the default. + if (appId == null || appId.isEmpty()) { + appId = "com.godot.game" + } + return appId +} diff --git a/platform/android/java/app/src/com/godot/game/GodotApp.java b/platform/android/java/app/src/com/godot/game/GodotApp.java index d7469a8765..eb884404cd 100644 --- a/platform/android/java/app/src/com/godot/game/GodotApp.java +++ b/platform/android/java/app/src/com/godot/game/GodotApp.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/Dictionary.java b/platform/android/java/lib/src/org/godotengine/godot/Dictionary.java index 588d9ae646..594cae774b 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/Dictionary.java +++ b/platform/android/java/lib/src/org/godotengine/godot/Dictionary.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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..2f6a93fbb1 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/Godot.java +++ b/platform/android/java/lib/src/org/godotengine/godot/Godot.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/GodotDownloaderAlarmReceiver.java b/platform/android/java/lib/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java index e7e2a3f808..1fb242d0bc 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotDownloaderService.java b/platform/android/java/lib/src/org/godotengine/godot/GodotDownloaderService.java index 8e10710c9f..7e74e8a80d 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotDownloaderService.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotDownloaderService.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotIO.java b/platform/android/java/lib/src/org/godotengine/godot/GodotIO.java index 04566cf62c..271d508a4d 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotIO.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotIO.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotInstrumentation.java b/platform/android/java/lib/src/org/godotengine/godot/GodotInstrumentation.java index 0466f380e8..965e616ef3 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotInstrumentation.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotInstrumentation.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java b/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java index 67dce172dc..8447af10e4 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotPaymentV3.java b/platform/android/java/lib/src/org/godotengine/godot/GodotPaymentV3.java index 1432cd3a67..93265d509f 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotPaymentV3.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotPaymentV3.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotRenderer.java b/platform/android/java/lib/src/org/godotengine/godot/GodotRenderer.java index 56ba88656e..26fa033f12 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotRenderer.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotRenderer.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotView.java b/platform/android/java/lib/src/org/godotengine/godot/GodotView.java index 5511e5d782..78f3763d84 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/GodotView.java +++ b/platform/android/java/lib/src/org/godotengine/godot/GodotView.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/input/GodotEditText.java b/platform/android/java/lib/src/org/godotengine/godot/input/GodotEditText.java index 45b739baa0..0d5521dd87 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/input/GodotEditText.java +++ b/platform/android/java/lib/src/org/godotengine/godot/input/GodotEditText.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/input/GodotInputHandler.java b/platform/android/java/lib/src/org/godotengine/godot/input/GodotInputHandler.java index 2756ca6c83..b2b88088e8 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/input/GodotInputHandler.java +++ b/platform/android/java/lib/src/org/godotengine/godot/input/GodotInputHandler.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/input/GodotTextInputWrapper.java b/platform/android/java/lib/src/org/godotengine/godot/input/GodotTextInputWrapper.java index 9b372c75e3..3a154f1bf3 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/input/GodotTextInputWrapper.java +++ b/platform/android/java/lib/src/org/godotengine/godot/input/GodotTextInputWrapper.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/input/Joystick.java b/platform/android/java/lib/src/org/godotengine/godot/input/Joystick.java index ff95bfb0c5..0c1bdb32aa 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/input/Joystick.java +++ b/platform/android/java/lib/src/org/godotengine/godot/input/Joystick.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/payments/ConsumeTask.java b/platform/android/java/lib/src/org/godotengine/godot/payments/ConsumeTask.java index 4c1050c948..95cc48f536 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/payments/ConsumeTask.java +++ b/platform/android/java/lib/src/org/godotengine/godot/payments/ConsumeTask.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/payments/HandlePurchaseTask.java b/platform/android/java/lib/src/org/godotengine/godot/payments/HandlePurchaseTask.java index 1a914967a2..23d693cc8c 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/payments/HandlePurchaseTask.java +++ b/platform/android/java/lib/src/org/godotengine/godot/payments/HandlePurchaseTask.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/payments/PaymentsCache.java b/platform/android/java/lib/src/org/godotengine/godot/payments/PaymentsCache.java index 8a2facbcfb..84a7eda6e0 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/payments/PaymentsCache.java +++ b/platform/android/java/lib/src/org/godotengine/godot/payments/PaymentsCache.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/payments/PaymentsManager.java b/platform/android/java/lib/src/org/godotengine/godot/payments/PaymentsManager.java index c079c55854..90b958266b 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/payments/PaymentsManager.java +++ b/platform/android/java/lib/src/org/godotengine/godot/payments/PaymentsManager.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/payments/PurchaseTask.java b/platform/android/java/lib/src/org/godotengine/godot/payments/PurchaseTask.java index 9adc85e521..09c9349124 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/payments/PurchaseTask.java +++ b/platform/android/java/lib/src/org/godotengine/godot/payments/PurchaseTask.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java b/platform/android/java/lib/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java index daca6ef5ae..a101780511 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java +++ b/platform/android/java/lib/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/payments/ValidateTask.java b/platform/android/java/lib/src/org/godotengine/godot/payments/ValidateTask.java index 17a2a197ad..dbb6b8a783 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/payments/ValidateTask.java +++ b/platform/android/java/lib/src/org/godotengine/godot/payments/ValidateTask.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/utils/Crypt.java b/platform/android/java/lib/src/org/godotengine/godot/utils/Crypt.java index 4c551d1d21..bc0e565774 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/utils/Crypt.java +++ b/platform/android/java/lib/src/org/godotengine/godot/utils/Crypt.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java b/platform/android/java/lib/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java index b61007faa3..c78e8c1c66 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java +++ b/platform/android/java/lib/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/utils/GLUtils.java b/platform/android/java/lib/src/org/godotengine/godot/utils/GLUtils.java index 6c95494f8b..bbf876ea1f 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/utils/GLUtils.java +++ b/platform/android/java/lib/src/org/godotengine/godot/utils/GLUtils.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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..011d426c7e --- /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-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +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/HttpRequester.java b/platform/android/java/lib/src/org/godotengine/godot/utils/HttpRequester.java index 02ae753b3e..68f9a83597 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/utils/HttpRequester.java +++ b/platform/android/java/lib/src/org/godotengine/godot/utils/HttpRequester.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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..7cf32b00fe 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 @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/lib/src/org/godotengine/godot/utils/RequestParams.java b/platform/android/java/lib/src/org/godotengine/godot/utils/RequestParams.java index b9fe0dd0c9..25fa10647d 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/utils/RequestParams.java +++ b/platform/android/java/lib/src/org/godotengine/godot/utils/RequestParams.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/XRMode.java b/platform/android/java/lib/src/org/godotengine/godot/xr/XRMode.java index 5896b23ac3..982e43f9d1 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/xr/XRMode.java +++ b/platform/android/java/lib/src/org/godotengine/godot/xr/XRMode.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrConfigChooser.java b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrConfigChooser.java index ff836a31ca..9209d6ccf2 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrConfigChooser.java +++ b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrConfigChooser.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrContextFactory.java b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrContextFactory.java index 5f6da8c672..36f4416df2 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrContextFactory.java +++ b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrContextFactory.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrWindowSurfaceFactory.java b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrWindowSurfaceFactory.java index f1e38c35d8..b2aa130f37 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrWindowSurfaceFactory.java +++ b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrWindowSurfaceFactory.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularConfigChooser.java b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularConfigChooser.java index 3836967f86..ce4defd7a7 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularConfigChooser.java +++ b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularConfigChooser.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularContextFactory.java b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularContextFactory.java index 4f1e9a696b..22bd4ced87 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularContextFactory.java +++ b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularContextFactory.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularFallbackConfigChooser.java b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularFallbackConfigChooser.java index f5718ef2b3..71fcf06020 100644 --- a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularFallbackConfigChooser.java +++ b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularFallbackConfigChooser.java @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java_class_wrapper.cpp b/platform/android/java_class_wrapper.cpp index 2bed1f0892..feebea2738 100644 --- a/platform/android/java_class_wrapper.cpp +++ b/platform/android/java_class_wrapper.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java_class_wrapper.h b/platform/android/java_class_wrapper.h index e9471a1897..8075b297b0 100644 --- a/platform/android/java_class_wrapper.h +++ b/platform/android/java_class_wrapper.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java_godot_io_wrapper.cpp b/platform/android/java_godot_io_wrapper.cpp index ade7c03d58..671d1072ea 100644 --- a/platform/android/java_godot_io_wrapper.cpp +++ b/platform/android/java_godot_io_wrapper.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java_godot_io_wrapper.h b/platform/android/java_godot_io_wrapper.h index 100e50fd66..9fa6f2e469 100644 --- a/platform/android/java_godot_io_wrapper.h +++ b/platform/android/java_godot_io_wrapper.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java_godot_lib_jni.cpp b/platform/android/java_godot_lib_jni.cpp index a14e0a1960..0a32f4423b 100644 --- a/platform/android/java_godot_lib_jni.cpp +++ b/platform/android/java_godot_lib_jni.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/java_godot_lib_jni.h b/platform/android/java_godot_lib_jni.h index a564bbd4a1..8c18c52d2b 100644 --- a/platform/android/java_godot_lib_jni.h +++ b/platform/android/java_godot_lib_jni.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java_godot_wrapper.cpp b/platform/android/java_godot_wrapper.cpp index e3e613d30b..893b786c0b 100644 --- a/platform/android/java_godot_wrapper.cpp +++ b/platform/android/java_godot_wrapper.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java_godot_wrapper.h b/platform/android/java_godot_wrapper.h index d23ff273cb..655f5170bf 100644 --- a/platform/android/java_godot_wrapper.h +++ b/platform/android/java_godot_wrapper.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/net_socket_android.cpp b/platform/android/net_socket_android.cpp new file mode 100644 index 0000000000..320bdd3817 --- /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-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#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..4fc80d2de1 --- /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-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#ifndef 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..4c560273e8 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..5ac50ddef2 100644 --- a/platform/android/os_android.h +++ b/platform/android/os_android.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/android/platform_config.h b/platform/android/platform_config.h index ac58be8444..c5e896c4e1 100644 --- a/platform/android/platform_config.h +++ b/platform/android/platform_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/power_android.cpp b/platform/android/power_android.cpp index 4d2fbfbf1a..b0a90312e5 100644 --- a/platform/android/power_android.cpp +++ b/platform/android/power_android.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/power_android.h b/platform/android/power_android.h index 6cb745b6c0..9f77f3fc6b 100644 --- a/platform/android/power_android.h +++ b/platform/android/power_android.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/string_android.h b/platform/android/string_android.h index fe627a3e0c..51c488c8cc 100644 --- a/platform/android/string_android.h +++ b/platform/android/string_android.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/thread_jandroid.cpp b/platform/android/thread_jandroid.cpp index 9df9e57b24..98b61ad755 100644 --- a/platform/android/thread_jandroid.cpp +++ b/platform/android/thread_jandroid.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/thread_jandroid.h b/platform/android/thread_jandroid.h index 0b6e1f4b4a..eb4725ae68 100644 --- a/platform/android/thread_jandroid.h +++ b/platform/android/thread_jandroid.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/audio_driver_media_kit.cpp b/platform/haiku/audio_driver_media_kit.cpp index 3c4e31da36..b7f6b57244 100644 --- a/platform/haiku/audio_driver_media_kit.cpp +++ b/platform/haiku/audio_driver_media_kit.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/audio_driver_media_kit.h b/platform/haiku/audio_driver_media_kit.h index 634438fd2a..06a362a89e 100644 --- a/platform/haiku/audio_driver_media_kit.h +++ b/platform/haiku/audio_driver_media_kit.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/context_gl_haiku.cpp b/platform/haiku/context_gl_haiku.cpp index d73d893603..3c4d43ff71 100644 --- a/platform/haiku/context_gl_haiku.cpp +++ b/platform/haiku/context_gl_haiku.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/context_gl_haiku.h b/platform/haiku/context_gl_haiku.h index 8452f5fbfb..c5d258915d 100644 --- a/platform/haiku/context_gl_haiku.h +++ b/platform/haiku/context_gl_haiku.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/godot_haiku.cpp b/platform/haiku/godot_haiku.cpp index d772632d1c..0657f4c052 100644 --- a/platform/haiku/godot_haiku.cpp +++ b/platform/haiku/godot_haiku.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/haiku_application.cpp b/platform/haiku/haiku_application.cpp index f548904547..82d9c093e1 100644 --- a/platform/haiku/haiku_application.cpp +++ b/platform/haiku/haiku_application.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/haiku_application.h b/platform/haiku/haiku_application.h index d808c03863..2e04d921bf 100644 --- a/platform/haiku/haiku_application.h +++ b/platform/haiku/haiku_application.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/haiku_direct_window.cpp b/platform/haiku/haiku_direct_window.cpp index c0dc1d2eee..3c2b7f8d10 100644 --- a/platform/haiku/haiku_direct_window.cpp +++ b/platform/haiku/haiku_direct_window.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/haiku_direct_window.h b/platform/haiku/haiku_direct_window.h index 77aa71c9e0..ccc9542f0e 100644 --- a/platform/haiku/haiku_direct_window.h +++ b/platform/haiku/haiku_direct_window.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/haiku_gl_view.cpp b/platform/haiku/haiku_gl_view.cpp index 56db7b1ffb..970a1276fd 100644 --- a/platform/haiku/haiku_gl_view.cpp +++ b/platform/haiku/haiku_gl_view.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/haiku_gl_view.h b/platform/haiku/haiku_gl_view.h index cc31268c72..59e02d2367 100644 --- a/platform/haiku/haiku_gl_view.h +++ b/platform/haiku/haiku_gl_view.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/key_mapping_haiku.cpp b/platform/haiku/key_mapping_haiku.cpp index 486e9a3d17..692a1e5a78 100644 --- a/platform/haiku/key_mapping_haiku.cpp +++ b/platform/haiku/key_mapping_haiku.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/key_mapping_haiku.h b/platform/haiku/key_mapping_haiku.h index a6a50659e0..a0e85e3390 100644 --- a/platform/haiku/key_mapping_haiku.h +++ b/platform/haiku/key_mapping_haiku.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/haiku/os_haiku.cpp b/platform/haiku/os_haiku.cpp index 9c07535c85..80ab9c6aa1 100644 --- a/platform/haiku/os_haiku.cpp +++ b/platform/haiku/os_haiku.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..c99147198d 100644 --- a/platform/haiku/os_haiku.h +++ b/platform/haiku/os_haiku.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/haiku/platform_config.h b/platform/haiku/platform_config.h index 3ce26136e8..2df3c05f36 100644 --- a/platform/haiku/platform_config.h +++ b/platform/haiku/platform_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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/app_delegate.h b/platform/iphone/app_delegate.h index 4c43f10e89..b4454aab11 100644 --- a/platform/iphone/app_delegate.h +++ b/platform/iphone/app_delegate.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/app_delegate.mm b/platform/iphone/app_delegate.mm index 3f1230faa8..4de321fa04 100644 --- a/platform/iphone/app_delegate.mm +++ b/platform/iphone/app_delegate.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp index baae13c53d..b606d570c2 100644 --- a/platform/iphone/export/export.cpp +++ b/platform/iphone/export/export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; } @@ -241,8 +206,8 @@ static const LoadingScreenInfo loading_screen_infos[] = { void EditorExportPlatformIOS::get_export_options(List<ExportOption> *r_options) { - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_package/debug", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_package/release", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/debug", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/release", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/app_store_team_id"), "")); @@ -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); @@ -850,9 +848,9 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p ERR_FAIL_COND_V_MSG(team_id.length() == 0, ERR_CANT_OPEN, "App Store Team ID not specified - cannot configure the project."); if (p_debug) - src_pkg_name = p_preset->get("custom_package/debug"); + src_pkg_name = p_preset->get("custom_template/debug"); else - src_pkg_name = p_preset->get("custom_package/release"); + src_pkg_name = p_preset->get("custom_template/release"); if (src_pkg_name == "") { String err; @@ -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; @@ -1136,25 +1156,30 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p bool EditorExportPlatformIOS::can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const { String err; - r_missing_templates = find_export_template("iphone.zip") == String(); + bool valid = false; - if (p_preset->get("custom_package/debug") != "") { - if (FileAccess::exists(p_preset->get("custom_package/debug"))) { - r_missing_templates = false; - } else { + // Look for export templates (first official, and if defined custom templates). + + bool dvalid = exists_export_template("iphone.zip", &err); + bool rvalid = dvalid; // Both in the same ZIP. + + if (p_preset->get("custom_template/debug") != "") { + dvalid = FileAccess::exists(p_preset->get("custom_template/debug")); + if (!dvalid) { err += TTR("Custom debug template not found.") + "\n"; } } - - if (p_preset->get("custom_package/release") != "") { - if (FileAccess::exists(p_preset->get("custom_package/release"))) { - r_missing_templates = false; - } else { + if (p_preset->get("custom_template/release") != "") { + rvalid = FileAccess::exists(p_preset->get("custom_template/release")); + if (!rvalid) { err += TTR("Custom release template not found.") + "\n"; } } - bool valid = !r_missing_templates; + valid = dvalid || rvalid; + r_missing_templates = !valid; + + // Validate the rest of the configuration. String team_id = p_preset->get("application/app_store_team_id"); if (team_id.length() == 0) { diff --git a/platform/iphone/export/export.h b/platform/iphone/export/export.h index 3da58def33..77b2a07bd1 100644 --- a/platform/iphone/export/export.h +++ b/platform/iphone/export/export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/game_center.h b/platform/iphone/game_center.h index 1a14968f02..d35cc4b87c 100644 --- a/platform/iphone/game_center.h +++ b/platform/iphone/game_center.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/game_center.mm b/platform/iphone/game_center.mm index 97d6f0c71b..696f61f954 100644 --- a/platform/iphone/game_center.mm +++ b/platform/iphone/game_center.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/gl_view.h b/platform/iphone/gl_view.h index e3c9d212f0..975aa4b70a 100644 --- a/platform/iphone/gl_view.h +++ b/platform/iphone/gl_view.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/gl_view.mm b/platform/iphone/gl_view.mm index 4e6b8e1ada..e8d737d9c3 100644 --- a/platform/iphone/gl_view.mm +++ b/platform/iphone/gl_view.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/godot_iphone.cpp b/platform/iphone/godot_iphone.cpp index 992da2818b..8c3eddc5f7 100644 --- a/platform/iphone/godot_iphone.cpp +++ b/platform/iphone/godot_iphone.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/icloud.h b/platform/iphone/icloud.h index aa4e1d4582..401a6cbeb8 100644 --- a/platform/iphone/icloud.h +++ b/platform/iphone/icloud.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/icloud.mm b/platform/iphone/icloud.mm index c60db3d661..f846043dde 100644 --- a/platform/iphone/icloud.mm +++ b/platform/iphone/icloud.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/in_app_store.h b/platform/iphone/in_app_store.h index 7ed699c4f1..493877a5a7 100644 --- a/platform/iphone/in_app_store.h +++ b/platform/iphone/in_app_store.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/in_app_store.mm b/platform/iphone/in_app_store.mm index 8eef430621..855ab195b0 100644 --- a/platform/iphone/in_app_store.mm +++ b/platform/iphone/in_app_store.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/ios.h b/platform/iphone/ios.h index ef45fc7ac3..1378fdbbc5 100644 --- a/platform/iphone/ios.h +++ b/platform/iphone/ios.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/ios.mm b/platform/iphone/ios.mm index 6e986df493..2656f125b9 100644 --- a/platform/iphone/ios.mm +++ b/platform/iphone/ios.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/main.m b/platform/iphone/main.m index e9f009eabe..164db2a74b 100644 --- a/platform/iphone/main.m +++ b/platform/iphone/main.m @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/os_iphone.cpp b/platform/iphone/os_iphone.cpp index 83b0660ef7..7b1d0e6db1 100644 --- a/platform/iphone/os_iphone.cpp +++ b/platform/iphone/os_iphone.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..4668471aa9 100644 --- a/platform/iphone/os_iphone.h +++ b/platform/iphone/os_iphone.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/platform_config.h b/platform/iphone/platform_config.h index 1884e03403..d39c64eed6 100644 --- a/platform/iphone/platform_config.h +++ b/platform/iphone/platform_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/platform_refcount.h b/platform/iphone/platform_refcount.h index 56fd4e6e81..9029418462 100644 --- a/platform/iphone/platform_refcount.h +++ b/platform/iphone/platform_refcount.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/power_iphone.cpp b/platform/iphone/power_iphone.cpp index e2631b7822..36bac8da38 100644 --- a/platform/iphone/power_iphone.cpp +++ b/platform/iphone/power_iphone.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/power_iphone.h b/platform/iphone/power_iphone.h index d7d4bf4a69..47a4508509 100644 --- a/platform/iphone/power_iphone.h +++ b/platform/iphone/power_iphone.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/semaphore_iphone.cpp b/platform/iphone/semaphore_iphone.cpp index cc7dde72f7..0c1d4d2d5c 100644 --- a/platform/iphone/semaphore_iphone.cpp +++ b/platform/iphone/semaphore_iphone.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/semaphore_iphone.h b/platform/iphone/semaphore_iphone.h index 16658384e6..9356c65f1e 100644 --- a/platform/iphone/semaphore_iphone.h +++ b/platform/iphone/semaphore_iphone.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/iphone/view_controller.h b/platform/iphone/view_controller.h index 68e3bc64fc..f6bbe11d97 100644 --- a/platform/iphone/view_controller.h +++ b/platform/iphone/view_controller.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..465e38e45e 100644 --- a/platform/iphone/view_controller.mm +++ b/platform/iphone/view_controller.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/api/api.cpp b/platform/javascript/api/api.cpp index 0832ae0360..88de13d771 100644 --- a/platform/javascript/api/api.cpp +++ b/platform/javascript/api/api.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/api/api.h b/platform/javascript/api/api.h index 52d87528f6..164d679205 100644 --- a/platform/javascript/api/api.h +++ b/platform/javascript/api/api.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/api/javascript_eval.h b/platform/javascript/api/javascript_eval.h index 49e460fffd..29229de8e3 100644 --- a/platform/javascript/api/javascript_eval.h +++ b/platform/javascript/api/javascript_eval.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp index b359699d3a..4144eb3499 100644 --- a/platform/javascript/audio_driver_javascript.cpp +++ b/platform/javascript/audio_driver_javascript.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/audio_driver_javascript.h b/platform/javascript/audio_driver_javascript.h index 9dcba02c96..2bb97ba192 100644 --- a/platform/javascript/audio_driver_javascript.h +++ b/platform/javascript/audio_driver_javascript.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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/dom_keys.inc b/platform/javascript/dom_keys.inc index bf99ea5d42..25e88f99d1 100644 --- a/platform/javascript/dom_keys.inc +++ b/platform/javascript/dom_keys.inc @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/export/export.cpp b/platform/javascript/export/export.cpp index f3e8d6911a..93c83f4ff4 100644 --- a/platform/javascript/export/export.cpp +++ b/platform/javascript/export/export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -288,32 +288,32 @@ Ref<Texture> EditorExportPlatformJavaScript::get_logo() const { bool EditorExportPlatformJavaScript::can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const { - bool valid = false; String err; + bool valid = false; - if (find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_RELEASE) != "") - valid = true; - else if (find_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_DEBUG) != "") - valid = true; + // Look for export templates (first official, and if defined custom templates). + + bool dvalid = exists_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_DEBUG, &err); + bool rvalid = exists_export_template(EXPORT_TEMPLATE_WEBASSEMBLY_RELEASE, &err); if (p_preset->get("custom_template/debug") != "") { - if (FileAccess::exists(p_preset->get("custom_template/debug"))) { - valid = true; - } else { + dvalid = FileAccess::exists(p_preset->get("custom_template/debug")); + if (!dvalid) { err += TTR("Custom debug template not found.") + "\n"; } } - if (p_preset->get("custom_template/release") != "") { - if (FileAccess::exists(p_preset->get("custom_template/release"))) { - valid = true; - } else { + rvalid = FileAccess::exists(p_preset->get("custom_template/release")); + if (!rvalid) { err += TTR("Custom release template not found.") + "\n"; } } + valid = dvalid || rvalid; r_missing_templates = !valid; + // Validate the rest of the configuration. + if (p_preset->get("vram_texture_compression/for_mobile")) { String etc_error = test_etc2(); if (etc_error != String()) { diff --git a/platform/javascript/export/export.h b/platform/javascript/export/export.h index 7ebbcd6f00..30c5c855d1 100644 --- a/platform/javascript/export/export.h +++ b/platform/javascript/export/export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/http_client.h.inc b/platform/javascript/http_client.h.inc index c034069ab2..03e2ce8b8a 100644 --- a/platform/javascript/http_client.h.inc +++ b/platform/javascript/http_client.h.inc @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/http_client_javascript.cpp b/platform/javascript/http_client_javascript.cpp index e6e933811f..2c2511a3a5 100644 --- a/platform/javascript/http_client_javascript.cpp +++ b/platform/javascript/http_client_javascript.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -211,6 +211,10 @@ void HTTPClient::set_read_chunk_size(int p_size) { read_limit = p_size; } +int HTTPClient::get_read_chunk_size() const { + return read_limit; +} + Error HTTPClient::poll() { switch (status) { diff --git a/platform/javascript/http_request.h b/platform/javascript/http_request.h index 4a596057da..57dc4f0d9f 100644 --- a/platform/javascript/http_request.h +++ b/platform/javascript/http_request.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/http_request.js b/platform/javascript/http_request.js index 66dacfc3d4..c112039d0b 100644 --- a/platform/javascript/http_request.js +++ b/platform/javascript/http_request.js @@ -5,7 +5,7 @@ /* GODOT ENGINE */ /* http://www.godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/javascript_eval.cpp b/platform/javascript/javascript_eval.cpp index dd3eba74e4..d907222d24 100644 --- a/platform/javascript/javascript_eval.cpp +++ b/platform/javascript/javascript_eval.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp index bdf9dfe18f..815bc7e456 100644 --- a/platform/javascript/javascript_main.cpp +++ b/platform/javascript/javascript_main.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index 652f6a1ce1..5562b059f4 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..a5696f8aae 100644 --- a/platform/javascript/os_javascript.h +++ b/platform/javascript/os_javascript.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/javascript/platform_config.h b/platform/javascript/platform_config.h index baba6325b3..e2200376d3 100644 --- a/platform/javascript/platform_config.h +++ b/platform/javascript/platform_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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/crash_handler_osx.h b/platform/osx/crash_handler_osx.h index 6a72ce8ae9..abd9812596 100644 --- a/platform/osx/crash_handler_osx.h +++ b/platform/osx/crash_handler_osx.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/crash_handler_osx.mm b/platform/osx/crash_handler_osx.mm index 015859b3c0..5da0118686 100644 --- a/platform/osx/crash_handler_osx.mm +++ b/platform/osx/crash_handler_osx.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/dir_access_osx.h b/platform/osx/dir_access_osx.h index c5951a570e..d61ee181f0 100644 --- a/platform/osx/dir_access_osx.h +++ b/platform/osx/dir_access_osx.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/dir_access_osx.mm b/platform/osx/dir_access_osx.mm index 75f50aaa28..66ea380903 100644 --- a/platform/osx/dir_access_osx.mm +++ b/platform/osx/dir_access_osx.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index 9226aea369..ce7b47c414 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -118,8 +118,8 @@ void EditorExportPlatformOSX::get_preset_features(const Ref<EditorExportPreset> void EditorExportPlatformOSX::get_export_options(List<ExportOption> *r_options) { - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_package/debug", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), "")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_package/release", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/debug", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/release", PROPERTY_HINT_GLOBAL_FILE, "*.zip"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/name", PROPERTY_HINT_PLACEHOLDER_TEXT, "Game Name"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/info"), "Made with Godot Engine")); @@ -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"; } @@ -451,9 +459,9 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p EditorProgress ep("export", "Exporting for OSX", 3, true); if (p_debug) - src_pkg_name = p_preset->get("custom_package/debug"); + src_pkg_name = p_preset->get("custom_template/debug"); else - src_pkg_name = p_preset->get("custom_package/release"); + src_pkg_name = p_preset->get("custom_template/release"); if (src_pkg_name == "") { String err; @@ -788,33 +796,32 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p bool EditorExportPlatformOSX::can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const { - bool valid = false; String err; + bool valid = false; - if (exists_export_template("osx.zip", &err)) { - valid = true; - } + // Look for export templates (first official, and if defined custom templates). - if (p_preset->get("custom_package/debug") != "") { - if (FileAccess::exists(p_preset->get("custom_package/debug"))) { - valid = true; - } else { + bool dvalid = exists_export_template("osx.zip", &err); + bool rvalid = dvalid; // Both in the same ZIP. + + if (p_preset->get("custom_template/debug") != "") { + dvalid = FileAccess::exists(p_preset->get("custom_template/debug")); + if (!dvalid) { err += TTR("Custom debug template not found.") + "\n"; } } - - if (p_preset->get("custom_package/release") != "") { - if (FileAccess::exists(p_preset->get("custom_package/release"))) { - valid = true; - } else { + if (p_preset->get("custom_template/release") != "") { + rvalid = FileAccess::exists(p_preset->get("custom_template/release")); + if (!rvalid) { err += TTR("Custom release template not found.") + "\n"; } } + valid = dvalid || rvalid; + r_missing_templates = !valid; + if (!err.empty()) r_error = err; - - r_missing_templates = !valid; return valid; } diff --git a/platform/osx/export/export.h b/platform/osx/export/export.h index 7e7e697488..7b8832cb01 100644 --- a/platform/osx/export/export.h +++ b/platform/osx/export/export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/godot_main_osx.mm b/platform/osx/godot_main_osx.mm index 79364314aa..73fd4632ab 100644 --- a/platform/osx/godot_main_osx.mm +++ b/platform/osx/godot_main_osx.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/joypad_osx.cpp b/platform/osx/joypad_osx.cpp index 4edf347f61..13ece678f3 100644 --- a/platform/osx/joypad_osx.cpp +++ b/platform/osx/joypad_osx.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/joypad_osx.h b/platform/osx/joypad_osx.h index 255a674f09..388251016b 100644 --- a/platform/osx/joypad_osx.h +++ b/platform/osx/joypad_osx.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h index a61b9234d1..44c5412a39 100644 --- a/platform/osx/os_osx.h +++ b/platform/osx/os_osx.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; @@ -124,6 +121,7 @@ public: bool maximized; bool zoomed; bool resizable; + bool window_focused; Size2 window_size; Rect2 restore_rect; @@ -277,6 +275,7 @@ public: virtual bool is_window_maximized() const; virtual void set_window_always_on_top(bool p_enabled); virtual bool is_window_always_on_top() const; + virtual bool is_window_focused() const; virtual void request_attention(); virtual String get_joy_guid(int p_device) const; diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index e5166d102b..95c103bd28 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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]; } } } @@ -397,9 +393,6 @@ static Vector2 get_mouse_pos(NSPoint locationInWindow, CGFloat backingScaleFacto } - (void)windowDidBecomeKey:(NSNotification *)notification { - //_GodotInputWindowFocus(window, GL_TRUE); - //_GodotPlatformSetCursorMode(window, window->cursorMode); - if (OS_OSX::singleton->get_main_loop()) { get_mouse_pos( [OS_OSX::singleton->window_object mouseLocationOutsideOfEventStream], @@ -408,25 +401,31 @@ static Vector2 get_mouse_pos(NSPoint locationInWindow, CGFloat backingScaleFacto OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_IN); } + + OS_OSX::singleton->window_focused = true; } - (void)windowDidResignKey:(NSNotification *)notification { - //_GodotInputWindowFocus(window, GL_FALSE); - //_GodotPlatformSetCursorMode(window, Godot_CURSOR_NORMAL); if (OS_OSX::singleton->get_main_loop()) OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_OUT); + + OS_OSX::singleton->window_focused = false; } - (void)windowDidMiniaturize:(NSNotification *)notification { OS_OSX::singleton->wm_minimized(true); if (OS_OSX::singleton->get_main_loop()) OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_OUT); + + OS_OSX::singleton->window_focused = false; }; - (void)windowDidDeminiaturize:(NSNotification *)notification { OS_OSX::singleton->wm_minimized(false); if (OS_OSX::singleton->get_main_loop()) OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_IN); + + OS_OSX::singleton->window_focused = true; }; @end @@ -1632,8 +1631,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 +1660,6 @@ void OS_OSX::finalize() { delete_main_loop(); - if (camera_server) { - memdelete(camera_server); - camera_server = NULL; - } - memdelete(joypad_osx); memdelete(input); @@ -2224,7 +2216,7 @@ Error OS_OSX::shell_open(String p_uri) { } String OS_OSX::get_locale() const { - NSString *locale_code = [[NSLocale currentLocale] localeIdentifier]; + NSString *locale_code = [[NSLocale preferredLanguages] objectAtIndex:0]; return [locale_code UTF8String]; } @@ -2618,6 +2610,10 @@ bool OS_OSX::is_window_always_on_top() const { return [window_object level] == NSFloatingWindowLevel; } +bool OS_OSX::is_window_focused() const { + return window_focused; +} + void OS_OSX::request_attention() { [NSApp requestUserAttention:NSCriticalRequest]; @@ -3070,6 +3066,7 @@ OS_OSX::OS_OSX() { window_size = Vector2(1024, 600); zoomed = false; resizable = false; + window_focused = true; Vector<Logger *> loggers; loggers.push_back(memnew(OSXTerminalLogger)); diff --git a/platform/osx/platform_config.h b/platform/osx/platform_config.h index ddb533cb79..046512ae84 100644 --- a/platform/osx/platform_config.h +++ b/platform/osx/platform_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/power_osx.cpp b/platform/osx/power_osx.cpp index 04d423d8c5..6d7667c5e8 100644 --- a/platform/osx/power_osx.cpp +++ b/platform/osx/power_osx.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/power_osx.h b/platform/osx/power_osx.h index 40d0d40fd4..6f9b213439 100644 --- a/platform/osx/power_osx.h +++ b/platform/osx/power_osx.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/semaphore_osx.cpp b/platform/osx/semaphore_osx.cpp index fe7d19bd9e..e75f5103cc 100644 --- a/platform/osx/semaphore_osx.cpp +++ b/platform/osx/semaphore_osx.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/osx/semaphore_osx.h b/platform/osx/semaphore_osx.h index c8e7c45227..2348c8efa6 100644 --- a/platform/osx/semaphore_osx.h +++ b/platform/osx/semaphore_osx.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/register_platform_apis.h b/platform/register_platform_apis.h index 10876bacc7..6b962f5d91 100644 --- a/platform/register_platform_apis.h +++ b/platform/register_platform_apis.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/server/godot_server.cpp b/platform/server/godot_server.cpp index 91bd96ac31..df49bfaebf 100644 --- a/platform/server/godot_server.cpp +++ b/platform/server/godot_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/server/os_server.cpp b/platform/server/os_server.cpp index 87dc6421ac..498fd01b5e 100644 --- a/platform/server/os_server.cpp +++ b/platform/server/os_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..0aca8049f2 100644 --- a/platform/server/os_server.h +++ b/platform/server/os_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/server/platform_config.h b/platform/server/platform_config.h index bedbff0b80..bdff93f02b 100644 --- a/platform/server/platform_config.h +++ b/platform/server/platform_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/app.cpp b/platform/uwp/app.cpp index 4f2ee0237a..a47fe96c1b 100644 --- a/platform/uwp/app.cpp +++ b/platform/uwp/app.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/app.h b/platform/uwp/app.h index 0bd996d483..302d9759b3 100644 --- a/platform/uwp/app.h +++ b/platform/uwp/app.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/context_egl_uwp.cpp b/platform/uwp/context_egl_uwp.cpp index 061c54687c..7ac9489bb4 100644 --- a/platform/uwp/context_egl_uwp.cpp +++ b/platform/uwp/context_egl_uwp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/context_egl_uwp.h b/platform/uwp/context_egl_uwp.h index 0c62fe7456..7a41685867 100644 --- a/platform/uwp/context_egl_uwp.h +++ b/platform/uwp/context_egl_uwp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/export/export.cpp b/platform/uwp/export/export.cpp index 557699cf37..57fb9004b8 100644 --- a/platform/uwp/export/export.cpp +++ b/platform/uwp/export/export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -517,7 +517,7 @@ Error AppxPackager::add_file(String p_file_name, const uint8_t *p_buffer, size_t int total_out_before = strm.total_out; int err = deflate(&strm, Z_FULL_FLUSH); - ERR_FAIL_COND_V(err >= 0, ERR_BUG); // Negative means bug + ERR_FAIL_COND_V(err < 0, ERR_BUG); // Negative means bug bh.compressed_size = strm.total_out - total_out_before; @@ -1090,15 +1090,14 @@ public: } virtual bool can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const { + String err; - bool valid = true; - Platform arch = (Platform)(int)(p_preset->get("architecture/target")); + bool valid = false; - String custom_debug_binary = p_preset->get("custom_template/debug"); - String custom_release_binary = p_preset->get("custom_template/release"); + // Look for export templates (first official, and if defined custom templates). + Platform arch = (Platform)(int)(p_preset->get("architecture/target")); String platform_infix; - switch (arch) { case EditorExportPlatformUWP::ARM: { platform_infix = "arm"; @@ -1111,38 +1110,26 @@ public: } break; } - if (!exists_export_template("uwp_" + platform_infix + "_debug.zip", &err) || !exists_export_template("uwp_" + platform_infix + "_release.zip", &err)) { - valid = false; - r_missing_templates = true; - } + bool dvalid = exists_export_template("uwp_" + platform_infix + "_debug.zip", &err); + bool rvalid = exists_export_template("uwp_" + platform_infix + "_release.zip", &err); - if (!valid && custom_debug_binary == "" && custom_release_binary == "") { - if (!err.empty()) { - r_error = err; + if (p_preset->get("custom_template/debug") != "") { + dvalid = FileAccess::exists(p_preset->get("custom_template/debug")); + if (!dvalid) { + err += TTR("Custom debug template not found.") + "\n"; } - return valid; } - - bool dvalid = true; - bool rvalid = true; - - if (!FileAccess::exists(custom_debug_binary)) { - dvalid = false; - err += TTR("Custom debug template not found.") + "\n"; - } - - if (!FileAccess::exists(custom_release_binary)) { - rvalid = false; - err += TTR("Custom release template not found.") + "\n"; + if (p_preset->get("custom_template/release") != "") { + rvalid = FileAccess::exists(p_preset->get("custom_template/release")); + if (!rvalid) { + err += TTR("Custom release template not found.") + "\n"; + } } - if (dvalid || rvalid) - valid = true; + valid = dvalid || rvalid; + r_missing_templates = !valid; - if (!valid) { - r_error = err; - return valid; - } + // Validate the rest of the configuration. if (!_valid_resource_name(p_preset->get("package/short_name"))) { valid = false; diff --git a/platform/uwp/export/export.h b/platform/uwp/export/export.h index e4839eeda2..ce03bc0aeb 100644 --- a/platform/uwp/export/export.h +++ b/platform/uwp/export/export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/joypad_uwp.cpp b/platform/uwp/joypad_uwp.cpp index 0899c7592c..90df6fe5d7 100644 --- a/platform/uwp/joypad_uwp.cpp +++ b/platform/uwp/joypad_uwp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/joypad_uwp.h b/platform/uwp/joypad_uwp.h index 31fc9bcd11..f2a721f3dd 100644 --- a/platform/uwp/joypad_uwp.h +++ b/platform/uwp/joypad_uwp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/os_uwp.cpp b/platform/uwp/os_uwp.cpp index 60f2290355..aec5da316b 100644 --- a/platform/uwp/os_uwp.cpp +++ b/platform/uwp/os_uwp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..edc63bd637 100644 --- a/platform/uwp/os_uwp.h +++ b/platform/uwp/os_uwp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/uwp/platform_config.h b/platform/uwp/platform_config.h index 311a41454d..09a16614e0 100644 --- a/platform/uwp/platform_config.h +++ b/platform/uwp/platform_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/power_uwp.cpp b/platform/uwp/power_uwp.cpp index ba1311a1b1..c6b4359392 100644 --- a/platform/uwp/power_uwp.cpp +++ b/platform/uwp/power_uwp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/power_uwp.h b/platform/uwp/power_uwp.h index cc19904a62..5e28cf65e5 100644 --- a/platform/uwp/power_uwp.h +++ b/platform/uwp/power_uwp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/thread_uwp.cpp b/platform/uwp/thread_uwp.cpp index 0e4e138aa6..9dc20a74e8 100644 --- a/platform/uwp/thread_uwp.cpp +++ b/platform/uwp/thread_uwp.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/uwp/thread_uwp.h b/platform/uwp/thread_uwp.h index e29b45a903..a2d367ae2f 100644 --- a/platform/uwp/thread_uwp.h +++ b/platform/uwp/thread_uwp.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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..21d954a736 100644 --- a/platform/windows/context_gl_windows.cpp +++ b/platform/windows/context_gl_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..0c6a6d1814 100644 --- a/platform/windows/context_gl_windows.h +++ b/platform/windows/context_gl_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/crash_handler_windows.cpp b/platform/windows/crash_handler_windows.cpp index 0716ee67f4..6145751e00 100644 --- a/platform/windows/crash_handler_windows.cpp +++ b/platform/windows/crash_handler_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/crash_handler_windows.h b/platform/windows/crash_handler_windows.h index eba72beb7e..adc548073c 100644 --- a/platform/windows/crash_handler_windows.h +++ b/platform/windows/crash_handler_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ 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..34d66ecd79 100644 --- a/platform/windows/export/export.cpp +++ b/platform/windows/export/export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/export/export.h b/platform/windows/export/export.h index e3431797b4..d669192831 100644 --- a/platform/windows/export/export.h +++ b/platform/windows/export/export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/godot_res.rc b/platform/windows/godot_res.rc index 1fa8957f15..0593c8b069 100644 --- a/platform/windows/godot_res.rc +++ b/platform/windows/godot_res.rc @@ -4,10 +4,6 @@ #define _MKSTR(m_x) _STR(m_x) #endif -#ifndef VERSION_PATCH -#define VERSION_PATCH 0 -#endif - GODOT_ICON ICON platform/windows/godot.ico 1 VERSIONINFO diff --git a/platform/windows/godot_windows.cpp b/platform/windows/godot_windows.cpp index 11bfea6922..dcc12b7649 100644 --- a/platform/windows/godot_windows.cpp +++ b/platform/windows/godot_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/joypad_windows.cpp b/platform/windows/joypad_windows.cpp index 53ce342e8c..c82a90bf7d 100644 --- a/platform/windows/joypad_windows.cpp +++ b/platform/windows/joypad_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/joypad_windows.h b/platform/windows/joypad_windows.h index 4af5d9bd6a..ab85bc60ac 100644 --- a/platform/windows/joypad_windows.h +++ b/platform/windows/joypad_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/key_mapping_windows.cpp b/platform/windows/key_mapping_windows.cpp index 01bbb072bb..c76b31ca9c 100644 --- a/platform/windows/key_mapping_windows.cpp +++ b/platform/windows/key_mapping_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/key_mapping_windows.h b/platform/windows/key_mapping_windows.h index dbb8c20f1e..0f9bdecde1 100644 --- a/platform/windows/key_mapping_windows.h +++ b/platform/windows/key_mapping_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/lang_table.h b/platform/windows/lang_table.h index f12893a8dc..f81bab13a4 100644 --- a/platform/windows/lang_table.h +++ b/platform/windows/lang_table.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 429657f332..3868d0bc63 100755 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -352,12 +352,14 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) if (LOWORD(wParam) == WA_ACTIVE || LOWORD(wParam) == WA_CLICKACTIVE) { main_loop->notification(MainLoop::NOTIFICATION_WM_FOCUS_IN); + window_focused = true; alt_mem = false; control_mem = false; shift_mem = false; } else { // WM_INACTIVE input->release_pressed_events(); main_loop->notification(MainLoop::NOTIFICATION_WM_FOCUS_OUT); + window_focused = false; alt_mem = false; }; @@ -1480,6 +1482,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 +1497,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 +1650,6 @@ void OS_Windows::finalize() { memdelete(joypad); memdelete(input); - memdelete(camera_server); touch_state.clear(); cursors_cache.clear(); @@ -2097,6 +2097,11 @@ bool OS_Windows::is_window_always_on_top() const { return video_mode.always_on_top; } +bool OS_Windows::is_window_focused() const { + + return window_focused; +} + void OS_Windows::set_console_visible(bool p_enabled) { if (console_visible == p_enabled) return; @@ -3374,6 +3379,7 @@ OS_Windows::OS_Windows(HINSTANCE _hInstance) { meta_mem = false; minimized = false; was_maximized = false; + window_focused = true; console_visible = IsWindowVisible(GetConsoleWindow()); //Note: Functions for pen input, available on Windows 8+ diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h index ce279fb033..65d08f5d36 100644 --- a/platform/windows/os_windows.h +++ b/platform/windows/os_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; @@ -276,6 +274,7 @@ protected: bool maximized; bool minimized; bool borderless; + bool window_focused; bool console_visible; bool was_maximized; @@ -324,6 +323,7 @@ public: virtual bool is_window_maximized() const; virtual void set_window_always_on_top(bool p_enabled); virtual bool is_window_always_on_top() const; + virtual bool is_window_focused() const; virtual void set_console_visible(bool p_enabled); virtual bool is_console_visible() const; virtual void request_attention(); diff --git a/platform/windows/platform_config.h b/platform/windows/platform_config.h index 8a4aab5c36..04653ee56c 100644 --- a/platform/windows/platform_config.h +++ b/platform/windows/platform_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/power_windows.cpp b/platform/windows/power_windows.cpp index 0efd88c216..aea06da413 100644 --- a/platform/windows/power_windows.cpp +++ b/platform/windows/power_windows.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/power_windows.h b/platform/windows/power_windows.h index ef75ce6271..80d86a12c5 100644 --- a/platform/windows/power_windows.h +++ b/platform/windows/power_windows.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/windows_terminal_logger.cpp b/platform/windows/windows_terminal_logger.cpp index adbdafb07e..8eb6adc27b 100644 --- a/platform/windows/windows_terminal_logger.cpp +++ b/platform/windows/windows_terminal_logger.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/windows/windows_terminal_logger.h b/platform/windows/windows_terminal_logger.h index 475e1f25ab..d4443a707d 100644 --- a/platform/windows/windows_terminal_logger.h +++ b/platform/windows/windows_terminal_logger.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/context_gl_x11.cpp b/platform/x11/context_gl_x11.cpp index d70b947fcc..3b88af28e4 100644 --- a/platform/x11/context_gl_x11.cpp +++ b/platform/x11/context_gl_x11.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/context_gl_x11.h b/platform/x11/context_gl_x11.h index 095ce2154b..5e5ccc5c86 100644 --- a/platform/x11/context_gl_x11.h +++ b/platform/x11/context_gl_x11.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/crash_handler_x11.cpp b/platform/x11/crash_handler_x11.cpp index ca7251078f..3a91c62546 100644 --- a/platform/x11/crash_handler_x11.cpp +++ b/platform/x11/crash_handler_x11.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/crash_handler_x11.h b/platform/x11/crash_handler_x11.h index d0664aef85..98620cc789 100644 --- a/platform/x11/crash_handler_x11.h +++ b/platform/x11/crash_handler_x11.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/detect_prime.cpp b/platform/x11/detect_prime.cpp index 26008feade..98a51ff27c 100644 --- a/platform/x11/detect_prime.cpp +++ b/platform/x11/detect_prime.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/detect_prime.h b/platform/x11/detect_prime.h index 13bcf6fc38..df636449f4 100644 --- a/platform/x11/detect_prime.h +++ b/platform/x11/detect_prime.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/export/export.cpp b/platform/x11/export/export.cpp index 6e66173463..1c0c6ec096 100644 --- a/platform/x11/export/export.cpp +++ b/platform/x11/export/export.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/export/export.h b/platform/x11/export/export.h index 61b9a77524..d94ea114a8 100644 --- a/platform/x11/export/export.h +++ b/platform/x11/export/export.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/godot_x11.cpp b/platform/x11/godot_x11.cpp index 755ef7a84f..77b74184ad 100644 --- a/platform/x11/godot_x11.cpp +++ b/platform/x11/godot_x11.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/joypad_linux.cpp b/platform/x11/joypad_linux.cpp index 4242952374..a64a25aeee 100644 --- a/platform/x11/joypad_linux.cpp +++ b/platform/x11/joypad_linux.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/joypad_linux.h b/platform/x11/joypad_linux.h index b5904ce90b..e5638899bf 100644 --- a/platform/x11/joypad_linux.h +++ b/platform/x11/joypad_linux.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/key_mapping_x11.cpp b/platform/x11/key_mapping_x11.cpp index 9b5dfa4793..54e1e1d357 100644 --- a/platform/x11/key_mapping_x11.cpp +++ b/platform/x11/key_mapping_x11.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/key_mapping_x11.h b/platform/x11/key_mapping_x11.h index 4e25d6a6ed..e99bf1694b 100644 --- a/platform/x11/key_mapping_x11.h +++ b/platform/x11/key_mapping_x11.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 54d3759cc5..2f0d49e6dd 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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); @@ -1689,6 +1684,10 @@ bool OS_X11::is_window_always_on_top() const { return current_videomode.always_on_top; } +bool OS_X11::is_window_focused() const { + return window_focused; +} + void OS_X11::set_borderless_window(bool p_borderless) { if (get_borderless_window() == p_borderless) @@ -2281,6 +2280,8 @@ void OS_X11::process_xevents() { minimized = false; window_has_focus = true; main_loop->notification(MainLoop::NOTIFICATION_WM_FOCUS_IN); + window_focused = true; + if (mouse_mode_grab) { // Show and update the cursor if confined and the window regained focus. if (mouse_mode == MOUSE_MODE_CONFINED) @@ -2308,6 +2309,7 @@ void OS_X11::process_xevents() { window_has_focus = false; input->release_pressed_events(); main_loop->notification(MainLoop::NOTIFICATION_WM_FOCUS_OUT); + window_focused = false; if (mouse_mode_grab) { //dear X11, I try, I really try, but you never work, you do whathever you want. @@ -3502,6 +3504,7 @@ OS_X11::OS_X11() { xi.last_relative_time = 0; layered_window = false; minimized = false; + window_focused = true; xim_style = 0L; mouse_mode = MOUSE_MODE_VISIBLE; } diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h index a5576f4402..01e5aac3df 100644 --- a/platform/x11/os_x11.h +++ b/platform/x11/os_x11.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; @@ -198,6 +195,7 @@ class OS_X11 : public OS_Unix { int video_driver_index; bool maximized; + bool window_focused; //void set_wm_border(bool p_enabled); void set_wm_fullscreen(bool p_enabled); void set_wm_above(bool p_enabled); @@ -287,6 +285,7 @@ public: virtual bool is_window_maximized() const; virtual void set_window_always_on_top(bool p_enabled); virtual bool is_window_always_on_top() const; + virtual bool is_window_focused() const; virtual void request_attention(); virtual void set_borderless_window(bool p_borderless); diff --git a/platform/x11/platform_config.h b/platform/x11/platform_config.h index 9e6011ddf7..c905ddb236 100644 --- a/platform/x11/platform_config.h +++ b/platform/x11/platform_config.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/power_x11.cpp b/platform/x11/power_x11.cpp index c33c77e16b..5ac5e8e87b 100644 --- a/platform/x11/power_x11.cpp +++ b/platform/x11/power_x11.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/x11/power_x11.h b/platform/x11/power_x11.h index 469e3910f4..76f20c68e8 100644 --- a/platform/x11/power_x11.h +++ b/platform/x11/power_x11.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/animated_sprite.cpp b/scene/2d/animated_sprite.cpp index 9d02408641..28a8c4d658 100644 --- a/scene/2d/animated_sprite.cpp +++ b/scene/2d/animated_sprite.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/animated_sprite.h b/scene/2d/animated_sprite.h index 3192d44678..2017c62a48 100644 --- a/scene/2d/animated_sprite.h +++ b/scene/2d/animated_sprite.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp index 66a1318cb7..8302ba5336 100644 --- a/scene/2d/area_2d.cpp +++ b/scene/2d/area_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/area_2d.h b/scene/2d/area_2d.h index 2d1527810e..6d9386c535 100644 --- a/scene/2d/area_2d.h +++ b/scene/2d/area_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp index 932af469d0..4f0f681a01 100644 --- a/scene/2d/audio_stream_player_2d.cpp +++ b/scene/2d/audio_stream_player_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/audio_stream_player_2d.h b/scene/2d/audio_stream_player_2d.h index ffa3d4edb4..86e931b3c6 100644 --- a/scene/2d/audio_stream_player_2d.h +++ b/scene/2d/audio_stream_player_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/back_buffer_copy.cpp b/scene/2d/back_buffer_copy.cpp index 4a4bc4410f..1a6f30e0fd 100644 --- a/scene/2d/back_buffer_copy.cpp +++ b/scene/2d/back_buffer_copy.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/back_buffer_copy.h b/scene/2d/back_buffer_copy.h index 52b0c016cc..91acd81e00 100644 --- a/scene/2d/back_buffer_copy.h +++ b/scene/2d/back_buffer_copy.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp index 3e8902314c..e9f8c5dff2 100644 --- a/scene/2d/camera_2d.cpp +++ b/scene/2d/camera_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/camera_2d.h b/scene/2d/camera_2d.h index bb3c76b30c..04b5260444 100644 --- a/scene/2d/camera_2d.h +++ b/scene/2d/camera_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp index fa23e3fd39..9895dba027 100644 --- a/scene/2d/canvas_item.cpp +++ b/scene/2d/canvas_item.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/canvas_item.h b/scene/2d/canvas_item.h index e51ee601e2..82645051e8 100644 --- a/scene/2d/canvas_item.h +++ b/scene/2d/canvas_item.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/canvas_modulate.cpp b/scene/2d/canvas_modulate.cpp index 009d664462..25db434918 100644 --- a/scene/2d/canvas_modulate.cpp +++ b/scene/2d/canvas_modulate.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/canvas_modulate.h b/scene/2d/canvas_modulate.h index 101abb4f00..ada6e27760 100644 --- a/scene/2d/canvas_modulate.h +++ b/scene/2d/canvas_modulate.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/collision_object_2d.cpp b/scene/2d/collision_object_2d.cpp index 9f79691405..3e9e63a7f0 100644 --- a/scene/2d/collision_object_2d.cpp +++ b/scene/2d/collision_object_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/collision_object_2d.h b/scene/2d/collision_object_2d.h index 0a9d33b8a6..8874f61bb7 100644 --- a/scene/2d/collision_object_2d.h +++ b/scene/2d/collision_object_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/collision_polygon_2d.cpp b/scene/2d/collision_polygon_2d.cpp index bb144dda96..3090c9956e 100644 --- a/scene/2d/collision_polygon_2d.cpp +++ b/scene/2d/collision_polygon_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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_polygon_2d.h b/scene/2d/collision_polygon_2d.h index b88679f15b..e5e18b2674 100644 --- a/scene/2d/collision_polygon_2d.h +++ b/scene/2d/collision_polygon_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/collision_shape_2d.cpp b/scene/2d/collision_shape_2d.cpp index f79d79d039..eace4c64fc 100644 --- a/scene/2d/collision_shape_2d.cpp +++ b/scene/2d/collision_shape_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/collision_shape_2d.h b/scene/2d/collision_shape_2d.h index 26c61f47bd..80bea0a979 100644 --- a/scene/2d/collision_shape_2d.h +++ b/scene/2d/collision_shape_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp index 372d8f614b..8296f35739 100644 --- a/scene/2d/cpu_particles_2d.cpp +++ b/scene/2d/cpu_particles_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/cpu_particles_2d.h b/scene/2d/cpu_particles_2d.h index 47b4568dd4..6ffa1f0e97 100644 --- a/scene/2d/cpu_particles_2d.h +++ b/scene/2d/cpu_particles_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/joints_2d.cpp b/scene/2d/joints_2d.cpp index 847d08b025..656ff45654 100644 --- a/scene/2d/joints_2d.cpp +++ b/scene/2d/joints_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/joints_2d.h b/scene/2d/joints_2d.h index a3951eb9d2..f1750e56b6 100644 --- a/scene/2d/joints_2d.h +++ b/scene/2d/joints_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp index 7b3eab175a..1843cbed67 100644 --- a/scene/2d/light_2d.cpp +++ b/scene/2d/light_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/light_2d.h b/scene/2d/light_2d.h index b1940f64cd..f8476e8389 100644 --- a/scene/2d/light_2d.h +++ b/scene/2d/light_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/light_occluder_2d.cpp b/scene/2d/light_occluder_2d.cpp index 313b23b9d4..6a930683d1 100644 --- a/scene/2d/light_occluder_2d.cpp +++ b/scene/2d/light_occluder_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/light_occluder_2d.h b/scene/2d/light_occluder_2d.h index 7931cd0b30..32d527093d 100644 --- a/scene/2d/light_occluder_2d.h +++ b/scene/2d/light_occluder_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/line_2d.cpp b/scene/2d/line_2d.cpp index ad405fabbb..4a022f0a9c 100644 --- a/scene/2d/line_2d.cpp +++ b/scene/2d/line_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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, true); // 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..bc2deba8c6 100644 --- a/scene/2d/line_2d.h +++ b/scene/2d/line_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/line_builder.cpp b/scene/2d/line_builder.cpp index 6436b3878f..3385f2fbe0 100644 --- a/scene/2d/line_builder.cpp +++ b/scene/2d/line_builder.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/line_builder.h b/scene/2d/line_builder.h index 91b4518f9b..9e3dbbd6c1 100644 --- a/scene/2d/line_builder.h +++ b/scene/2d/line_builder.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/mesh_instance_2d.cpp b/scene/2d/mesh_instance_2d.cpp index bcd4bca940..8f9c4e2a4d 100644 --- a/scene/2d/mesh_instance_2d.cpp +++ b/scene/2d/mesh_instance_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/mesh_instance_2d.h b/scene/2d/mesh_instance_2d.h index af552415ca..e7f8b7c0c3 100644 --- a/scene/2d/mesh_instance_2d.h +++ b/scene/2d/mesh_instance_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/multimesh_instance_2d.cpp b/scene/2d/multimesh_instance_2d.cpp index ca75302163..69d687229b 100644 --- a/scene/2d/multimesh_instance_2d.cpp +++ b/scene/2d/multimesh_instance_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/multimesh_instance_2d.h b/scene/2d/multimesh_instance_2d.h index 3795497183..253f4c77ca 100644 --- a/scene/2d/multimesh_instance_2d.h +++ b/scene/2d/multimesh_instance_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/navigation_2d.cpp b/scene/2d/navigation_2d.cpp index c7d2dabbae..9209cc5074 100644 --- a/scene/2d/navigation_2d.cpp +++ b/scene/2d/navigation_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/navigation_2d.h b/scene/2d/navigation_2d.h index b4d659ff5c..41b9aea35a 100644 --- a/scene/2d/navigation_2d.h +++ b/scene/2d/navigation_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/navigation_polygon.cpp b/scene/2d/navigation_polygon.cpp index 678db85ff0..bd930bdda5 100644 --- a/scene/2d/navigation_polygon.cpp +++ b/scene/2d/navigation_polygon.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/navigation_polygon.h b/scene/2d/navigation_polygon.h index ebbe67d949..9bbaa864f4 100644 --- a/scene/2d/navigation_polygon.h +++ b/scene/2d/navigation_polygon.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/node_2d.cpp b/scene/2d/node_2d.cpp index 336c8aa78e..ad04dc8d9e 100644 --- a/scene/2d/node_2d.cpp +++ b/scene/2d/node_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/node_2d.h b/scene/2d/node_2d.h index c07dc88720..a03ccc5a80 100644 --- a/scene/2d/node_2d.h +++ b/scene/2d/node_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/parallax_background.cpp b/scene/2d/parallax_background.cpp index 4ead1bbd1e..0d5f74a265 100644 --- a/scene/2d/parallax_background.cpp +++ b/scene/2d/parallax_background.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/parallax_background.h b/scene/2d/parallax_background.h index 38d59ac737..25ccd910d1 100644 --- a/scene/2d/parallax_background.h +++ b/scene/2d/parallax_background.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/parallax_layer.cpp b/scene/2d/parallax_layer.cpp index 0823e09110..5aea1025ef 100644 --- a/scene/2d/parallax_layer.cpp +++ b/scene/2d/parallax_layer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/parallax_layer.h b/scene/2d/parallax_layer.h index b5db111a38..ba59184649 100644 --- a/scene/2d/parallax_layer.h +++ b/scene/2d/parallax_layer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/particles_2d.cpp b/scene/2d/particles_2d.cpp index 0bf8237d37..746feeaa82 100644 --- a/scene/2d/particles_2d.cpp +++ b/scene/2d/particles_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/particles_2d.h b/scene/2d/particles_2d.h index 0276978f83..56c328fc38 100644 --- a/scene/2d/particles_2d.h +++ b/scene/2d/particles_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/path_2d.cpp b/scene/2d/path_2d.cpp index 55c8c7f229..e6ae95af89 100644 --- a/scene/2d/path_2d.cpp +++ b/scene/2d/path_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -173,16 +173,10 @@ void PathFollow2D::_update_transform() { if (path_length == 0) { return; } - float bounded_offset = offset; - if (loop) - bounded_offset = Math::fposmod(bounded_offset, path_length); - else - bounded_offset = CLAMP(bounded_offset, 0, path_length); - - Vector2 pos = c->interpolate_baked(bounded_offset, cubic); + Vector2 pos = c->interpolate_baked(offset, cubic); if (rotate) { - float ahead = bounded_offset + lookahead; + float ahead = offset + lookahead; if (loop && ahead >= path_length) { // If our lookahead will loop, we need to check if the path is closed. @@ -206,7 +200,7 @@ void PathFollow2D::_update_transform() { // This will happen at the end of non-looping or non-closed paths. // We'll try a look behind instead, in order to get a meaningful angle. tangent_to_curve = - (pos - c->interpolate_baked(bounded_offset - lookahead, cubic)).normalized(); + (pos - c->interpolate_baked(offset - lookahead, cubic)).normalized(); } else { tangent_to_curve = (ahead_pos - pos).normalized(); } diff --git a/scene/2d/path_2d.h b/scene/2d/path_2d.h index 4efad19938..21cb4374bd 100644 --- a/scene/2d/path_2d.h +++ b/scene/2d/path_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/path_texture.cpp b/scene/2d/path_texture.cpp index 3de2079ebe..df59c9e2bb 100644 --- a/scene/2d/path_texture.cpp +++ b/scene/2d/path_texture.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/path_texture.h b/scene/2d/path_texture.h index 313aa772c4..9cfa004cfb 100644 --- a/scene/2d/path_texture.h +++ b/scene/2d/path_texture.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp index 3a4f397fe0..3fd0bef7e9 100644 --- a/scene/2d/physics_body_2d.cpp +++ b/scene/2d/physics_body_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/physics_body_2d.h b/scene/2d/physics_body_2d.h index 66e5ce250f..7f2b42b554 100644 --- a/scene/2d/physics_body_2d.h +++ b/scene/2d/physics_body_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp index 5e14959e9d..7b03193fe0 100644 --- a/scene/2d/polygon_2d.cpp +++ b/scene/2d/polygon_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/polygon_2d.h b/scene/2d/polygon_2d.h index f25b3885b0..84ad221760 100644 --- a/scene/2d/polygon_2d.h +++ b/scene/2d/polygon_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/position_2d.cpp b/scene/2d/position_2d.cpp index e37407ceb3..49ef92b861 100644 --- a/scene/2d/position_2d.cpp +++ b/scene/2d/position_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/position_2d.h b/scene/2d/position_2d.h index f5ec3ef01a..711c4ec02f 100644 --- a/scene/2d/position_2d.h +++ b/scene/2d/position_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/ray_cast_2d.cpp b/scene/2d/ray_cast_2d.cpp index bf8d008bb2..5098d5115a 100644 --- a/scene/2d/ray_cast_2d.cpp +++ b/scene/2d/ray_cast_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/ray_cast_2d.h b/scene/2d/ray_cast_2d.h index f53f3ff07b..20f05e7525 100644 --- a/scene/2d/ray_cast_2d.h +++ b/scene/2d/ray_cast_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/remote_transform_2d.cpp b/scene/2d/remote_transform_2d.cpp index fe8cc5a5fc..53072f942d 100644 --- a/scene/2d/remote_transform_2d.cpp +++ b/scene/2d/remote_transform_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/remote_transform_2d.h b/scene/2d/remote_transform_2d.h index e85fe33fc6..f5b949d10b 100644 --- a/scene/2d/remote_transform_2d.h +++ b/scene/2d/remote_transform_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/skeleton_2d.cpp b/scene/2d/skeleton_2d.cpp index bf43fca864..6f64464cc9 100644 --- a/scene/2d/skeleton_2d.cpp +++ b/scene/2d/skeleton_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/skeleton_2d.h b/scene/2d/skeleton_2d.h index 0f48b44387..c6bee8d92b 100644 --- a/scene/2d/skeleton_2d.h +++ b/scene/2d/skeleton_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/sprite.cpp b/scene/2d/sprite.cpp index 8cdfceea52..837444532c 100644 --- a/scene/2d/sprite.cpp +++ b/scene/2d/sprite.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/2d/sprite.h b/scene/2d/sprite.h index d3c0112e62..2fd97f6611 100644 --- a/scene/2d/sprite.h +++ b/scene/2d/sprite.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp index d75d8cfc55..04ec13e415 100644 --- a/scene/2d/tile_map.cpp +++ b/scene/2d/tile_map.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h index e30b7eff83..53bb696ba2 100644 --- a/scene/2d/tile_map.h +++ b/scene/2d/tile_map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/touch_screen_button.cpp b/scene/2d/touch_screen_button.cpp index 9a1a759e72..f6a888fa09 100644 --- a/scene/2d/touch_screen_button.cpp +++ b/scene/2d/touch_screen_button.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/touch_screen_button.h b/scene/2d/touch_screen_button.h index df54e5340b..9c9fc6125a 100644 --- a/scene/2d/touch_screen_button.h +++ b/scene/2d/touch_screen_button.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/visibility_notifier_2d.cpp b/scene/2d/visibility_notifier_2d.cpp index a1d074e6cd..223e57f39f 100644 --- a/scene/2d/visibility_notifier_2d.cpp +++ b/scene/2d/visibility_notifier_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -319,8 +319,6 @@ void VisibilityEnabler2D::_node_removed(Node *p_node) { if (!visible) _change_node_state(p_node, true); - //changed to one shot, not needed - //p_node->disconnect(SceneStringNames::get_singleton()->exit_scene,this,"_node_removed"); nodes.erase(p_node); } diff --git a/scene/2d/visibility_notifier_2d.h b/scene/2d/visibility_notifier_2d.h index 259368455b..f9d4c238eb 100644 --- a/scene/2d/visibility_notifier_2d.h +++ b/scene/2d/visibility_notifier_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/y_sort.cpp b/scene/2d/y_sort.cpp index d7e523e189..62f10a5c96 100644 --- a/scene/2d/y_sort.cpp +++ b/scene/2d/y_sort.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/2d/y_sort.h b/scene/2d/y_sort.h index 1bf757720e..62787d6744 100644 --- a/scene/2d/y_sort.h +++ b/scene/2d/y_sort.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/area.cpp b/scene/3d/area.cpp index 77682abcb3..67f57a1aa3 100644 --- a/scene/3d/area.cpp +++ b/scene/3d/area.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/area.h b/scene/3d/area.h index 043d651e04..ca66f41f60 100644 --- a/scene/3d/area.h +++ b/scene/3d/area.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/arvr_nodes.cpp b/scene/3d/arvr_nodes.cpp index 4c0449b68e..82293268b9 100644 --- a/scene/3d/arvr_nodes.cpp +++ b/scene/3d/arvr_nodes.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/arvr_nodes.h b/scene/3d/arvr_nodes.h index b647df70aa..44dfda15a6 100644 --- a/scene/3d/arvr_nodes.h +++ b/scene/3d/arvr_nodes.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp index 05ae281cc1..596ef78fb5 100644 --- a/scene/3d/audio_stream_player_3d.cpp +++ b/scene/3d/audio_stream_player_3d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/audio_stream_player_3d.h b/scene/3d/audio_stream_player_3d.h index 494aa70097..5b4c865475 100644 --- a/scene/3d/audio_stream_player_3d.h +++ b/scene/3d/audio_stream_player_3d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/baked_lightmap.cpp b/scene/3d/baked_lightmap.cpp index 4b1eccb40d..2234304e79 100644 --- a/scene/3d/baked_lightmap.cpp +++ b/scene/3d/baked_lightmap.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/baked_lightmap.h b/scene/3d/baked_lightmap.h index 3a9f4cf01d..82354cc9f0 100644 --- a/scene/3d/baked_lightmap.h +++ b/scene/3d/baked_lightmap.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/bone_attachment.cpp b/scene/3d/bone_attachment.cpp index 0233029435..e94e174b92 100644 --- a/scene/3d/bone_attachment.cpp +++ b/scene/3d/bone_attachment.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/bone_attachment.h b/scene/3d/bone_attachment.h index 051e2b4c56..43c46dd759 100644 --- a/scene/3d/bone_attachment.h +++ b/scene/3d/bone_attachment.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp index 4d9bb69778..289dc0ba07 100644 --- a/scene/3d/camera.cpp +++ b/scene/3d/camera.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -390,10 +390,9 @@ Vector3 Camera::project_position(const Point2 &p_point, float p_z_depth) const { ERR_FAIL_COND_V_MSG(!is_inside_tree(), Vector3(), "Camera is not inside scene."); - if (p_z_depth == 0) { + if (p_z_depth == 0 && mode != PROJECTION_ORTHOGONAL) { return get_global_transform().origin; } - Size2 viewport_size = get_viewport()->get_visible_rect().size; CameraMatrix cm; @@ -583,12 +582,14 @@ Camera::Projection Camera::get_projection() const { } void Camera::set_fov(float p_fov) { + ERR_FAIL_COND(p_fov < 1 || p_fov > 179); fov = p_fov; _update_camera_mode(); _change_notify("fov"); } void Camera::set_size(float p_size) { + ERR_FAIL_COND(p_size < 0.1 || p_size > 16384); size = p_size; _update_camera_mode(); _change_notify("size"); diff --git a/scene/3d/camera.h b/scene/3d/camera.h index d81e097fc5..e215783a58 100644 --- a/scene/3d/camera.h +++ b/scene/3d/camera.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/collision_object.cpp b/scene/3d/collision_object.cpp index 735b393171..c067ef34a6 100644 --- a/scene/3d/collision_object.cpp +++ b/scene/3d/collision_object.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/collision_object.h b/scene/3d/collision_object.h index 90f370b6d4..572e73d51b 100644 --- a/scene/3d/collision_object.h +++ b/scene/3d/collision_object.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/collision_polygon.cpp b/scene/3d/collision_polygon.cpp index 37aa95fb43..cc07072962 100644 --- a/scene/3d/collision_polygon.cpp +++ b/scene/3d/collision_polygon.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/collision_polygon.h b/scene/3d/collision_polygon.h index 04c00fc70f..9ecdc02697 100644 --- a/scene/3d/collision_polygon.h +++ b/scene/3d/collision_polygon.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/collision_shape.cpp b/scene/3d/collision_shape.cpp index 2b030641eb..bf2816fd41 100644 --- a/scene/3d/collision_shape.cpp +++ b/scene/3d/collision_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/collision_shape.h b/scene/3d/collision_shape.h index 98427b8590..3150a41ebf 100644 --- a/scene/3d/collision_shape.h +++ b/scene/3d/collision_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/cpu_particles.cpp b/scene/3d/cpu_particles.cpp index 86daabefd2..0ac424b09e 100644 --- a/scene/3d/cpu_particles.cpp +++ b/scene/3d/cpu_particles.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/cpu_particles.h b/scene/3d/cpu_particles.h index 635265be7f..18f9718e70 100644 --- a/scene/3d/cpu_particles.h +++ b/scene/3d/cpu_particles.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/gi_probe.cpp b/scene/3d/gi_probe.cpp index ce7bb25665..99bc78f5d2 100644 --- a/scene/3d/gi_probe.cpp +++ b/scene/3d/gi_probe.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/gi_probe.h b/scene/3d/gi_probe.h index 4badabbadf..7c58f862e4 100644 --- a/scene/3d/gi_probe.h +++ b/scene/3d/gi_probe.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/immediate_geometry.cpp b/scene/3d/immediate_geometry.cpp index a555106bd8..0a1beaf3f4 100644 --- a/scene/3d/immediate_geometry.cpp +++ b/scene/3d/immediate_geometry.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/immediate_geometry.h b/scene/3d/immediate_geometry.h index 3467663dff..f45ebd6724 100644 --- a/scene/3d/immediate_geometry.h +++ b/scene/3d/immediate_geometry.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/interpolated_camera.cpp b/scene/3d/interpolated_camera.cpp index d720dd117c..baf5ac4be6 100644 --- a/scene/3d/interpolated_camera.cpp +++ b/scene/3d/interpolated_camera.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/interpolated_camera.h b/scene/3d/interpolated_camera.h index 97100c9501..7b160c66fa 100644 --- a/scene/3d/interpolated_camera.h +++ b/scene/3d/interpolated_camera.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/light.cpp b/scene/3d/light.cpp index 85ee925248..593d0b95b7 100644 --- a/scene/3d/light.cpp +++ b/scene/3d/light.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -103,6 +103,8 @@ void Light::set_color(const Color &p_color) { color = p_color; VS::get_singleton()->light_set_color(light, p_color); + // The gizmo color depends on the light color, so update it. + update_gizmo(); } Color Light::get_color() const { diff --git a/scene/3d/light.h b/scene/3d/light.h index cc8675ead1..272ee8d7a9 100644 --- a/scene/3d/light.h +++ b/scene/3d/light.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/listener.cpp b/scene/3d/listener.cpp index 85e65e23f2..2779d14b57 100644 --- a/scene/3d/listener.cpp +++ b/scene/3d/listener.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/listener.h b/scene/3d/listener.h index 86451e7d99..287e67f31e 100644 --- a/scene/3d/listener.h +++ b/scene/3d/listener.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/mesh_instance.cpp b/scene/3d/mesh_instance.cpp index 50ca466df3..e14fa9e9af 100644 --- a/scene/3d/mesh_instance.cpp +++ b/scene/3d/mesh_instance.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..fd5f60a5d7 100644 --- a/scene/3d/mesh_instance.h +++ b/scene/3d/mesh_instance.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/multimesh_instance.cpp b/scene/3d/multimesh_instance.cpp index d744a74859..245dbdaf58 100644 --- a/scene/3d/multimesh_instance.cpp +++ b/scene/3d/multimesh_instance.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/multimesh_instance.h b/scene/3d/multimesh_instance.h index ca69c73251..855bd54910 100644 --- a/scene/3d/multimesh_instance.h +++ b/scene/3d/multimesh_instance.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/navigation.cpp b/scene/3d/navigation.cpp index ba0460d47c..4a82fe0080 100644 --- a/scene/3d/navigation.cpp +++ b/scene/3d/navigation.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/navigation.h b/scene/3d/navigation.h index f920d1d7f6..31dbc9d4b5 100644 --- a/scene/3d/navigation.h +++ b/scene/3d/navigation.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/navigation_mesh.cpp b/scene/3d/navigation_mesh.cpp index 496dc4b411..aaba91125e 100644 --- a/scene/3d/navigation_mesh.cpp +++ b/scene/3d/navigation_mesh.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/navigation_mesh.h b/scene/3d/navigation_mesh.h index d5de653e40..f9ab911bea 100644 --- a/scene/3d/navigation_mesh.h +++ b/scene/3d/navigation_mesh.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/particles.cpp b/scene/3d/particles.cpp index 06b5613eb8..add563d991 100644 --- a/scene/3d/particles.cpp +++ b/scene/3d/particles.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/particles.h b/scene/3d/particles.h index 391491e8b8..69be7da29a 100644 --- a/scene/3d/particles.h +++ b/scene/3d/particles.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/path.cpp b/scene/3d/path.cpp index d55c795d38..3ed0677480 100644 --- a/scene/3d/path.cpp +++ b/scene/3d/path.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -111,18 +111,15 @@ void PathFollow::_update_transform() { return; } float bi = c->get_bake_interval(); - float o = offset; float o_next = offset + bi; if (loop) { - o = Math::fposmod(o, bl); o_next = Math::fposmod(o_next, bl); } else if (rotation_mode == ROTATION_ORIENTED && o_next >= bl) { - o = bl - bi; o_next = bl; } - Vector3 pos = c->interpolate_baked(o, cubic); + Vector3 pos = c->interpolate_baked(offset, cubic); Transform t = get_transform(); // Vector3 pos_offset = Vector3(h_offset, v_offset, 0); not used in all cases // will be replaced by "Vector3(h_offset, v_offset, 0)" where it was formerly used @@ -136,9 +133,9 @@ void PathFollow::_update_transform() { else forward.normalize(); - Vector3 up = c->interpolate_baked_up_vector(o, true); + Vector3 up = c->interpolate_baked_up_vector(offset, true); - if (o_next < o) { + if (o_next < offset) { Vector3 up1 = c->interpolate_baked_up_vector(o_next, true); Vector3 axis = up.cross(up1); @@ -166,8 +163,8 @@ void PathFollow::_update_transform() { t.origin = pos; - Vector3 t_prev = (pos - c->interpolate_baked(o - delta_offset, cubic)).normalized(); - Vector3 t_cur = (c->interpolate_baked(o + delta_offset, cubic) - pos).normalized(); + Vector3 t_prev = (pos - c->interpolate_baked(offset - delta_offset, cubic)).normalized(); + Vector3 t_cur = (c->interpolate_baked(offset + delta_offset, cubic) - pos).normalized(); Vector3 axis = t_prev.cross(t_cur); float dot = t_prev.dot(t_cur); @@ -190,7 +187,7 @@ void PathFollow::_update_transform() { } // do the additional tilting - float tilt_angle = c->interpolate_baked_tilt(o); + float tilt_angle = c->interpolate_baked_tilt(offset); Vector3 tilt_axis = t_cur; // not sure what tilt is supposed to do, is this correct?? if (likely(!Math::is_zero_approx(Math::abs(tilt_angle)))) { @@ -256,7 +253,7 @@ void PathFollow::_validate_property(PropertyInfo &property) const { if (path && path->get_curve().is_valid()) max = path->get_curve()->get_baked_length(); - property.hint_string = "0," + rtos(max) + ",0.01,or_greater"; + property.hint_string = "0," + rtos(max) + ",0.01,or_lesser"; } } @@ -300,8 +297,8 @@ void PathFollow::_bind_methods() { ClassDB::bind_method(D_METHOD("set_loop", "loop"), &PathFollow::set_loop); ClassDB::bind_method(D_METHOD("has_loop"), &PathFollow::has_loop); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0,10000,0.01,or_greater"), "set_offset", "get_offset"); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001,or_greater", PROPERTY_USAGE_EDITOR), "set_unit_offset", "get_unit_offset"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0,10000,0.01,or_lesser"), "set_offset", "get_offset"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001,or_lesser", PROPERTY_USAGE_EDITOR), "set_unit_offset", "get_unit_offset"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "h_offset"), "set_h_offset", "get_h_offset"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_offset"), "set_v_offset", "get_v_offset"); ADD_PROPERTY(PropertyInfo(Variant::INT, "rotation_mode", PROPERTY_HINT_ENUM, "None,Y,XY,XYZ,Oriented"), "set_rotation_mode", "get_rotation_mode"); @@ -319,8 +316,24 @@ void PathFollow::set_offset(float p_offset) { delta_offset = p_offset - offset; offset = p_offset; - if (path) + if (path) { + if (path->get_curve().is_valid() && path->get_curve()->get_baked_length()) { + float path_length = path->get_curve()->get_baked_length(); + + if (loop) { + while (offset > path_length) + offset -= path_length; + + while (offset < 0) + offset += path_length; + + } else { + offset = CLAMP(offset, 0, path_length); + } + } + _update_transform(); + } _change_notify("offset"); _change_notify("unit_offset"); } diff --git a/scene/3d/path.h b/scene/3d/path.h index 2a12c4a826..497913b925 100644 --- a/scene/3d/path.h +++ b/scene/3d/path.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp index a107c3bf7a..c2860c25d8 100644 --- a/scene/3d/physics_body.cpp +++ b/scene/3d/physics_body.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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,25 @@ 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; } } // 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 = (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 +1187,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 +1198,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 +1212,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 +1229,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 +1545,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 +2159,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 +2170,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 +2215,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..06b31804b2 100644 --- a/scene/3d/physics_body.h +++ b/scene/3d/physics_body.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/physics_joint.cpp b/scene/3d/physics_joint.cpp index c261ed3aeb..eacc6bcc0f 100644 --- a/scene/3d/physics_joint.cpp +++ b/scene/3d/physics_joint.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/physics_joint.h b/scene/3d/physics_joint.h index f6df920314..d03dbac392 100644 --- a/scene/3d/physics_joint.h +++ b/scene/3d/physics_joint.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/portal.cpp b/scene/3d/portal.cpp index f5163dfcdd..e60ca619dd 100644 --- a/scene/3d/portal.cpp +++ b/scene/3d/portal.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/portal.h b/scene/3d/portal.h index 04af3a750c..7e8b016e79 100644 --- a/scene/3d/portal.h +++ b/scene/3d/portal.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/position_3d.cpp b/scene/3d/position_3d.cpp index 18de105eee..e63c588e28 100644 --- a/scene/3d/position_3d.cpp +++ b/scene/3d/position_3d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/position_3d.h b/scene/3d/position_3d.h index 21361592d1..cd5080c95a 100644 --- a/scene/3d/position_3d.h +++ b/scene/3d/position_3d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/proximity_group.cpp b/scene/3d/proximity_group.cpp index 96dc3304f2..2e1478b1cf 100644 --- a/scene/3d/proximity_group.cpp +++ b/scene/3d/proximity_group.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/proximity_group.h b/scene/3d/proximity_group.h index bd11e31031..9ff8853178 100644 --- a/scene/3d/proximity_group.h +++ b/scene/3d/proximity_group.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/ray_cast.cpp b/scene/3d/ray_cast.cpp index 30eed8f1a7..fbe3cd7a3e 100644 --- a/scene/3d/ray_cast.cpp +++ b/scene/3d/ray_cast.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/ray_cast.h b/scene/3d/ray_cast.h index 43d55adb98..5cebfe3ac2 100644 --- a/scene/3d/ray_cast.h +++ b/scene/3d/ray_cast.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/reflection_probe.cpp b/scene/3d/reflection_probe.cpp index c34771d9f1..2a5a84741f 100644 --- a/scene/3d/reflection_probe.cpp +++ b/scene/3d/reflection_probe.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/reflection_probe.h b/scene/3d/reflection_probe.h index 48d65b79f7..28ca680e9f 100644 --- a/scene/3d/reflection_probe.h +++ b/scene/3d/reflection_probe.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/remote_transform.cpp b/scene/3d/remote_transform.cpp index 76b0b0c92f..983af7a9ec 100644 --- a/scene/3d/remote_transform.cpp +++ b/scene/3d/remote_transform.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/remote_transform.h b/scene/3d/remote_transform.h index 07e01284e5..02e448832f 100644 --- a/scene/3d/remote_transform.h +++ b/scene/3d/remote_transform.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/room_instance.cpp b/scene/3d/room_instance.cpp index 073fe4f1da..61687360a6 100644 --- a/scene/3d/room_instance.cpp +++ b/scene/3d/room_instance.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/room_instance.h b/scene/3d/room_instance.h index 01efde53c9..071d42cff2 100644 --- a/scene/3d/room_instance.h +++ b/scene/3d/room_instance.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/skeleton.cpp b/scene/3d/skeleton.cpp index ae79b4eebf..5edce284b5 100644 --- a/scene/3d/skeleton.cpp +++ b/scene/3d/skeleton.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/skeleton.h b/scene/3d/skeleton.h index 824d9567fa..056f70e22b 100644 --- a/scene/3d/skeleton.h +++ b/scene/3d/skeleton.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/soft_body.cpp b/scene/3d/soft_body.cpp index 6883da7f6d..ef13985bf4 100644 --- a/scene/3d/soft_body.cpp +++ b/scene/3d/soft_body.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/soft_body.h b/scene/3d/soft_body.h index ee455f8dab..629c2e42a5 100644 --- a/scene/3d/soft_body.h +++ b/scene/3d/soft_body.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/spatial.cpp b/scene/3d/spatial.cpp index 9a659ef4af..b7cd2114db 100644 --- a/scene/3d/spatial.cpp +++ b/scene/3d/spatial.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/spatial.h b/scene/3d/spatial.h index eea2696767..9d4705700b 100644 --- a/scene/3d/spatial.h +++ b/scene/3d/spatial.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/spatial_velocity_tracker.cpp b/scene/3d/spatial_velocity_tracker.cpp index 97517be53b..ec1bb1f991 100644 --- a/scene/3d/spatial_velocity_tracker.cpp +++ b/scene/3d/spatial_velocity_tracker.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/spatial_velocity_tracker.h b/scene/3d/spatial_velocity_tracker.h index 8260cf3f06..92b527b93c 100644 --- a/scene/3d/spatial_velocity_tracker.h +++ b/scene/3d/spatial_velocity_tracker.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/spring_arm.cpp b/scene/3d/spring_arm.cpp index f3665d251b..bce0535d64 100644 --- a/scene/3d/spring_arm.cpp +++ b/scene/3d/spring_arm.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/spring_arm.h b/scene/3d/spring_arm.h index 35df56f06e..1a12370564 100644 --- a/scene/3d/spring_arm.h +++ b/scene/3d/spring_arm.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp index adcd80b0ab..a4c81b864d 100644 --- a/scene/3d/sprite_3d.cpp +++ b/scene/3d/sprite_3d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/sprite_3d.h b/scene/3d/sprite_3d.h index 065931de84..ddbade147c 100644 --- a/scene/3d/sprite_3d.h +++ b/scene/3d/sprite_3d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/vehicle_body.cpp b/scene/3d/vehicle_body.cpp index 98e68cfbda..92b17d5056 100644 --- a/scene/3d/vehicle_body.cpp +++ b/scene/3d/vehicle_body.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/vehicle_body.h b/scene/3d/vehicle_body.h index 914bfd54bd..c05ea30f94 100644 --- a/scene/3d/vehicle_body.h +++ b/scene/3d/vehicle_body.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/visibility_notifier.cpp b/scene/3d/visibility_notifier.cpp index 3014432d59..510442dc1c 100644 --- a/scene/3d/visibility_notifier.cpp +++ b/scene/3d/visibility_notifier.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -240,7 +240,6 @@ void VisibilityEnabler::_node_removed(Node *p_node) { if (!visible) _change_node_state(p_node, true); - p_node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed"); nodes.erase(p_node); } diff --git a/scene/3d/visibility_notifier.h b/scene/3d/visibility_notifier.h index ff4424300c..71fdfdb78c 100644 --- a/scene/3d/visibility_notifier.h +++ b/scene/3d/visibility_notifier.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/visual_instance.cpp b/scene/3d/visual_instance.cpp index d1de0c56a7..4574dfac5f 100644 --- a/scene/3d/visual_instance.cpp +++ b/scene/3d/visual_instance.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/visual_instance.h b/scene/3d/visual_instance.h index 63d15680aa..f115748952 100644 --- a/scene/3d/visual_instance.h +++ b/scene/3d/visual_instance.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/voxel_light_baker.cpp b/scene/3d/voxel_light_baker.cpp index 8e09930aed..9970b9350f 100644 --- a/scene/3d/voxel_light_baker.cpp +++ b/scene/3d/voxel_light_baker.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/3d/voxel_light_baker.h b/scene/3d/voxel_light_baker.h index 2e2efc62ff..7e78a19830 100644 --- a/scene/3d/voxel_light_baker.h +++ b/scene/3d/voxel_light_baker.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/world_environment.cpp b/scene/3d/world_environment.cpp index 8d46b4161d..c8d7382e81 100644 --- a/scene/3d/world_environment.cpp +++ b/scene/3d/world_environment.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/3d/world_environment.h b/scene/3d/world_environment.h index 656e16371f..6e89fe8517 100644 --- a/scene/3d/world_environment.h +++ b/scene/3d/world_environment.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_blend_space_1d.cpp b/scene/animation/animation_blend_space_1d.cpp index 7fe544eaab..0f55682427 100644 --- a/scene/animation/animation_blend_space_1d.cpp +++ b/scene/animation/animation_blend_space_1d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_blend_space_1d.h b/scene/animation/animation_blend_space_1d.h index 2e2d848450..da3608e06d 100644 --- a/scene/animation/animation_blend_space_1d.h +++ b/scene/animation/animation_blend_space_1d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_blend_space_2d.cpp b/scene/animation/animation_blend_space_2d.cpp index b04eefbe31..d749959377 100644 --- a/scene/animation/animation_blend_space_2d.cpp +++ b/scene/animation/animation_blend_space_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_blend_space_2d.h b/scene/animation/animation_blend_space_2d.h index 66ba9b0db7..7d197ef920 100644 --- a/scene/animation/animation_blend_space_2d.h +++ b/scene/animation/animation_blend_space_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_blend_tree.cpp b/scene/animation/animation_blend_tree.cpp index 6f67d01a1c..a604fb9604 100644 --- a/scene/animation/animation_blend_tree.cpp +++ b/scene/animation/animation_blend_tree.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_blend_tree.h b/scene/animation/animation_blend_tree.h index a6ef78d82e..7ebe3f5444 100644 --- a/scene/animation/animation_blend_tree.h +++ b/scene/animation/animation_blend_tree.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_cache.cpp b/scene/animation/animation_cache.cpp index 5956609244..8d1ffb43cc 100644 --- a/scene/animation/animation_cache.cpp +++ b/scene/animation/animation_cache.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_cache.h b/scene/animation/animation_cache.h index ac668b7796..26ad9dfee5 100644 --- a/scene/animation/animation_cache.h +++ b/scene/animation/animation_cache.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_node_state_machine.cpp b/scene/animation/animation_node_state_machine.cpp index 65bf1e0134..59d0d9e87f 100644 --- a/scene/animation/animation_node_state_machine.cpp +++ b/scene/animation/animation_node_state_machine.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -312,27 +312,36 @@ float AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_st bool play_start = false; if (start_request != StringName()) { - if (start_request_travel) { if (!playing) { - String node_name = start_request; - start_request = StringName(); - ERR_FAIL_V_MSG(0, "Can't travel to '" + node_name + "' if state machine is not playing."); - } - - if (!_travel(p_state_machine, start_request)) { - //can't travel, then teleport - path.clear(); - current = start_request; + if (!stop_request && p_state_machine->start_node) { + // can restart, just postpone traveling + path.clear(); + current = p_state_machine->start_node; + playing = true; + play_start = true; + } else { + // stopped, invalid state + String node_name = start_request; + start_request = StringName(); //clear start request + ERR_FAIL_V_MSG(0, "Can't travel to '" + node_name + "' if state machine is not playing."); + } + } else { + if (!_travel(p_state_machine, start_request)) { + // can't travel, then teleport + path.clear(); + current = start_request; + } + start_request = StringName(); //clear start request } } else { + // teleport to start path.clear(); current = start_request; playing = true; play_start = true; + start_request = StringName(); //clear start request } - - start_request = StringName(); //clear start request } bool do_start = (p_seek && p_time == 0) || play_start || current == StringName(); diff --git a/scene/animation/animation_node_state_machine.h b/scene/animation/animation_node_state_machine.h index 26909a326e..55c9c3f00e 100644 --- a/scene/animation/animation_node_state_machine.h +++ b/scene/animation/animation_node_state_machine.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp index f9bf129b59..2bc9336b14 100644 --- a/scene/animation/animation_player.cpp +++ b/scene/animation/animation_player.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h index 320fd2084c..06f762e63e 100644 --- a/scene/animation/animation_player.h +++ b/scene/animation/animation_player.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp index eb152bc41e..8b2d8861e7 100644 --- a/scene/animation/animation_tree.cpp +++ b/scene/animation/animation_tree.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_tree.h b/scene/animation/animation_tree.h index e22d6e4c2d..0a8dc8109f 100644 --- a/scene/animation/animation_tree.h +++ b/scene/animation/animation_tree.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp index ba5936562a..c7362391dc 100644 --- a/scene/animation/animation_tree_player.cpp +++ b/scene/animation/animation_tree_player.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/animation_tree_player.h b/scene/animation/animation_tree_player.h index 9ec6325969..e1f6ce7b9c 100644 --- a/scene/animation/animation_tree_player.h +++ b/scene/animation/animation_tree_player.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/root_motion_view.cpp b/scene/animation/root_motion_view.cpp index 646a39d063..32ceeb4dbf 100644 --- a/scene/animation/root_motion_view.cpp +++ b/scene/animation/root_motion_view.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/root_motion_view.h b/scene/animation/root_motion_view.h index b30b06229e..0a255cb5d2 100644 --- a/scene/animation/root_motion_view.h +++ b/scene/animation/root_motion_view.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/skeleton_ik.cpp b/scene/animation/skeleton_ik.cpp index 4ec22cf3df..99a266af0d 100644 --- a/scene/animation/skeleton_ik.cpp +++ b/scene/animation/skeleton_ik.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/skeleton_ik.h b/scene/animation/skeleton_ik.h index d2c5f56ace..9ae010dc4e 100644 --- a/scene/animation/skeleton_ik.h +++ b/scene/animation/skeleton_ik.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp index ce3f2b3b1a..58212335c2 100644 --- a/scene/animation/tween.cpp +++ b/scene/animation/tween.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..f1218cd698 100644 --- a/scene/animation/tween.h +++ b/scene/animation/tween.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/audio/audio_stream_player.cpp b/scene/audio/audio_stream_player.cpp index c053fceb74..3a0169f065 100644 --- a/scene/audio/audio_stream_player.cpp +++ b/scene/audio/audio_stream_player.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/audio/audio_stream_player.h b/scene/audio/audio_stream_player.h index ab9161c798..0f6d855d0e 100644 --- a/scene/audio/audio_stream_player.h +++ b/scene/audio/audio_stream_player.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/debugger/script_debugger_remote.cpp b/scene/debugger/script_debugger_remote.cpp index c3c6a088cb..04d04ceb66 100644 --- a/scene/debugger/script_debugger_remote.cpp +++ b/scene/debugger/script_debugger_remote.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/debugger/script_debugger_remote.h b/scene/debugger/script_debugger_remote.h index 13ad7ddbe3..2c0dccdaf7 100644 --- a/scene/debugger/script_debugger_remote.h +++ b/scene/debugger/script_debugger_remote.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp index 4f71481280..65912c1c07 100644 --- a/scene/gui/base_button.cpp +++ b/scene/gui/base_button.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -171,9 +171,17 @@ void BaseButton::on_action_event(Ref<InputEvent> p_event) { } } - if (!p_event->is_pressed()) { // pressed state should be correct with button_up signal + if (!p_event->is_pressed()) { + Ref<InputEventMouseButton> mouse_button = p_event; + if (mouse_button.is_valid()) { + if (!has_point(mouse_button->get_position())) { + status.hovering = false; + } + } + // pressed state should be correct with button_up signal emit_signal("button_up"); status.press_attempt = false; + status.pressing_inside = false; } update(); diff --git a/scene/gui/base_button.h b/scene/gui/base_button.h index 2773f024df..21757488a6 100644 --- a/scene/gui/base_button.h +++ b/scene/gui/base_button.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/box_container.cpp b/scene/gui/box_container.cpp index b7d2131ee9..24312af1b5 100644 --- a/scene/gui/box_container.cpp +++ b/scene/gui/box_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/box_container.h b/scene/gui/box_container.h index 89924f7fcb..0d7deda364 100644 --- a/scene/gui/box_container.h +++ b/scene/gui/box_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp index ca4c255855..6f3d8c61cf 100644 --- a/scene/gui/button.cpp +++ b/scene/gui/button.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/button.h b/scene/gui/button.h index 1fff2cfda7..e975dc52a5 100644 --- a/scene/gui/button.h +++ b/scene/gui/button.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/center_container.cpp b/scene/gui/center_container.cpp index 7c842999d1..9f4353ceb6 100644 --- a/scene/gui/center_container.cpp +++ b/scene/gui/center_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/center_container.h b/scene/gui/center_container.h index 9c9f61388c..98733f384d 100644 --- a/scene/gui/center_container.h +++ b/scene/gui/center_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/check_box.cpp b/scene/gui/check_box.cpp index 8744407763..443121db32 100644 --- a/scene/gui/check_box.cpp +++ b/scene/gui/check_box.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/check_box.h b/scene/gui/check_box.h index adfb12e7a1..7c8f8c11d6 100644 --- a/scene/gui/check_box.h +++ b/scene/gui/check_box.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/check_button.cpp b/scene/gui/check_button.cpp index f47547f2cc..9d6df94cce 100644 --- a/scene/gui/check_button.cpp +++ b/scene/gui/check_button.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/check_button.h b/scene/gui/check_button.h index 13b0dbc194..3599c26a4c 100644 --- a/scene/gui/check_button.h +++ b/scene/gui/check_button.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index 96b62b97f9..01f4070883 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -573,9 +573,7 @@ void ColorPicker::_preset_input(const Ref<InputEvent> &p_event) { } if (index < 0 || index >= presets.size()) return; - preset->set_tooltip("Color: #" + presets[index].to_html(presets[index].a < 1) + "\n" - "LMB: Set color\n" - "RMB: Remove preset"); + preset->set_tooltip(vformat(RTR("Color: #%s\nLMB: Set color\nRMB: Remove preset"), presets[index].to_html(presets[index].a < 1))); } } @@ -737,20 +735,6 @@ ColorPicker::ColorPicker() : presets_visible = true; screen = NULL; - HBoxContainer *hb_smpl = memnew(HBoxContainer); - add_child(hb_smpl); - - sample = memnew(TextureRect); - hb_smpl->add_child(sample); - sample->set_h_size_flags(SIZE_EXPAND_FILL); - sample->connect("draw", this, "_sample_draw"); - - btn_pick = memnew(ToolButton); - hb_smpl->add_child(btn_pick); - btn_pick->set_toggle_mode(true); - btn_pick->set_tooltip(TTR("Pick a color from the screen.")); - btn_pick->connect("pressed", this, "_screen_pick_pressed"); - HBoxContainer *hb_edit = memnew(HBoxContainer); add_child(hb_edit); hb_edit->set_v_size_flags(SIZE_EXPAND_FILL); @@ -772,6 +756,20 @@ ColorPicker::ColorPicker() : w_edit->connect("gui_input", this, "_w_input"); w_edit->connect("draw", this, "_hsv_draw", make_binds(1, w_edit)); + HBoxContainer *hb_smpl = memnew(HBoxContainer); + add_child(hb_smpl); + + sample = memnew(TextureRect); + hb_smpl->add_child(sample); + sample->set_h_size_flags(SIZE_EXPAND_FILL); + sample->connect("draw", this, "_sample_draw"); + + btn_pick = memnew(ToolButton); + hb_smpl->add_child(btn_pick); + btn_pick->set_toggle_mode(true); + btn_pick->set_tooltip(TTR("Pick a color from the editor window.")); + btn_pick->connect("pressed", this, "_screen_pick_pressed"); + VBoxContainer *vbl = memnew(VBoxContainer); add_child(vbl); diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h index 167f7b33b3..49d36dfb3a 100644 --- a/scene/gui/color_picker.h +++ b/scene/gui/color_picker.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/color_rect.cpp b/scene/gui/color_rect.cpp index df9b4e8498..61260e153c 100644 --- a/scene/gui/color_rect.cpp +++ b/scene/gui/color_rect.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/color_rect.h b/scene/gui/color_rect.h index 7a7bbe1029..3df44b9334 100644 --- a/scene/gui/color_rect.h +++ b/scene/gui/color_rect.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/container.cpp b/scene/gui/container.cpp index 449076f863..b07fec90c2 100644 --- a/scene/gui/container.cpp +++ b/scene/gui/container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/container.h b/scene/gui/container.h index 80d3f6ee5d..0b736d9790 100644 --- a/scene/gui/container.h +++ b/scene/gui/container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 8b4d5d4980..5e656eea70 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/control.h b/scene/gui/control.h index 7305b3ce93..a9831b9793 100644 --- a/scene/gui/control.h +++ b/scene/gui/control.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index a1b584bad6..e0e88e1577 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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 @@ -161,7 +162,7 @@ void WindowDialog::_gui_input(const Ref<InputEvent> &p_event) { global_pos.y = MAX(global_pos.y, 0); // Ensure title bar stays visible. Rect2 rect = get_rect(); - Size2 min_size = get_minimum_size(); + Size2 min_size = get_combined_minimum_size(); if (drag_type == DRAG_MOVE) { rect.position = global_pos - drag_offset; @@ -443,7 +444,9 @@ bool AcceptDialog::has_autowrap() { void AcceptDialog::register_text_enter(Node *p_line_edit) { ERR_FAIL_NULL(p_line_edit); - p_line_edit->connect("text_entered", this, "_builtin_text_entered"); + LineEdit *line_edit = Object::cast_to<LineEdit>(p_line_edit); + if (line_edit) + line_edit->connect("text_entered", this, "_builtin_text_entered"); } void AcceptDialog::_update_child_rects() { diff --git a/scene/gui/dialogs.h b/scene/gui/dialogs.h index 2eb0978e9b..b6381e98b4 100644 --- a/scene/gui/dialogs.h +++ b/scene/gui/dialogs.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index 6400061309..2cc9c1a53a 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/file_dialog.h b/scene/gui/file_dialog.h index 687ebc8036..d9ab00e0f2 100644 --- a/scene/gui/file_dialog.h +++ b/scene/gui/file_dialog.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/gradient_edit.cpp b/scene/gui/gradient_edit.cpp index 5958106419..46c59f42fc 100644 --- a/scene/gui/gradient_edit.cpp +++ b/scene/gui/gradient_edit.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/gradient_edit.h b/scene/gui/gradient_edit.h index 6f31107729..a38a3dde47 100644 --- a/scene/gui/gradient_edit.h +++ b/scene/gui/gradient_edit.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp index ed9fc0ce51..be465751b6 100644 --- a/scene/gui/graph_edit.cpp +++ b/scene/gui/graph_edit.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -777,14 +777,8 @@ void GraphEdit::_top_layer_draw() { } if (box_selecting) { - top_layer->draw_rect( - box_selecting_rect, - get_color("box_selection_fill_color", "Editor")); - - top_layer->draw_rect( - box_selecting_rect, - get_color("box_selection_stroke_color", "Editor"), - false); + top_layer->draw_rect(box_selecting_rect, get_color("selection_fill")); + top_layer->draw_rect(box_selecting_rect, get_color("selection_stroke"), false); } } diff --git a/scene/gui/graph_edit.h b/scene/gui/graph_edit.h index de826bf505..7f1d2699ba 100644 --- a/scene/gui/graph_edit.h +++ b/scene/gui/graph_edit.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp index 5b2f8812d5..7b1bfdfdb5 100644 --- a/scene/gui/graph_node.cpp +++ b/scene/gui/graph_node.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/graph_node.h b/scene/gui/graph_node.h index 2179904cc4..e1a81b5f3d 100644 --- a/scene/gui/graph_node.h +++ b/scene/gui/graph_node.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/grid_container.cpp b/scene/gui/grid_container.cpp index 154e67b6f3..04aed532d4 100644 --- a/scene/gui/grid_container.cpp +++ b/scene/gui/grid_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/grid_container.h b/scene/gui/grid_container.h index 3196046378..0ed8863196 100644 --- a/scene/gui/grid_container.h +++ b/scene/gui/grid_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index 1406586361..2a812caf9a 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -969,7 +969,7 @@ void ItemList::_notification(int p_what) { } if (all_fit) { - float page = size.height - bg->get_minimum_size().height; + float page = MAX(0, size.height - bg->get_minimum_size().height); float max = MAX(page, ofs.y + max_h); if (auto_height) auto_height_value = ofs.y + max_h + bg->get_minimum_size().height; @@ -1456,7 +1456,7 @@ void ItemList::_bind_methods() { ClassDB::bind_method(D_METHOD("set_item_icon", "idx", "icon"), &ItemList::set_item_icon); ClassDB::bind_method(D_METHOD("get_item_icon", "idx"), &ItemList::get_item_icon); - ClassDB::bind_method(D_METHOD("set_item_icon_transposed", "idx", "rect"), &ItemList::set_item_icon_transposed); + ClassDB::bind_method(D_METHOD("set_item_icon_transposed", "idx", "transposed"), &ItemList::set_item_icon_transposed); ClassDB::bind_method(D_METHOD("is_item_icon_transposed", "idx"), &ItemList::is_item_icon_transposed); ClassDB::bind_method(D_METHOD("set_item_icon_region", "idx", "rect"), &ItemList::set_item_icon_region); @@ -1553,12 +1553,12 @@ void ItemList::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "select_mode", PROPERTY_HINT_ENUM, "Single,Multi"), "set_select_mode", "get_select_mode"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_reselect"), "set_allow_reselect", "get_allow_reselect"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_rmb_select"), "set_allow_rmb_select", "get_allow_rmb_select"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "max_text_lines"), "set_max_text_lines", "get_max_text_lines"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "max_text_lines", PROPERTY_HINT_RANGE, "1,10,1,or_greater"), "set_max_text_lines", "get_max_text_lines"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_height"), "set_auto_height", "has_auto_height"); ADD_GROUP("Columns", ""); - ADD_PROPERTY(PropertyInfo(Variant::INT, "max_columns"), "set_max_columns", "get_max_columns"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "max_columns", PROPERTY_HINT_RANGE, "0,10,1,or_greater"), "set_max_columns", "get_max_columns"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "same_column_width"), "set_same_column_width", "is_same_column_width"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "fixed_column_width"), "set_fixed_column_width", "get_fixed_column_width"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "fixed_column_width", PROPERTY_HINT_RANGE, "0,100,1,or_greater"), "set_fixed_column_width", "get_fixed_column_width"); ADD_GROUP("Icon", ""); ADD_PROPERTY(PropertyInfo(Variant::INT, "icon_mode", PROPERTY_HINT_ENUM, "Top,Left"), "set_icon_mode", "get_icon_mode"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "icon_scale"), "set_icon_scale", "get_icon_scale"); diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h index 3a7cc65ab4..d9b510c762 100644 --- a/scene/gui/item_list.h +++ b/scene/gui/item_list.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp index 9e2cd9e941..6b12947651 100644 --- a/scene/gui/label.cpp +++ b/scene/gui/label.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -103,8 +103,7 @@ void Label::_notification(int p_what) { int lines_visible = (size.y + line_spacing) / font_h; - // ceiling to ensure autowrapping does not cut text - int space_w = Math::ceil(font->get_char_size(' ').width); + real_t space_w = font->get_char_size(' ').width; int chars_total = 0; int vbegin = 0, vsep = 0; @@ -225,6 +224,7 @@ void Label::_notification(int p_what) { return; } if (from->space_count) { + chars_total += from->space_count; /* spacing */ x_ofs += space_w * from->space_count; if (can_fill && align == ALIGN_FILL && spaces) { @@ -313,8 +313,8 @@ Size2 Label::get_minimum_size() const { int Label::get_longest_line_width() const { Ref<Font> font = get_font("font"); - int max_line_width = 0; - int line_width = 0; + real_t max_line_width = 0; + real_t line_width = 0; for (int i = 0; i < xl_text.size(); i++) { @@ -332,8 +332,7 @@ int Label::get_longest_line_width() const { } } else { - // ceiling to ensure autowrapping does not cut text - int char_width = Math::ceil(font->get_char_size(current, xl_text[i + 1]).width); + real_t char_width = font->get_char_size(current, xl_text[i + 1]).width; line_width += char_width; } } @@ -341,7 +340,8 @@ int Label::get_longest_line_width() const { if (line_width > max_line_width) max_line_width = line_width; - return max_line_width; + // ceiling to ensure autowrapping does not cut text + return Math::ceil(max_line_width); } int Label::get_line_count() const { @@ -388,12 +388,11 @@ void Label::regenerate_word_cache() { Ref<Font> font = get_font("font"); - int current_word_size = 0; + real_t current_word_size = 0; int word_pos = 0; - int line_width = 0; + real_t line_width = 0; int space_count = 0; - // ceiling to ensure autowrapping does not cut text - int space_width = Math::ceil(font->get_char_size(' ').width); + real_t space_width = font->get_char_size(' ').width; int line_spacing = get_constant("line_spacing"); line_count = 1; total_char_cache = 0; @@ -413,7 +412,7 @@ void Label::regenerate_word_cache() { bool separatable = (current >= 0x2E08 && current <= 0xFAFF) || (current >= 0xFE30 && current <= 0xFE4F); //current>=33 && (current < 65||current >90) && (current<97||current>122) && (current<48||current>57); bool insert_newline = false; - int char_width = 0; + real_t char_width = 0; if (current < 33) { @@ -454,8 +453,7 @@ void Label::regenerate_word_cache() { if (current_word_size == 0) { word_pos = i; } - // ceiling to ensure autowrapping does not cut text - char_width = Math::ceil(font->get_char_size(current, xl_text[i + 1]).width); + char_width = font->get_char_size(current, xl_text[i + 1]).width; current_word_size += char_width; line_width += char_width; total_char_cache++; diff --git a/scene/gui/label.h b/scene/gui/label.h index 2cc55a47ef..ba6e627c58 100644 --- a/scene/gui/label.h +++ b/scene/gui/label.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index ab6f80bfa9..8f5f6beac3 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..cf597d11b6 100644 --- a/scene/gui/line_edit.h +++ b/scene/gui/line_edit.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/link_button.cpp b/scene/gui/link_button.cpp index 21527e9bfc..4b8054bac6 100644 --- a/scene/gui/link_button.cpp +++ b/scene/gui/link_button.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/link_button.h b/scene/gui/link_button.h index 17c4bca67b..3bef25e249 100644 --- a/scene/gui/link_button.h +++ b/scene/gui/link_button.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/margin_container.cpp b/scene/gui/margin_container.cpp index 62ba45c484..53373fc297 100644 --- a/scene/gui/margin_container.cpp +++ b/scene/gui/margin_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/margin_container.h b/scene/gui/margin_container.h index 336b68665f..2fa41ecb6b 100644 --- a/scene/gui/margin_container.h +++ b/scene/gui/margin_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/menu_button.cpp b/scene/gui/menu_button.cpp index e12cd55e6f..6e348054e2 100644 --- a/scene/gui/menu_button.cpp +++ b/scene/gui/menu_button.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/menu_button.h b/scene/gui/menu_button.h index 5448ff13f2..9abd11632f 100644 --- a/scene/gui/menu_button.h +++ b/scene/gui/menu_button.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/nine_patch_rect.cpp b/scene/gui/nine_patch_rect.cpp index 23e0ea876d..945d1850d7 100644 --- a/scene/gui/nine_patch_rect.cpp +++ b/scene/gui/nine_patch_rect.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/nine_patch_rect.h b/scene/gui/nine_patch_rect.h index f31a09a482..3329c0a64c 100644 --- a/scene/gui/nine_patch_rect.h +++ b/scene/gui/nine_patch_rect.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/option_button.cpp b/scene/gui/option_button.cpp index de8df4215d..8598a953b4 100644 --- a/scene/gui/option_button.cpp +++ b/scene/gui/option_button.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -35,8 +35,9 @@ Size2 OptionButton::get_minimum_size() const { Size2 minsize = Button::get_minimum_size(); - if (has_icon("arrow")) + if (has_icon("arrow")) { minsize.width += Control::get_icon("arrow")->get_width() + get_constant("hseparation"); + } return minsize; } @@ -73,6 +74,12 @@ void OptionButton::_notification(int p_what) { Point2 ofs(size.width - arrow->get_width() - get_constant("arrow_margin"), int(Math::abs((size.height - arrow->get_height()) / 2))); arrow->draw(ci, ofs, clr); } break; + case NOTIFICATION_THEME_CHANGED: { + + if (has_icon("arrow")) { + _set_internal_margin(MARGIN_RIGHT, Control::get_icon("arrow")->get_width()); + } + } break; case NOTIFICATION_VISIBILITY_CHANGED: { if (!is_visible_in_tree()) { @@ -327,7 +334,7 @@ void OptionButton::_bind_methods() { ClassDB::bind_method(D_METHOD("_get_items"), &OptionButton::_get_items); ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items"); - // "selected" property must come after "items", otherwise GH-10213 occurs + // "selected" property must come after "items", otherwise GH-10213 occurs. ADD_PROPERTY(PropertyInfo(Variant::INT, "selected"), "_select_int", "get_selected"); ADD_SIGNAL(MethodInfo("item_selected", PropertyInfo(Variant::INT, "id"))); ADD_SIGNAL(MethodInfo("item_focused", PropertyInfo(Variant::INT, "id"))); @@ -339,6 +346,9 @@ OptionButton::OptionButton() { set_toggle_mode(true); set_text_align(ALIGN_LEFT); set_action_mode(ACTION_MODE_BUTTON_PRESS); + if (has_icon("arrow")) { + _set_internal_margin(MARGIN_RIGHT, Control::get_icon("arrow")->get_width()); + } popup = memnew(PopupMenu); popup->hide(); diff --git a/scene/gui/option_button.h b/scene/gui/option_button.h index 7210708042..04bd28fe28 100644 --- a/scene/gui/option_button.h +++ b/scene/gui/option_button.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/panel.cpp b/scene/gui/panel.cpp index c26bd09f50..aa1a381934 100644 --- a/scene/gui/panel.cpp +++ b/scene/gui/panel.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/panel.h b/scene/gui/panel.h index 84bf6e75f5..3538126d22 100644 --- a/scene/gui/panel.h +++ b/scene/gui/panel.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/panel_container.cpp b/scene/gui/panel_container.cpp index b1fced87fc..74663c33e3 100644 --- a/scene/gui/panel_container.cpp +++ b/scene/gui/panel_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/panel_container.h b/scene/gui/panel_container.h index 15661d3e35..5623c3484b 100644 --- a/scene/gui/panel_container.h +++ b/scene/gui/panel_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/popup.cpp b/scene/gui/popup.cpp index 32380b6457..64ef4a01f6 100644 --- a/scene/gui/popup.cpp +++ b/scene/gui/popup.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/popup.h b/scene/gui/popup.h index 925760984e..ff472170b3 100644 --- a/scene/gui/popup.h +++ b/scene/gui/popup.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index 08faaf7d45..87f17838cf 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; @@ -305,6 +309,7 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) { bool was_during_grabbed_click = during_grabbed_click; during_grabbed_click = false; + initial_button_mask = 0; int over = _get_mouse_over(b->get_position()); diff --git a/scene/gui/popup_menu.h b/scene/gui/popup_menu.h index 8c33178b09..f77ede0a8b 100644 --- a/scene/gui/popup_menu.h +++ b/scene/gui/popup_menu.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/progress_bar.cpp b/scene/gui/progress_bar.cpp index 0154a452ad..e11295d7e7 100644 --- a/scene/gui/progress_bar.cpp +++ b/scene/gui/progress_bar.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/progress_bar.h b/scene/gui/progress_bar.h index 6157183e0f..371d0370f6 100644 --- a/scene/gui/progress_bar.h +++ b/scene/gui/progress_bar.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/range.cpp b/scene/gui/range.cpp index 362697b4ad..6b6f5bca93 100644 --- a/scene/gui/range.cpp +++ b/scene/gui/range.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -100,7 +100,6 @@ void Range::set_value(double p_val) { shared->emit_value_changed(); } void Range::set_min(double p_min) { - shared->min = p_min; set_value(shared->val); @@ -109,7 +108,6 @@ void Range::set_min(double p_min) { update_configuration_warning(); } void Range::set_max(double p_max) { - shared->max = p_max; set_value(shared->val); diff --git a/scene/gui/range.h b/scene/gui/range.h index 8ce450f8fc..819d76941b 100644 --- a/scene/gui/range.h +++ b/scene/gui/range.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/reference_rect.cpp b/scene/gui/reference_rect.cpp index 052c8ccd05..0765e5d882 100644 --- a/scene/gui/reference_rect.cpp +++ b/scene/gui/reference_rect.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/reference_rect.h b/scene/gui/reference_rect.h index 7a88333cf2..c25c54f271 100644 --- a/scene/gui/reference_rect.h +++ b/scene/gui/reference_rect.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/rich_text_effect.cpp b/scene/gui/rich_text_effect.cpp index f9e0be5b31..c5b1685ff9 100644 --- a/scene/gui/rich_text_effect.cpp +++ b/scene/gui/rich_text_effect.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..77c82aa780 100644 --- a/scene/gui/rich_text_effect.h +++ b/scene/gui/rich_text_effect.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..100c06955a 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -253,24 +253,25 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int & } \ } -#define ENSURE_WIDTH(m_width) \ - if (p_mode == PROCESS_CACHE) { \ - l.maximum_width = MAX(l.maximum_width, MIN(p_width, wofs + m_width)); \ - l.minimum_width = MAX(l.minimum_width, m_width); \ - } \ - if (wofs + m_width > p_width) { \ - line_wrapped = true; \ - if (p_mode == PROCESS_CACHE) { \ - if (spaces > 0) \ - spaces -= 1; \ - } \ - if (p_mode == PROCESS_POINTER && r_click_item && p_click_pos.y >= p_ofs.y + y && p_click_pos.y <= p_ofs.y + y + lh && p_click_pos.x > p_ofs.x + wofs) { \ - if (r_outside) *r_outside = true; \ - *r_click_item = it; \ - *r_click_char = rchar; \ - RETURN; \ - } \ - NEW_LINE \ +#define ENSURE_WIDTH(m_width) \ + if (p_mode == PROCESS_CACHE) { \ + l.maximum_width = MAX(l.maximum_width, MIN(p_width, wofs + m_width)); \ + l.minimum_width = MAX(l.minimum_width, m_width); \ + } \ + if (wofs + m_width > p_width) { \ + line_wrapped = true; \ + if (p_mode == PROCESS_CACHE) { \ + if (spaces > 0) \ + spaces -= 1; \ + } \ + const bool x_in_range = (p_click_pos.x > p_ofs.x + wofs) && (!p_frame->cell || p_click_pos.x < p_ofs.x + p_width); \ + if (p_mode == PROCESS_POINTER && r_click_item && p_click_pos.y >= p_ofs.y + y && p_click_pos.y <= p_ofs.y + y + lh && x_in_range) { \ + if (r_outside) *r_outside = true; \ + *r_click_item = it; \ + *r_click_char = rchar; \ + RETURN; \ + } \ + NEW_LINE \ } #define ADVANCE(m_width) \ @@ -1063,10 +1064,10 @@ Control::CursorShape RichTextLabel::get_cursor_shape(const Point2 &p_pos) const int line = 0; Item *item = NULL; + bool outside; + ((RichTextLabel *)(this))->_find_click(main, p_pos, &item, &line, &outside); - ((RichTextLabel *)(this))->_find_click(main, p_pos, &item, &line); - - if (item && ((RichTextLabel *)(this))->_find_meta(item, NULL)) + if (item && !outside && ((RichTextLabel *)(this))->_find_meta(item, NULL)) return CURSOR_POINTING_HAND; return CURSOR_ARROW; @@ -1701,6 +1702,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/rich_text_label.h b/scene/gui/rich_text_label.h index b9837fdfcc..61ac0bd86c 100644 --- a/scene/gui/rich_text_label.h +++ b/scene/gui/rich_text_label.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/scroll_bar.cpp b/scene/gui/scroll_bar.cpp index a7c15151ae..45fa212886 100644 --- a/scene/gui/scroll_bar.cpp +++ b/scene/gui/scroll_bar.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/scroll_bar.h b/scene/gui/scroll_bar.h index cbcee1dae3..ee5e7140cf 100644 --- a/scene/gui/scroll_bar.h +++ b/scene/gui/scroll_bar.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp index a840e3fec1..dc1183df74 100644 --- a/scene/gui/scroll_container.cpp +++ b/scene/gui/scroll_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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,31 @@ void ScrollContainer::_update_scrollbar_position() { v_scroll->raise(); } +void ScrollContainer::_ensure_focused_visible(Control *p_control) { + + if (!follow_focus) { + return; + } + + 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 +265,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); @@ -388,7 +419,6 @@ void ScrollContainer::update_scrollbars() { if (hide_scroll_v) { v_scroll->hide(); - v_scroll->set_max(0); scroll.y = 0; } else { @@ -406,7 +436,6 @@ void ScrollContainer::update_scrollbars() { if (hide_scroll_h) { h_scroll->hide(); - h_scroll->set_max(0); scroll.x = 0; } else { @@ -481,6 +510,14 @@ void ScrollContainer::set_deadzone(int p_deadzone) { deadzone = p_deadzone; } +bool ScrollContainer::is_following_focus() const { + return follow_focus; +} + +void ScrollContainer::set_follow_focus(bool p_follow) { + follow_focus = p_follow; +} + String ScrollContainer::get_configuration_warning() const { int found = 0; @@ -523,12 +560,15 @@ 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); ClassDB::bind_method(D_METHOD("get_v_scroll"), &ScrollContainer::get_v_scroll); ClassDB::bind_method(D_METHOD("set_deadzone", "deadzone"), &ScrollContainer::set_deadzone); ClassDB::bind_method(D_METHOD("get_deadzone"), &ScrollContainer::get_deadzone); + ClassDB::bind_method(D_METHOD("set_follow_focus", "enabled"), &ScrollContainer::set_follow_focus); + ClassDB::bind_method(D_METHOD("is_following_focus"), &ScrollContainer::is_following_focus); ClassDB::bind_method(D_METHOD("get_h_scrollbar"), &ScrollContainer::get_h_scrollbar); ClassDB::bind_method(D_METHOD("get_v_scrollbar"), &ScrollContainer::get_v_scrollbar); @@ -536,6 +576,8 @@ void ScrollContainer::_bind_methods() { ADD_SIGNAL(MethodInfo("scroll_started")); ADD_SIGNAL(MethodInfo("scroll_ended")); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "follow_focus"), "set_follow_focus", "is_following_focus"); + ADD_GROUP("Scroll", "scroll_"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_horizontal_enabled"), "set_enable_h_scroll", "is_h_scroll_enabled"); ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_horizontal"), "set_h_scroll", "get_h_scroll"); @@ -567,6 +609,7 @@ ScrollContainer::ScrollContainer() { scroll_v = true; deadzone = GLOBAL_GET("gui/common/default_scroll_deadzone"); + follow_focus = false; set_clip_contents(true); }; diff --git a/scene/gui/scroll_container.h b/scene/gui/scroll_container.h index 2ab169f4d0..6423b36fcc 100644 --- a/scene/gui/scroll_container.h +++ b/scene/gui/scroll_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -62,6 +62,7 @@ class ScrollContainer : public Container { bool scroll_v; int deadzone; + bool follow_focus; void _cancel_drag(); @@ -75,6 +76,7 @@ protected: static void _bind_methods(); void _update_scrollbar_position(); + void _ensure_focused_visible(Control *p_node); public: int get_v_scroll() const; @@ -92,6 +94,9 @@ public: int get_deadzone() const; void set_deadzone(int p_deadzone); + bool is_following_focus() const; + void set_follow_focus(bool p_follow); + HScrollBar *get_h_scrollbar(); VScrollBar *get_v_scrollbar(); diff --git a/scene/gui/separator.cpp b/scene/gui/separator.cpp index a717420b9b..4635efb233 100644 --- a/scene/gui/separator.cpp +++ b/scene/gui/separator.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/separator.h b/scene/gui/separator.h index 89039f3112..9a64d6ba99 100644 --- a/scene/gui/separator.h +++ b/scene/gui/separator.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/shortcut.cpp b/scene/gui/shortcut.cpp index 400fdca082..262d8076f3 100644 --- a/scene/gui/shortcut.cpp +++ b/scene/gui/shortcut.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/shortcut.h b/scene/gui/shortcut.h index df0623ed50..59d3245db5 100644 --- a/scene/gui/shortcut.h +++ b/scene/gui/shortcut.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp index ba57be1686..9b3ed35e6e 100644 --- a/scene/gui/slider.cpp +++ b/scene/gui/slider.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/slider.h b/scene/gui/slider.h index d0ab7baecf..1248044ec4 100644 --- a/scene/gui/slider.h +++ b/scene/gui/slider.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp index bf067898e6..d5da35955c 100644 --- a/scene/gui/spin_box.cpp +++ b/scene/gui/spin_box.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/spin_box.h b/scene/gui/spin_box.h index 9cf977d2d6..13ba168ef3 100644 --- a/scene/gui/spin_box.h +++ b/scene/gui/spin_box.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp index e5d1844d39..bb5260b15e 100644 --- a/scene/gui/split_container.cpp +++ b/scene/gui/split_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/split_container.h b/scene/gui/split_container.h index 97838e19a3..d759c6ad35 100644 --- a/scene/gui/split_container.h +++ b/scene/gui/split_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp index a29ba36bad..c3ddc41813 100644 --- a/scene/gui/tab_container.cpp +++ b/scene/gui/tab_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/tab_container.h b/scene/gui/tab_container.h index 0c17ebc3ae..e69c2ae289 100644 --- a/scene/gui/tab_container.h +++ b/scene/gui/tab_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/tabs.cpp b/scene/gui/tabs.cpp index c24f15384b..6cd95e73fc 100644 --- a/scene/gui/tabs.cpp +++ b/scene/gui/tabs.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/tabs.h b/scene/gui/tabs.h index 0edf2fedc1..c06e47a54a 100644 --- a/scene/gui/tabs.h +++ b/scene/gui/tabs.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 8ddc31745e..6de2f0b570 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -417,7 +417,6 @@ void TextEdit::_update_scrollbars() { cursor.line_ofs = 0; cursor.wrap_ofs = 0; v_scroll->set_value(0); - v_scroll->set_max(0); v_scroll->hide(); } @@ -436,7 +435,6 @@ void TextEdit::_update_scrollbars() { cursor.x_ofs = 0; h_scroll->set_value(0); - h_scroll->set_max(0); h_scroll->hide(); } @@ -1948,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--; } @@ -4440,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; @@ -4593,6 +4591,7 @@ void TextEdit::_scroll_moved(double p_to_val) { break; } } + n_line = MIN(n_line, text.size() - 1); int line_wrap_amount = times_line_wraps(n_line); int wi = line_wrap_amount - (sc - v_scroll_i - 1); wi = CLAMP(wi, 0, line_wrap_amount); @@ -5179,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 { @@ -7066,6 +7070,10 @@ void TextEdit::_bind_methods() { ClassDB::bind_method(D_METHOD("is_smooth_scroll_enabled"), &TextEdit::is_smooth_scroll_enabled); ClassDB::bind_method(D_METHOD("set_v_scroll_speed", "speed"), &TextEdit::set_v_scroll_speed); ClassDB::bind_method(D_METHOD("get_v_scroll_speed"), &TextEdit::get_v_scroll_speed); + ClassDB::bind_method(D_METHOD("set_v_scroll", "value"), &TextEdit::set_v_scroll); + ClassDB::bind_method(D_METHOD("get_v_scroll"), &TextEdit::get_v_scroll); + ClassDB::bind_method(D_METHOD("set_h_scroll", "value"), &TextEdit::set_h_scroll); + ClassDB::bind_method(D_METHOD("get_h_scroll"), &TextEdit::get_h_scroll); ClassDB::bind_method(D_METHOD("add_keyword_color", "keyword", "color"), &TextEdit::add_keyword_color); ClassDB::bind_method(D_METHOD("has_keyword_color", "keyword"), &TextEdit::has_keyword_color); @@ -7101,6 +7109,8 @@ void TextEdit::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_scroll_speed"), "set_v_scroll_speed", "get_v_scroll_speed"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hiding_enabled"), "set_hiding_enabled", "is_hiding_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "wrap_enabled"), "set_wrap_enabled", "is_wrap_enabled"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "scroll_vertical"), "set_v_scroll", "get_v_scroll"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_horizontal"), "set_h_scroll", "get_h_scroll"); ADD_GROUP("Minimap", "minimap_"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "minimap_draw"), "draw_minimap", "is_drawing_minimap"); @@ -7142,6 +7152,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..b4e7dcfebb 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/gui/texture_button.cpp b/scene/gui/texture_button.cpp index e9b0bd8f38..9ffb69037a 100644 --- a/scene/gui/texture_button.cpp +++ b/scene/gui/texture_button.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/texture_button.h b/scene/gui/texture_button.h index d9224de686..e39b94abf0 100644 --- a/scene/gui/texture_button.h +++ b/scene/gui/texture_button.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/texture_progress.cpp b/scene/gui/texture_progress.cpp index 9b60a9d1c3..2d30ff7334 100644 --- a/scene/gui/texture_progress.cpp +++ b/scene/gui/texture_progress.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/texture_progress.h b/scene/gui/texture_progress.h index 008bf5b038..e4a40fd6a3 100644 --- a/scene/gui/texture_progress.h +++ b/scene/gui/texture_progress.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/texture_rect.cpp b/scene/gui/texture_rect.cpp index 473cee5ca1..514eff358e 100644 --- a/scene/gui/texture_rect.cpp +++ b/scene/gui/texture_rect.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -36,8 +36,9 @@ void TextureRect::_notification(int p_what) { if (p_what == NOTIFICATION_DRAW) { - if (texture.is_null()) + if (texture.is_null()) { return; + } Size2 size; Point2 offset; @@ -85,11 +86,11 @@ void TextureRect::_notification(int p_what) { size = get_size(); Size2 tex_size = texture->get_size(); - Size2 scaleSize(size.width / tex_size.width, size.height / tex_size.height); - float scale = scaleSize.width > scaleSize.height ? scaleSize.width : scaleSize.height; - Size2 scaledTexSize = tex_size * scale; + Size2 scale_size(size.width / tex_size.width, size.height / tex_size.height); + float scale = scale_size.width > scale_size.height ? scale_size.width : scale_size.height; + Size2 scaled_tex_size = tex_size * scale; - region.position = ((scaledTexSize - size) / scale).abs() / 2.0f; + region.position = ((scaled_tex_size - size) / scale).abs() / 2.0f; region.size = size / scale; } break; } @@ -107,11 +108,13 @@ void TextureRect::_notification(int p_what) { Size2 TextureRect::get_minimum_size() const { - if (!expand && !texture.is_null()) + if (!expand && !texture.is_null()) { return texture->get_size(); - else + } else { return Size2(); + } } + void TextureRect::_bind_methods() { ClassDB::bind_method(D_METHOD("set_texture", "texture"), &TextureRect::set_texture); @@ -152,22 +155,21 @@ void TextureRect::_texture_changed() { void TextureRect::set_texture(const Ref<Texture> &p_tex) { - if (p_tex == texture) + if (p_tex == texture) { return; + } - if (texture.is_valid()) + if (texture.is_valid()) { texture->disconnect(CoreStringNames::get_singleton()->changed, this, "_texture_changed"); + } texture = p_tex; - if (texture.is_valid()) + if (texture.is_valid()) { texture->connect(CoreStringNames::get_singleton()->changed, this, "_texture_changed"); + } update(); - /* - if (texture.is_valid()) - texture->set_flags(texture->get_flags()&(~Texture::FLAG_REPEAT)); //remove repeat from texture, it looks bad in sprites - */ minimum_size_changed(); } @@ -182,6 +184,7 @@ void TextureRect::set_expand(bool p_expand) { update(); minimum_size_changed(); } + bool TextureRect::has_expand() const { return expand; @@ -203,6 +206,7 @@ void TextureRect::set_flip_h(bool p_flip) { hflip = p_flip; update(); } + bool TextureRect::is_flipped_h() const { return hflip; @@ -213,6 +217,7 @@ void TextureRect::set_flip_v(bool p_flip) { vflip = p_flip; update(); } + bool TextureRect::is_flipped_v() const { return vflip; diff --git a/scene/gui/texture_rect.h b/scene/gui/texture_rect.h index d144020562..ef970fa051 100644 --- a/scene/gui/texture_rect.h +++ b/scene/gui/texture_rect.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/tool_button.cpp b/scene/gui/tool_button.cpp index a81cc34efa..c9f87f0015 100644 --- a/scene/gui/tool_button.cpp +++ b/scene/gui/tool_button.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/tool_button.h b/scene/gui/tool_button.h index 8f729cd4df..9848b21381 100644 --- a/scene/gui/tool_button.h +++ b/scene/gui/tool_button.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index d479a1636a..964f376dbd 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -2162,9 +2162,8 @@ void Tree::_go_right() { if (selected_item->get_children() != NULL && selected_item->is_collapsed()) { selected_item->set_collapsed(false); } else if (selected_item->get_next_visible()) { - selected_item->select(0); + selected_col = 0; _go_down(); - return; } } else { if (select_mode == SELECT_MULTI) { @@ -2746,9 +2745,13 @@ void Tree::_gui_input(Ref<InputEvent> p_event) { Ref<InputEventPanGesture> pan_gesture = p_event; if (pan_gesture.is_valid()) { - double prev_value = v_scroll->get_value(); + double prev_v = v_scroll->get_value(); v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() * pan_gesture->get_delta().y / 8); - if (v_scroll->get_value() != prev_value) { + + double prev_h = h_scroll->get_value(); + h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() * pan_gesture->get_delta().x / 8); + + if (v_scroll->get_value() != prev_v || h_scroll->get_value() != prev_h) { accept_event(); } } @@ -3427,7 +3430,10 @@ int Tree::get_item_offset(TreeItem *p_item) const { if (it == p_item) return ofs; - ofs += compute_item_height(it) + cache.vseparation; + ofs += compute_item_height(it); + if (it != root || !hide_root) { + ofs += cache.vseparation; + } if (it->children && !it->collapsed) { @@ -3453,25 +3459,48 @@ int Tree::get_item_offset(TreeItem *p_item) const { } void Tree::ensure_cursor_is_visible() { - - if (!is_inside_tree()) + if (!is_inside_tree()) { return; + } + if (!selected_item || (selected_col == -1)) { + return; // Nothing under cursor. + } - TreeItem *selected = get_selected(); - if (!selected) - return; - int ofs = get_item_offset(selected); - if (ofs == -1) - return; - int h = compute_item_height(selected) + cache.vseparation; - int screenh = get_size().height - h_scroll->get_combined_minimum_size().height; - - if (h > screenh) { //screen size is too small, maybe it was not resized yet. - v_scroll->set_value(ofs); - } else if (ofs + h > v_scroll->get_value() + screenh) { - v_scroll->call_deferred("set_value", ofs - screenh + h); - } else if (ofs < v_scroll->get_value()) { - v_scroll->set_value(ofs); + const Size2 area_size = get_size() - cache.bg->get_minimum_size(); + + int y_offset = get_item_offset(selected_item); + if (y_offset != -1) { + const int tbh = _get_title_button_height(); + y_offset -= tbh; + + const int cell_h = compute_item_height(selected_item) + cache.vseparation; + const int screen_h = area_size.height - h_scroll->get_combined_minimum_size().height - tbh; + + if (cell_h > screen_h) { // Screen size is too small, maybe it was not resized yet. + v_scroll->set_value(y_offset); + } else if (y_offset + cell_h > v_scroll->get_value() + screen_h) { + v_scroll->call_deferred("set_value", y_offset - screen_h + cell_h); + } else if (y_offset < v_scroll->get_value()) { + v_scroll->set_value(y_offset); + } + } + + if (select_mode != SELECT_ROW) { // Cursor always at col 0 in this mode. + int x_offset = 0; + for (int i = 0; i < selected_col; i++) { + x_offset += get_column_width(i); + } + + const int cell_w = get_column_width(selected_col); + const int screen_w = area_size.width - v_scroll->get_combined_minimum_size().width; + + if (cell_w > screen_w) { + h_scroll->set_value(x_offset); + } else if (x_offset + cell_w > h_scroll->get_value() + screen_w) { + h_scroll->call_deferred("set_value", x_offset - screen_w + cell_w); + } else if (x_offset < h_scroll->get_value()) { + h_scroll->set_value(x_offset); + } } } diff --git a/scene/gui/tree.h b/scene/gui/tree.h index d5227f6e65..d87de6e773 100644 --- a/scene/gui/tree.h +++ b/scene/gui/tree.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/video_player.cpp b/scene/gui/video_player.cpp index fd2d4a1a11..071e8a8ac6 100644 --- a/scene/gui/video_player.cpp +++ b/scene/gui/video_player.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/video_player.h b/scene/gui/video_player.h index 7d2821427e..e740e3e4ed 100644 --- a/scene/gui/video_player.h +++ b/scene/gui/video_player.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/viewport_container.cpp b/scene/gui/viewport_container.cpp index 35696a0459..4565b4b538 100644 --- a/scene/gui/viewport_container.cpp +++ b/scene/gui/viewport_container.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/gui/viewport_container.h b/scene/gui/viewport_container.h index b4ecc583ba..8597444426 100644 --- a/scene/gui/viewport_container.h +++ b/scene/gui/viewport_container.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp index 8cab1b1280..4ae018a79a 100644 --- a/scene/main/canvas_layer.cpp +++ b/scene/main/canvas_layer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/main/canvas_layer.h b/scene/main/canvas_layer.h index fa2558556c..91ddbca3b9 100644 --- a/scene/main/canvas_layer.h +++ b/scene/main/canvas_layer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp index 6c922adbd2..3c89069816 100644 --- a/scene/main/http_request.cpp +++ b/scene/main/http_request.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -457,6 +457,18 @@ String HTTPRequest::get_download_file() const { return download_to_file; } + +void HTTPRequest::set_download_chunk_size(int p_chunk_size) { + + ERR_FAIL_COND(get_http_client_status() != HTTPClient::STATUS_DISCONNECTED); + + client->set_read_chunk_size(p_chunk_size); +} + +int HTTPRequest::get_download_chunk_size() const { + return client->get_read_chunk_size(); +} + HTTPClient::Status HTTPRequest::get_http_client_status() const { return client->get_status(); } @@ -524,9 +536,13 @@ void HTTPRequest::_bind_methods() { ClassDB::bind_method(D_METHOD("set_timeout", "timeout"), &HTTPRequest::set_timeout); ClassDB::bind_method(D_METHOD("get_timeout"), &HTTPRequest::get_timeout); + ClassDB::bind_method(D_METHOD("set_download_chunk_size"), &HTTPRequest::set_download_chunk_size); + ClassDB::bind_method(D_METHOD("get_download_chunk_size"), &HTTPRequest::get_download_chunk_size); + ClassDB::bind_method(D_METHOD("_timeout"), &HTTPRequest::_timeout); ADD_PROPERTY(PropertyInfo(Variant::STRING, "download_file", PROPERTY_HINT_FILE), "set_download_file", "get_download_file"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "download_chunk_size", PROPERTY_HINT_RANGE, "256,16777216"), "set_download_chunk_size", "get_download_chunk_size"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_threads"), "set_use_threads", "is_using_threads"); ADD_PROPERTY(PropertyInfo(Variant::INT, "body_size_limit", PROPERTY_HINT_RANGE, "-1,2000000000"), "set_body_size_limit", "get_body_size_limit"); ADD_PROPERTY(PropertyInfo(Variant::INT, "max_redirects", PROPERTY_HINT_RANGE, "-1,64"), "set_max_redirects", "get_max_redirects"); diff --git a/scene/main/http_request.h b/scene/main/http_request.h index f1f91235a6..94b323ae8a 100644 --- a/scene/main/http_request.h +++ b/scene/main/http_request.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -126,6 +126,9 @@ public: void set_download_file(const String &p_file); String get_download_file() const; + void set_download_chunk_size(int p_chunk_size); + int get_download_chunk_size() const; + void set_body_size_limit(int p_bytes); int get_body_size_limit() const; diff --git a/scene/main/instance_placeholder.cpp b/scene/main/instance_placeholder.cpp index 99ecc8bc37..0128d1a218 100644 --- a/scene/main/instance_placeholder.cpp +++ b/scene/main/instance_placeholder.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/main/instance_placeholder.h b/scene/main/instance_placeholder.h index 3d0e879b2b..d570b8c247 100644 --- a/scene/main/instance_placeholder.h +++ b/scene/main/instance_placeholder.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 616ccc00cb..350959dcc3 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -2680,7 +2680,8 @@ void Node::clear_internal_tree_resource_paths() { String Node::get_configuration_warning() const { - if (get_script_instance() && get_script_instance()->has_method("_get_configuration_warning")) { + if (get_script_instance() && get_script_instance()->get_script().is_valid() && + get_script_instance()->get_script()->is_tool() && get_script_instance()->has_method("_get_configuration_warning")) { return get_script_instance()->call("_get_configuration_warning"); } return String(); diff --git a/scene/main/node.h b/scene/main/node.h index 6d0ff7e5cf..6f5544d654 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/main/resource_preloader.cpp b/scene/main/resource_preloader.cpp index cb1168b73e..5582ed59b0 100644 --- a/scene/main/resource_preloader.cpp +++ b/scene/main/resource_preloader.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/main/resource_preloader.h b/scene/main/resource_preloader.h index 3e3be4ac82..d03c784883 100644 --- a/scene/main/resource_preloader.h +++ b/scene/main/resource_preloader.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index 3a6fff45c5..da147e7112 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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); @@ -631,7 +631,13 @@ void SceneTree::finish() { timers.clear(); } -void SceneTree::quit() { +void SceneTree::quit(int p_exit_code) { + + if (p_exit_code >= 0) { + // Override the exit code if a positive argument is given (the default is `-1`). + // This is a shorthand for calling `set_exit_code()` on the OS singleton then quitting. + OS::get_singleton()->set_exit_code(p_exit_code); + } _quit = true; } @@ -1812,8 +1818,6 @@ bool SceneTree::is_refusing_new_network_connections() const { void SceneTree::_bind_methods() { - //ClassDB::bind_method(D_METHOD("call_group","call_flags","group","method","arg1","arg2"),&SceneMainLoop::_call_group,DEFVAL(Variant()),DEFVAL(Variant())); - ClassDB::bind_method(D_METHOD("get_root"), &SceneTree::get_root); ClassDB::bind_method(D_METHOD("has_group", "name"), &SceneTree::has_group); @@ -1837,7 +1841,7 @@ void SceneTree::_bind_methods() { ClassDB::bind_method(D_METHOD("get_node_count"), &SceneTree::get_node_count); ClassDB::bind_method(D_METHOD("get_frame"), &SceneTree::get_frame); - ClassDB::bind_method(D_METHOD("quit"), &SceneTree::quit); + ClassDB::bind_method(D_METHOD("quit", "exit_code"), &SceneTree::quit, DEFVAL(-1)); ClassDB::bind_method(D_METHOD("set_screen_stretch", "mode", "aspect", "minsize", "shrink"), &SceneTree::set_screen_stretch, DEFVAL(1)); diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h index 2cf6a117e7..55304fb12d 100644 --- a/scene/main/scene_tree.h +++ b/scene/main/scene_tree.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -303,7 +303,7 @@ public: void set_auto_accept_quit(bool p_enable); void set_quit_on_go_back(bool p_enable); - void quit(); + void quit(int p_exit_code = -1); void set_input_as_handled(); bool is_input_handled(); diff --git a/scene/main/timer.cpp b/scene/main/timer.cpp index 14cc705edb..cb213be731 100755 --- a/scene/main/timer.cpp +++ b/scene/main/timer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -108,7 +108,7 @@ bool Timer::has_autostart() const { void Timer::start(float p_time) { - ERR_FAIL_COND_MSG(!is_inside_tree(), "Timer was not added to the SceneTree!"); + ERR_FAIL_COND_MSG(!is_inside_tree(), "Timer was not added to the SceneTree. Either add it or set autostart to true."); if (p_time > 0) { set_wait_time(p_time); @@ -206,7 +206,7 @@ void Timer::_bind_methods() { ADD_SIGNAL(MethodInfo("timeout")); ADD_PROPERTY(PropertyInfo(Variant::INT, "process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_timer_process_mode", "get_timer_process_mode"); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "wait_time", PROPERTY_HINT_EXP_RANGE, "0.01,4096,0.01"), "set_wait_time", "get_wait_time"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "wait_time", PROPERTY_HINT_EXP_RANGE, "0.001,4096,0.001,or_greater"), "set_wait_time", "get_wait_time"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "one_shot"), "set_one_shot", "is_one_shot"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autostart"), "set_autostart", "has_autostart"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "paused", PROPERTY_HINT_NONE, "", 0), "set_paused", "is_paused"); diff --git a/scene/main/timer.h b/scene/main/timer.h index c492c6b61c..044566738e 100755 --- a/scene/main/timer.h +++ b/scene/main/timer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 3ad44a4a2e..a56903636f 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -30,6 +30,7 @@ #include "viewport.h" +#include "core/core_string_names.h" #include "core/os/input.h" #include "core/os/os.h" #include "core/project_settings.h" @@ -251,6 +252,27 @@ void Viewport::_collision_object_input_event(CollisionObject *p_object, Camera * physics_last_id = id; } +void Viewport::_own_world_changed() { + ERR_FAIL_COND(world.is_null()); + ERR_FAIL_COND(own_world.is_null()); + + if (is_inside_tree()) { + _propagate_exit_world(this); + } + + own_world = world->duplicate(); + + if (is_inside_tree()) { + _propagate_enter_world(this); + } + + if (is_inside_tree()) { + VisualServer::get_singleton()->viewport_set_scenario(viewport, find_world()->get_scenario()); + } + + _update_listener(); +} + void Viewport::_notification(int p_what) { switch (p_what) { @@ -1105,8 +1127,21 @@ void Viewport::set_world(const Ref<World> &p_world) { if (is_inside_tree()) _propagate_exit_world(this); + if (own_world.is_valid() && world.is_valid()) { + world->disconnect(CoreStringNames::get_singleton()->changed, this, "_own_world_changed"); + } + world = p_world; + if (own_world.is_valid()) { + if (world.is_valid()) { + own_world = world->duplicate(); + world->connect(CoreStringNames::get_singleton()->changed, this, "_own_world_changed"); + } else { + own_world = Ref<World>(memnew(World)); + } + } + if (is_inside_tree()) _propagate_enter_world(this); @@ -2407,12 +2442,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 +2669,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(); } @@ -2825,10 +2861,19 @@ void Viewport::set_use_own_world(bool p_world) { if (is_inside_tree()) _propagate_exit_world(this); - if (!p_world) + if (!p_world) { own_world = Ref<World>(); - else - own_world = Ref<World>(memnew(World)); + if (world.is_valid()) { + world->disconnect(CoreStringNames::get_singleton()->changed, this, "_own_world_changed"); + } + } else { + if (world.is_valid()) { + own_world = world->duplicate(); + world->connect(CoreStringNames::get_singleton()->changed, this, "_own_world_changed"); + } else { + own_world = Ref<World>(memnew(World)); + } + } if (is_inside_tree()) _propagate_enter_world(this); @@ -3177,6 +3222,8 @@ void Viewport::_bind_methods() { ClassDB::bind_method(D_METHOD("_subwindow_visibility_changed"), &Viewport::_subwindow_visibility_changed); + ClassDB::bind_method(D_METHOD("_own_world_changed"), &Viewport::_own_world_changed); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "arvr"), "set_use_arvr", "use_arvr"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size"), "set_size", "get_size"); @@ -3216,6 +3263,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/main/viewport.h b/scene/main/viewport.h index 3c3b436ca1..79b606cda3 100644 --- a/scene/main/viewport.h +++ b/scene/main/viewport.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -406,6 +406,8 @@ private: void _update_canvas_items(Node *p_node); + void _own_world_changed(); + protected: void _notification(int p_what); static void _bind_methods(); diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index 314fc721fc..09d4505458 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -372,6 +372,28 @@ void register_scene_types() { ClassDB::register_class<AnimationPlayer>(); ClassDB::register_class<Tween>(); + ClassDB::register_class<AnimationTreePlayer>(); + ClassDB::register_class<AnimationTree>(); + ClassDB::register_class<AnimationNode>(); + ClassDB::register_class<AnimationRootNode>(); + ClassDB::register_class<AnimationNodeBlendTree>(); + ClassDB::register_class<AnimationNodeBlendSpace1D>(); + ClassDB::register_class<AnimationNodeBlendSpace2D>(); + ClassDB::register_class<AnimationNodeStateMachine>(); + ClassDB::register_class<AnimationNodeStateMachinePlayback>(); + + ClassDB::register_class<AnimationNodeStateMachineTransition>(); + ClassDB::register_class<AnimationNodeOutput>(); + ClassDB::register_class<AnimationNodeOneShot>(); + ClassDB::register_class<AnimationNodeAnimation>(); + ClassDB::register_class<AnimationNodeAdd2>(); + ClassDB::register_class<AnimationNodeAdd3>(); + ClassDB::register_class<AnimationNodeBlend2>(); + ClassDB::register_class<AnimationNodeBlend3>(); + ClassDB::register_class<AnimationNodeTimeScale>(); + ClassDB::register_class<AnimationNodeTimeSeek>(); + ClassDB::register_class<AnimationNodeTransition>(); + OS::get_singleton()->yield(); //may take time to init #ifndef _3D_DISABLED @@ -399,7 +421,6 @@ void register_scene_types() { ClassDB::register_class<GIProbeData>(); ClassDB::register_class<BakedLightmap>(); ClassDB::register_class<BakedLightmapData>(); - ClassDB::register_class<AnimationTreePlayer>(); ClassDB::register_class<Particles>(); ClassDB::register_class<CPUParticles>(); ClassDB::register_class<Position3D>(); @@ -410,27 +431,6 @@ void register_scene_types() { ClassDB::register_class<RootMotionView>(); ClassDB::set_class_enabled("RootMotionView", false); //disabled by default, enabled by editor - ClassDB::register_class<AnimationTree>(); - ClassDB::register_class<AnimationNode>(); - ClassDB::register_class<AnimationRootNode>(); - ClassDB::register_class<AnimationNodeBlendTree>(); - ClassDB::register_class<AnimationNodeBlendSpace1D>(); - ClassDB::register_class<AnimationNodeBlendSpace2D>(); - ClassDB::register_class<AnimationNodeStateMachine>(); - ClassDB::register_class<AnimationNodeStateMachinePlayback>(); - - ClassDB::register_class<AnimationNodeStateMachineTransition>(); - ClassDB::register_class<AnimationNodeOutput>(); - ClassDB::register_class<AnimationNodeOneShot>(); - ClassDB::register_class<AnimationNodeAnimation>(); - ClassDB::register_class<AnimationNodeAdd2>(); - ClassDB::register_class<AnimationNodeAdd3>(); - ClassDB::register_class<AnimationNodeBlend2>(); - ClassDB::register_class<AnimationNodeBlend3>(); - ClassDB::register_class<AnimationNodeTimeScale>(); - ClassDB::register_class<AnimationNodeTimeSeek>(); - ClassDB::register_class<AnimationNodeTransition>(); - OS::get_singleton()->yield(); //may take time to init ClassDB::register_virtual_class<CollisionObject>(); diff --git a/scene/register_scene_types.h b/scene/register_scene_types.h index b551ad2ac4..603321991e 100644 --- a/scene/register_scene_types.h +++ b/scene/register_scene_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp index f4ac277d00..91d1e32053 100644 --- a/scene/resources/animation.cpp +++ b/scene/resources/animation.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/animation.h b/scene/resources/animation.h index d59dfab2c8..6ac0ea04d9 100644 --- a/scene/resources/animation.h +++ b/scene/resources/animation.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/audio_stream_sample.cpp b/scene/resources/audio_stream_sample.cpp index 286f9e37cd..bfc7f407eb 100644 --- a/scene/resources/audio_stream_sample.cpp +++ b/scene/resources/audio_stream_sample.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/audio_stream_sample.h b/scene/resources/audio_stream_sample.h index bb25b60835..d5d8f073fb 100644 --- a/scene/resources/audio_stream_sample.h +++ b/scene/resources/audio_stream_sample.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/bit_map.cpp b/scene/resources/bit_map.cpp index e6139dd707..06323a8d31 100644 --- a/scene/resources/bit_map.cpp +++ b/scene/resources/bit_map.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/bit_map.h b/scene/resources/bit_map.h index b062dd7376..ed332dffa4 100644 --- a/scene/resources/bit_map.h +++ b/scene/resources/bit_map.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/box_shape.cpp b/scene/resources/box_shape.cpp index c6fe14e55e..dee3943b8e 100644 --- a/scene/resources/box_shape.cpp +++ b/scene/resources/box_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/box_shape.h b/scene/resources/box_shape.h index 0bce929aee..b577a70e1e 100644 --- a/scene/resources/box_shape.h +++ b/scene/resources/box_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/canvas.cpp b/scene/resources/canvas.cpp index 0fc8b22046..1dbd02ea28 100644 --- a/scene/resources/canvas.cpp +++ b/scene/resources/canvas.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/canvas.h b/scene/resources/canvas.h index 4324b6227c..621911fe0a 100644 --- a/scene/resources/canvas.h +++ b/scene/resources/canvas.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/capsule_shape.cpp b/scene/resources/capsule_shape.cpp index 1ec3bd7158..61331a336d 100644 --- a/scene/resources/capsule_shape.cpp +++ b/scene/resources/capsule_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/capsule_shape.h b/scene/resources/capsule_shape.h index befbc1dcd5..8e7d7bcb94 100644 --- a/scene/resources/capsule_shape.h +++ b/scene/resources/capsule_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/capsule_shape_2d.cpp b/scene/resources/capsule_shape_2d.cpp index fde05bfb7f..008e8bb13d 100644 --- a/scene/resources/capsule_shape_2d.cpp +++ b/scene/resources/capsule_shape_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/capsule_shape_2d.h b/scene/resources/capsule_shape_2d.h index 3bedf7618d..8398fab839 100644 --- a/scene/resources/capsule_shape_2d.h +++ b/scene/resources/capsule_shape_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/circle_shape_2d.cpp b/scene/resources/circle_shape_2d.cpp index 76c1440861..7142309e28 100644 --- a/scene/resources/circle_shape_2d.cpp +++ b/scene/resources/circle_shape_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/circle_shape_2d.h b/scene/resources/circle_shape_2d.h index e2624ac8ed..cafd291f13 100644 --- a/scene/resources/circle_shape_2d.h +++ b/scene/resources/circle_shape_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/concave_polygon_shape.cpp b/scene/resources/concave_polygon_shape.cpp index dbc07ef591..48cc08eae4 100644 --- a/scene/resources/concave_polygon_shape.cpp +++ b/scene/resources/concave_polygon_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/concave_polygon_shape.h b/scene/resources/concave_polygon_shape.h index 57362a29be..5e371954d4 100644 --- a/scene/resources/concave_polygon_shape.h +++ b/scene/resources/concave_polygon_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/concave_polygon_shape_2d.cpp b/scene/resources/concave_polygon_shape_2d.cpp index de853f0c30..640f395158 100644 --- a/scene/resources/concave_polygon_shape_2d.cpp +++ b/scene/resources/concave_polygon_shape_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/concave_polygon_shape_2d.h b/scene/resources/concave_polygon_shape_2d.h index 8e3267dc2a..b95ed100e7 100644 --- a/scene/resources/concave_polygon_shape_2d.h +++ b/scene/resources/concave_polygon_shape_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/convex_polygon_shape.cpp b/scene/resources/convex_polygon_shape.cpp index af459ec311..1498eb4af9 100644 --- a/scene/resources/convex_polygon_shape.cpp +++ b/scene/resources/convex_polygon_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/convex_polygon_shape.h b/scene/resources/convex_polygon_shape.h index e6daf1bef4..4725d09b26 100644 --- a/scene/resources/convex_polygon_shape.h +++ b/scene/resources/convex_polygon_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/convex_polygon_shape_2d.cpp b/scene/resources/convex_polygon_shape_2d.cpp index d424fb2814..c404190398 100644 --- a/scene/resources/convex_polygon_shape_2d.cpp +++ b/scene/resources/convex_polygon_shape_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/convex_polygon_shape_2d.h b/scene/resources/convex_polygon_shape_2d.h index 8625b800ed..ed6be738ab 100644 --- a/scene/resources/convex_polygon_shape_2d.h +++ b/scene/resources/convex_polygon_shape_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/curve.cpp b/scene/resources/curve.cpp index bb14cf3ab1..397f6ca906 100644 --- a/scene/resources/curve.cpp +++ b/scene/resources/curve.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/curve.h b/scene/resources/curve.h index b677097e86..b02466534c 100644 --- a/scene/resources/curve.h +++ b/scene/resources/curve.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/cylinder_shape.cpp b/scene/resources/cylinder_shape.cpp index c1a0a0ac5d..d9f6e4f054 100644 --- a/scene/resources/cylinder_shape.cpp +++ b/scene/resources/cylinder_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/cylinder_shape.h b/scene/resources/cylinder_shape.h index 411c1515ed..ebddd4d92f 100644 --- a/scene/resources/cylinder_shape.h +++ b/scene/resources/cylinder_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index e82819f270..cc76df62e5 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -266,10 +266,10 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const // OptionButton - Ref<StyleBox> sb_optbutton_normal = sb_expand(make_stylebox(option_button_normal_png, 4, 4, 21, 4, 6, 3, 21, 3), 2, 2, 2, 2); - Ref<StyleBox> sb_optbutton_pressed = sb_expand(make_stylebox(option_button_pressed_png, 4, 4, 21, 4, 6, 3, 21, 3), 2, 2, 2, 2); - Ref<StyleBox> sb_optbutton_hover = sb_expand(make_stylebox(option_button_hover_png, 4, 4, 21, 4, 6, 2, 21, 2), 2, 2, 2, 2); - Ref<StyleBox> sb_optbutton_disabled = sb_expand(make_stylebox(option_button_disabled_png, 4, 4, 21, 4, 6, 2, 21, 2), 2, 2, 2, 2); + Ref<StyleBox> sb_optbutton_normal = sb_expand(make_stylebox(option_button_normal_png, 4, 4, 21, 4, 6, 3, 9, 3), 2, 2, 2, 2); + Ref<StyleBox> sb_optbutton_pressed = sb_expand(make_stylebox(option_button_pressed_png, 4, 4, 21, 4, 6, 3, 9, 3), 2, 2, 2, 2); + Ref<StyleBox> sb_optbutton_hover = sb_expand(make_stylebox(option_button_hover_png, 4, 4, 21, 4, 6, 2, 9, 2), 2, 2, 2, 2); + Ref<StyleBox> sb_optbutton_disabled = sb_expand(make_stylebox(option_button_disabled_png, 4, 4, 21, 4, 6, 2, 9, 2), 2, 2, 2, 2); Ref<StyleBox> sb_optbutton_focus = sb_expand(make_stylebox(button_focus_png, 4, 4, 4, 4, 6, 2, 6, 2), 2, 2, 2, 2); theme->set_stylebox("normal", "OptionButton", sb_optbutton_normal); @@ -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)); @@ -857,6 +851,8 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const theme->set_stylebox("bg", "GraphEdit", make_stylebox(tree_bg_png, 4, 4, 4, 5)); theme->set_color("grid_minor", "GraphEdit", Color(1, 1, 1, 0.05)); theme->set_color("grid_major", "GraphEdit", Color(1, 1, 1, 0.2)); + theme->set_color("selection_fill", "GraphEdit", Color(1, 1, 1, 0.3)); + theme->set_color("selection_stroke", "GraphEdit", Color(1, 1, 1, 0.8)); theme->set_color("activity", "GraphEdit", Color(1, 1, 1)); theme->set_constant("bezier_len_pos", "GraphEdit", 80 * scale); theme->set_constant("bezier_len_neg", "GraphEdit", 160 * scale); diff --git a/scene/resources/default_theme/default_theme.h b/scene/resources/default_theme/default_theme.h index e7d80ffb3d..1807770ff4 100644 --- a/scene/resources/default_theme/default_theme.h +++ b/scene/resources/default_theme/default_theme.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp index 99a2881d58..10d871aa92 100644 --- a/scene/resources/dynamic_font.cpp +++ b/scene/resources/dynamic_font.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -195,13 +195,13 @@ Error DynamicFontAtSize::_load() { if (FT_HAS_COLOR(face) && face->num_fixed_sizes > 0) { int best_match = 0; int diff = ABS(id.size - ((int64_t)face->available_sizes[0].width)); - scale_color_font = float(id.size) / face->available_sizes[0].width; + scale_color_font = float(id.size * oversampling) / face->available_sizes[0].width; for (int i = 1; i < face->num_fixed_sizes; i++) { int ndiff = ABS(id.size - ((int64_t)face->available_sizes[i].width)); if (ndiff < diff) { best_match = i; diff = ndiff; - scale_color_font = float(id.size) / face->available_sizes[i].width; + scale_color_font = float(id.size * oversampling) / face->available_sizes[i].width; } } FT_Select_Size(face, best_match); @@ -299,7 +299,7 @@ void DynamicFontAtSize::set_texture_flags(uint32_t p_flags) { } } -float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2 &p_pos, CharType p_char, CharType p_next, const Color &p_modulate, const Vector<Ref<DynamicFontAtSize> > &p_fallbacks, bool p_advance_only) const { +float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2 &p_pos, CharType p_char, CharType p_next, const Color &p_modulate, const Vector<Ref<DynamicFontAtSize> > &p_fallbacks, bool p_advance_only, bool p_outline) const { if (!valid) return 0; @@ -314,6 +314,20 @@ float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2 &p_pos, CharT float advance = 0.0; + // use normal character size if there's no outline charater + if (p_outline && !ch->found) { + FT_GlyphSlot slot = face->glyph; + int error = FT_Load_Char(face, p_char, FT_HAS_COLOR(face) ? FT_LOAD_COLOR : FT_LOAD_DEFAULT); + if (!error) { + error = FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL); + if (!error) { + Character character = Character::not_found(); + character = const_cast<DynamicFontAtSize *>(this)->_bitmap_to_character(slot->bitmap, slot->bitmap_top, slot->bitmap_left, slot->advance.x / 64.0); + advance = character.advance; + } + } + } + if (ch->found) { ERR_FAIL_COND_V(ch->texture_idx < -1 || ch->texture_idx >= font->textures.size(), 0); @@ -657,6 +671,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; @@ -874,7 +889,7 @@ float DynamicFont::draw_char(RID p_canvas_item, const Point2 &p_pos, CharType p_ // If requested outline draw, but no outline is present, simply return advance without drawing anything bool advance_only = p_outline && outline_cache_id.outline_size == 0; - return font_at_size->draw_char(p_canvas_item, p_pos, p_char, p_next, color, fallbacks, advance_only) + spacing_char; + return font_at_size->draw_char(p_canvas_item, p_pos, p_char, p_next, color, fallbacks, advance_only, p_outline) + spacing_char; } void DynamicFont::set_fallback(int p_idx, const Ref<DynamicFontData> &p_data) { diff --git a/scene/resources/dynamic_font.h b/scene/resources/dynamic_font.h index d0a709a2d3..2dafd3ce4f 100644 --- a/scene/resources/dynamic_font.h +++ b/scene/resources/dynamic_font.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -192,7 +192,7 @@ public: Size2 get_char_size(CharType p_char, CharType p_next, const Vector<Ref<DynamicFontAtSize> > &p_fallbacks) const; - float draw_char(RID p_canvas_item, const Point2 &p_pos, CharType p_char, CharType p_next, const Color &p_modulate, const Vector<Ref<DynamicFontAtSize> > &p_fallbacks, bool p_advance_only = false) const; + float draw_char(RID p_canvas_item, const Point2 &p_pos, CharType p_char, CharType p_next, const Color &p_modulate, const Vector<Ref<DynamicFontAtSize> > &p_fallbacks, bool p_advance_only = false, bool p_outline = false) const; void set_texture_flags(uint32_t p_flags); void update_oversampling(); diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp index bc96b5e9f3..7597cd636e 100644 --- a/scene/resources/environment.cpp +++ b/scene/resources/environment.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -978,7 +978,9 @@ void Environment::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "background_sky", PROPERTY_HINT_RESOURCE_TYPE, "Sky"), "set_sky", "get_sky"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "background_sky_custom_fov", PROPERTY_HINT_RANGE, "0,180,0.1"), "set_sky_custom_fov", "get_sky_custom_fov"); ADD_PROPERTY(PropertyInfo(Variant::BASIS, "background_sky_orientation"), "set_sky_orientation", "get_sky_orientation"); - ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "background_sky_rotation", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_sky_rotation", "get_sky_rotation"); + // Only display rotation in degrees in the inspector (like in Spatial). + // This avoids displaying the same information twice. + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "background_sky_rotation", PROPERTY_HINT_NONE, "", 0), "set_sky_rotation", "get_sky_rotation"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "background_sky_rotation_degrees", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_sky_rotation_degrees", "get_sky_rotation_degrees"); ADD_PROPERTY(PropertyInfo(Variant::COLOR, "background_color"), "set_bg_color", "get_bg_color"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "background_energy", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_bg_energy", "get_bg_energy"); diff --git a/scene/resources/environment.h b/scene/resources/environment.h index acce9c09a2..62c6c5b4cd 100644 --- a/scene/resources/environment.h +++ b/scene/resources/environment.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp index 124e4d37e6..960919df47 100644 --- a/scene/resources/font.cpp +++ b/scene/resources/font.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/font.h b/scene/resources/font.h index 9b99b85d22..411145c153 100644 --- a/scene/resources/font.h +++ b/scene/resources/font.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/gradient.cpp b/scene/resources/gradient.cpp index 1ff02c2f82..fe5a01886d 100644 --- a/scene/resources/gradient.cpp +++ b/scene/resources/gradient.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/gradient.h b/scene/resources/gradient.h index 7e7fc99a5d..2d98f799e2 100644 --- a/scene/resources/gradient.h +++ b/scene/resources/gradient.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/height_map_shape.cpp b/scene/resources/height_map_shape.cpp index 214706626d..2b86d658d8 100644 --- a/scene/resources/height_map_shape.cpp +++ b/scene/resources/height_map_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/height_map_shape.h b/scene/resources/height_map_shape.h index 4cf2a76213..3a976e3add 100644 --- a/scene/resources/height_map_shape.h +++ b/scene/resources/height_map_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/line_shape_2d.cpp b/scene/resources/line_shape_2d.cpp index f5d5fb561a..7f39467403 100644 --- a/scene/resources/line_shape_2d.cpp +++ b/scene/resources/line_shape_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/line_shape_2d.h b/scene/resources/line_shape_2d.h index f684862025..7babfe12f6 100644 --- a/scene/resources/line_shape_2d.h +++ b/scene/resources/line_shape_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index 41bf7f4bf0..ab4dbb758a 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -30,6 +30,8 @@ #include "material.h" +#include "core/engine.h" + #ifdef TOOLS_ENABLED #include "editor/editor_settings.h" #endif @@ -191,7 +193,10 @@ Variant ShaderMaterial::property_get_revert(const String &p_name) { void ShaderMaterial::set_shader(const Ref<Shader> &p_shader) { - if (shader.is_valid()) { + // Only connect/disconnect the signal when running in the editor. + // This can be a slow operation, and `_change_notify()` (which is called by `_shader_changed()`) + // does nothing in non-editor builds anyway. See GH-34741 for details. + if (shader.is_valid() && Engine::get_singleton()->is_editor_hint()) { shader->disconnect("changed", this, "_shader_changed"); } @@ -200,7 +205,10 @@ void ShaderMaterial::set_shader(const Ref<Shader> &p_shader) { RID rid; if (shader.is_valid()) { rid = shader->get_rid(); - shader->connect("changed", this, "_shader_changed"); + + if (Engine::get_singleton()->is_editor_hint()) { + shader->connect("changed", this, "_shader_changed"); + } } VS::get_singleton()->material_set_shader(_get_material(), rid); diff --git a/scene/resources/material.h b/scene/resources/material.h index 1c69a754b6..3c2a7c928a 100644 --- a/scene/resources/material.h +++ b/scene/resources/material.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -252,7 +252,7 @@ private: uint64_t flags : 18; uint64_t detail_blend_mode : 2; uint64_t diffuse_mode : 3; - uint64_t specular_mode : 2; + uint64_t specular_mode : 3; uint64_t invalid_key : 1; uint64_t deep_parallax : 1; uint64_t billboard_mode : 2; diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index 4afb07cb6f..0599920303 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -75,6 +75,7 @@ Ref<TriangleMesh> Mesh::generate_triangle_mesh() const { continue; Array a = surface_get_arrays(i); + ERR_FAIL_COND_V(a.empty(), Ref<TriangleMesh>()); int vc = surface_get_array_len(i); PoolVector<Vector3> vertices = a[ARRAY_VERTEX]; @@ -234,6 +235,7 @@ Ref<Shape> Mesh::create_convex_shape() const { for (int i = 0; i < get_surface_count(); i++) { Array a = surface_get_arrays(i); + ERR_FAIL_COND_V(a.empty(), Ref<ConvexPolygonShape>()); PoolVector<Vector3> v = a[ARRAY_VERTEX]; vertices.append_array(v); } @@ -273,6 +275,7 @@ Ref<Mesh> Mesh::create_outline(float p_margin) const { continue; Array a = surface_get_arrays(i); + ERR_FAIL_COND_V(a.empty(), Ref<ArrayMesh>()); if (i == 0) { arrays = a; @@ -378,6 +381,7 @@ Ref<Mesh> Mesh::create_outline(float p_margin) const { PoolVector<Vector3>::Write r = vertices.write(); if (indices.size()) { + ERR_FAIL_COND_V(indices.size() % 3 != 0, Ref<ArrayMesh>()); vc = indices.size(); ir = indices.write(); has_indices = true; @@ -483,6 +487,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/mesh.h b/scene/resources/mesh.h index 6b6ee8a209..30ce94f16b 100644 --- a/scene/resources/mesh.h +++ b/scene/resources/mesh.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/mesh_data_tool.cpp b/scene/resources/mesh_data_tool.cpp index 0c39c3cbb1..7a303443e3 100644 --- a/scene/resources/mesh_data_tool.cpp +++ b/scene/resources/mesh_data_tool.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/mesh_data_tool.h b/scene/resources/mesh_data_tool.h index 8f5def72c7..5ac2c7e702 100644 --- a/scene/resources/mesh_data_tool.h +++ b/scene/resources/mesh_data_tool.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/mesh_library.cpp b/scene/resources/mesh_library.cpp index f04af29761..754cad4def 100644 --- a/scene/resources/mesh_library.cpp +++ b/scene/resources/mesh_library.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/mesh_library.h b/scene/resources/mesh_library.h index 4ae4fc6483..471db74175 100644 --- a/scene/resources/mesh_library.h +++ b/scene/resources/mesh_library.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/multimesh.cpp b/scene/resources/multimesh.cpp index 99a17fb5b9..ee831f36f5 100644 --- a/scene/resources/multimesh.cpp +++ b/scene/resources/multimesh.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/multimesh.h b/scene/resources/multimesh.h index 6b17e9278d..9394737799 100644 --- a/scene/resources/multimesh.h +++ b/scene/resources/multimesh.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp index 7d62873bbd..3e7d350eec 100644 --- a/scene/resources/packed_scene.cpp +++ b/scene/resources/packed_scene.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -39,7 +39,7 @@ #include "scene/gui/control.h" #include "scene/main/instance_placeholder.h" -#define PACK_VERSION 2 +#define PACKED_SCENE_VERSION 2 bool SceneState::can_instance() const { @@ -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(); @@ -1092,7 +1095,15 @@ void SceneState::set_bundled_scene(const Dictionary &p_dictionary) { if (p_dictionary.has("version")) version = p_dictionary["version"]; - ERR_FAIL_COND_MSG(version > PACK_VERSION, "Save format version too new."); + ERR_FAIL_COND_MSG(version > PACKED_SCENE_VERSION, "Save format version too new."); + + const int node_count = p_dictionary["node_count"]; + const PoolVector<int> snodes = p_dictionary["nodes"]; + ERR_FAIL_COND(snodes.size() < node_count); + + const int conn_count = p_dictionary["conn_count"]; + const PoolVector<int> sconns = p_dictionary["conns"]; + ERR_FAIL_COND(sconns.size() < conn_count); PoolVector<String> snames = p_dictionary["names"]; if (snames.size()) { @@ -1118,13 +1129,11 @@ void SceneState::set_bundled_scene(const Dictionary &p_dictionary) { variants.clear(); } - nodes.resize(p_dictionary["node_count"]); - int nc = nodes.size(); - if (nc) { - PoolVector<int> snodes = p_dictionary["nodes"]; + nodes.resize(node_count); + if (node_count) { PoolVector<int>::Read r = snodes.read(); int idx = 0; - for (int i = 0; i < nc; i++) { + for (int i = 0; i < node_count; i++) { NodeData &nd = nodes.write[i]; nd.parent = r[idx++]; nd.owner = r[idx++]; @@ -1148,15 +1157,11 @@ void SceneState::set_bundled_scene(const Dictionary &p_dictionary) { } } - connections.resize(p_dictionary["conn_count"]); - int cc = connections.size(); - - if (cc) { - - PoolVector<int> sconns = p_dictionary["conns"]; + connections.resize(conn_count); + if (conn_count) { PoolVector<int>::Read r = sconns.read(); int idx = 0; - for (int i = 0; i < cc; i++) { + for (int i = 0; i < conn_count; i++) { ConnectionData &cd = connections.write[i]; cd.from = r[idx++]; cd.to = r[idx++]; @@ -1280,9 +1285,7 @@ Dictionary SceneState::get_bundled_scene() const { d["base_scene"] = base_scene_idx; } - d["version"] = PACK_VERSION; - - //d["path"]=path; + d["version"] = PACKED_SCENE_VERSION; return d; } diff --git a/scene/resources/packed_scene.h b/scene/resources/packed_scene.h index 3c05929dea..b4966e2528 100644 --- a/scene/resources/packed_scene.h +++ b/scene/resources/packed_scene.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/particles_material.cpp b/scene/resources/particles_material.cpp index c5956d9bc2..a058f42cb2 100644 --- a/scene/resources/particles_material.cpp +++ b/scene/resources/particles_material.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/particles_material.h b/scene/resources/particles_material.h index 6fe381db0a..643c2cb10e 100644 --- a/scene/resources/particles_material.h +++ b/scene/resources/particles_material.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/physics_material.cpp b/scene/resources/physics_material.cpp index 7d97c279ed..0db115ecc0 100644 --- a/scene/resources/physics_material.cpp +++ b/scene/resources/physics_material.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/physics_material.h b/scene/resources/physics_material.h index 30660e80ac..2f7f4424b2 100644 --- a/scene/resources/physics_material.h +++ b/scene/resources/physics_material.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/plane_shape.cpp b/scene/resources/plane_shape.cpp index d3274ec5f8..ddc820233e 100644 --- a/scene/resources/plane_shape.cpp +++ b/scene/resources/plane_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/plane_shape.h b/scene/resources/plane_shape.h index f853d1966b..8bea1268e5 100644 --- a/scene/resources/plane_shape.h +++ b/scene/resources/plane_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/polygon_path_finder.cpp b/scene/resources/polygon_path_finder.cpp index bd3236cb5b..9a1d478777 100644 --- a/scene/resources/polygon_path_finder.cpp +++ b/scene/resources/polygon_path_finder.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/polygon_path_finder.h b/scene/resources/polygon_path_finder.h index 59387e9672..2ef5c89e2a 100644 --- a/scene/resources/polygon_path_finder.h +++ b/scene/resources/polygon_path_finder.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/primitive_meshes.cpp b/scene/resources/primitive_meshes.cpp index 24fdaafbe1..74df72619a 100644 --- a/scene/resources/primitive_meshes.cpp +++ b/scene/resources/primitive_meshes.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/primitive_meshes.h b/scene/resources/primitive_meshes.h index fad49f9642..47126f1862 100644 --- a/scene/resources/primitive_meshes.h +++ b/scene/resources/primitive_meshes.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/ray_shape.cpp b/scene/resources/ray_shape.cpp index f185263a36..3062e96293 100644 --- a/scene/resources/ray_shape.cpp +++ b/scene/resources/ray_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/ray_shape.h b/scene/resources/ray_shape.h index fee7475c69..ddf9f56ea3 100644 --- a/scene/resources/ray_shape.h +++ b/scene/resources/ray_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/rectangle_shape_2d.cpp b/scene/resources/rectangle_shape_2d.cpp index ff0743a8dd..0030e6dd4f 100644 --- a/scene/resources/rectangle_shape_2d.cpp +++ b/scene/resources/rectangle_shape_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/rectangle_shape_2d.h b/scene/resources/rectangle_shape_2d.h index 27305e5918..686b421a2a 100644 --- a/scene/resources/rectangle_shape_2d.h +++ b/scene/resources/rectangle_shape_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/resource_format_text.cpp b/scene/resources/resource_format_text.cpp index baffc1396d..eb05defddd 100644 --- a/scene/resources/resource_format_text.cpp +++ b/scene/resources/resource_format_text.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/resource_format_text.h b/scene/resources/resource_format_text.h index 0041989f09..66c69725e8 100644 --- a/scene/resources/resource_format_text.h +++ b/scene/resources/resource_format_text.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/room.cpp b/scene/resources/room.cpp index 103a7ede74..51c4489ec3 100644 --- a/scene/resources/room.cpp +++ b/scene/resources/room.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/room.h b/scene/resources/room.h index 2c53ea1aed..809a9c1de8 100644 --- a/scene/resources/room.h +++ b/scene/resources/room.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/segment_shape_2d.cpp b/scene/resources/segment_shape_2d.cpp index 62c5f9bab3..0070de72a2 100644 --- a/scene/resources/segment_shape_2d.cpp +++ b/scene/resources/segment_shape_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/segment_shape_2d.h b/scene/resources/segment_shape_2d.h index f35707b990..aaf838ebfb 100644 --- a/scene/resources/segment_shape_2d.h +++ b/scene/resources/segment_shape_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp index 57e2470164..44c2a46065 100644 --- a/scene/resources/shader.cpp +++ b/scene/resources/shader.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/shader.h b/scene/resources/shader.h index 6e7447839f..67ae436a4c 100644 --- a/scene/resources/shader.h +++ b/scene/resources/shader.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/shape.cpp b/scene/resources/shape.cpp index 3500fdb4bc..b50c68727a 100644 --- a/scene/resources/shape.cpp +++ b/scene/resources/shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/shape.h b/scene/resources/shape.h index 2743fd0c65..8fc265f3bc 100644 --- a/scene/resources/shape.h +++ b/scene/resources/shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/shape_2d.cpp b/scene/resources/shape_2d.cpp index e2407e4423..9e97c65a3c 100644 --- a/scene/resources/shape_2d.cpp +++ b/scene/resources/shape_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/shape_2d.h b/scene/resources/shape_2d.h index da9b80477c..13ad7492ae 100644 --- a/scene/resources/shape_2d.h +++ b/scene/resources/shape_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/skin.cpp b/scene/resources/skin.cpp index 98c114e0e6..9c8710a59c 100644 --- a/scene/resources/skin.cpp +++ b/scene/resources/skin.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/skin.h b/scene/resources/skin.h index 7dd02eca5d..ddc7c655f5 100644 --- a/scene/resources/skin.h +++ b/scene/resources/skin.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/sky.cpp b/scene/resources/sky.cpp index 292fdcdbd2..c20fbb4129 100644 --- a/scene/resources/sky.cpp +++ b/scene/resources/sky.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/sky.h b/scene/resources/sky.h index 3a6f44e11b..70ea9c4c18 100644 --- a/scene/resources/sky.h +++ b/scene/resources/sky.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/space_2d.cpp b/scene/resources/space_2d.cpp index e6d366c501..376e926548 100644 --- a/scene/resources/space_2d.cpp +++ b/scene/resources/space_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/space_2d.h b/scene/resources/space_2d.h index ced7c87406..ff88c40348 100644 --- a/scene/resources/space_2d.h +++ b/scene/resources/space_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/sphere_shape.cpp b/scene/resources/sphere_shape.cpp index 019bc9189a..f408717834 100644 --- a/scene/resources/sphere_shape.cpp +++ b/scene/resources/sphere_shape.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/sphere_shape.h b/scene/resources/sphere_shape.h index 679882fe23..6002a3baeb 100644 --- a/scene/resources/sphere_shape.h +++ b/scene/resources/sphere_shape.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp index d56360f918..9408d1aa71 100644 --- a/scene/resources/style_box.cpp +++ b/scene/resources/style_box.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -81,6 +81,10 @@ Size2 StyleBox::get_center_size() const { return Size2(); } +Rect2 StyleBox::get_draw_rect(const Rect2 &p_rect) const { + return p_rect; +} + void StyleBox::_bind_methods() { ClassDB::bind_method(D_METHOD("test_mask", "point", "rect"), &StyleBox::test_mask); @@ -175,6 +179,10 @@ float StyleBoxTexture::get_style_margin(Margin p_margin) const { return margin[p_margin]; } +Rect2 StyleBoxTexture::get_draw_rect(const Rect2 &p_rect) const { + return p_rect.grow_individual(expand_margin[MARGIN_LEFT], expand_margin[MARGIN_TOP], expand_margin[MARGIN_RIGHT], expand_margin[MARGIN_BOTTOM]); +} + void StyleBoxTexture::draw(RID p_canvas_item, const Rect2 &p_rect) const { if (texture.is_null()) return; @@ -546,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 { @@ -582,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) { @@ -602,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); @@ -685,6 +690,19 @@ inline void adapt_values(int p_index_a, int p_index_b, int *adapted_values, cons adapted_values[p_index_a] = MIN(p_max_a, adapted_values[p_index_a]); adapted_values[p_index_b] = MIN(p_max_b, adapted_values[p_index_b]); } + +Rect2 StyleBoxFlat::get_draw_rect(const Rect2 &p_rect) const { + Rect2 draw_rect = p_rect.grow_individual(expand_margin[MARGIN_LEFT], expand_margin[MARGIN_TOP], expand_margin[MARGIN_RIGHT], expand_margin[MARGIN_BOTTOM]); + + if (shadow_size > 0) { + Rect2 shadow_rect = draw_rect.grow(shadow_size); + shadow_rect.position += shadow_offset; + draw_rect = draw_rect.merge(shadow_rect); + } + + return draw_rect; +} + void StyleBoxFlat::draw(RID p_canvas_item, const Rect2 &p_rect) const { //PREPARATIONS @@ -701,21 +719,13 @@ 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); + float aa_size_grow = 0.5 * ((float)aa_size + 1.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); @@ -733,6 +743,15 @@ 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) { + 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; @@ -740,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; @@ -751,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; 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_border_width[i] = 0; + 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); } } @@ -811,20 +834,17 @@ 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); } } //COMPUTE UV COORDINATES - Rect2 uv_rect = style_rect.grow(aa_on ? aa_size : 0); + Rect2 uv_rect = style_rect.grow(aa_on ? aa_size_grow : 0); uvs.resize(verts.size()); for (int i = 0; i < verts.size(); i++) { uvs.write[i].x = (verts[i].x - uv_rect.position.x) / uv_rect.size.width; @@ -910,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/style_box.h b/scene/resources/style_box.h index d02e107480..3e0fffdcd9 100644 --- a/scene/resources/style_box.h +++ b/scene/resources/style_box.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -56,6 +56,7 @@ public: float get_margin(Margin p_margin) const; virtual Size2 get_center_size() const; + virtual Rect2 get_draw_rect(const Rect2 &p_rect) const; virtual void draw(RID p_canvas_item, const Rect2 &p_rect) const = 0; CanvasItem *get_current_item_drawn() const; @@ -133,6 +134,7 @@ public: void set_modulate(const Color &p_modulate); Color get_modulate() const; + virtual Rect2 get_draw_rect(const Rect2 &p_rect) const; virtual void draw(RID p_canvas_item, const Rect2 &p_rect) const; StyleBoxTexture(); @@ -227,6 +229,7 @@ public: virtual Size2 get_center_size() const; + virtual Rect2 get_draw_rect(const Rect2 &p_rect) const; virtual void draw(RID p_canvas_item, const Rect2 &p_rect) const; StyleBoxFlat(); diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp index b294991248..f921a9695c 100644 --- a/scene/resources/surface_tool.cpp +++ b/scene/resources/surface_tool.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/surface_tool.h b/scene/resources/surface_tool.h index e3aec6ce0e..89034f656d 100644 --- a/scene/resources/surface_tool.h +++ b/scene/resources/surface_tool.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/text_file.cpp b/scene/resources/text_file.cpp index 3faedc883d..af55d2dde3 100644 --- a/scene/resources/text_file.cpp +++ b/scene/resources/text_file.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/text_file.h b/scene/resources/text_file.h index 7127eaeb93..666c088d04 100644 --- a/scene/resources/text_file.h +++ b/scene/resources/text_file.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp index 593c399f62..4d23f0eb41 100644 --- a/scene/resources/texture.cpp +++ b/scene/resources/texture.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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; }; @@ -2270,6 +2271,7 @@ void TextureLayered::create(uint32_t p_width, uint32_t p_height, uint32_t p_dept void TextureLayered::set_layer_data(const Ref<Image> &p_image, int p_layer) { ERR_FAIL_COND(!texture.is_valid()); + ERR_FAIL_COND(!p_image.is_valid()); VS::get_singleton()->texture_set_data(texture, p_image, p_layer); } @@ -2281,6 +2283,7 @@ Ref<Image> TextureLayered::get_layer_data(int p_layer) const { void TextureLayered::set_data_partial(const Ref<Image> &p_image, int p_x_ofs, int p_y_ofs, int p_z, int p_mipmap) { ERR_FAIL_COND(!texture.is_valid()); + ERR_FAIL_COND(!p_image.is_valid()); VS::get_singleton()->texture_set_data_partial(texture, p_image, 0, 0, p_image->get_width(), p_image->get_height(), p_x_ofs, p_y_ofs, p_mipmap, p_z); } diff --git a/scene/resources/texture.h b/scene/resources/texture.h index e535f7544a..fcd8547d07 100644 --- a/scene/resources/texture.h +++ b/scene/resources/texture.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp index c897365b21..1f2fa1d60b 100644 --- a/scene/resources/theme.cpp +++ b/scene/resources/theme.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/theme.h b/scene/resources/theme.h index 471e5b1a51..4bb614b24e 100644 --- a/scene/resources/theme.h +++ b/scene/resources/theme.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp index 16a95e65a8..d9caf1d657 100644 --- a/scene/resources/tile_set.cpp +++ b/scene/resources/tile_set.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/tile_set.h b/scene/resources/tile_set.h index 5fc22b9fc6..eab40ce467 100644 --- a/scene/resources/tile_set.h +++ b/scene/resources/tile_set.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/video_stream.cpp b/scene/resources/video_stream.cpp index a85db0c592..81b4477c9a 100644 --- a/scene/resources/video_stream.cpp +++ b/scene/resources/video_stream.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/video_stream.h b/scene/resources/video_stream.h index 81c7b062cc..d8aee2eac3 100644 --- a/scene/resources/video_stream.h +++ b/scene/resources/video_stream.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 9f99732714..37792eaaea 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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.h b/scene/resources/visual_shader.h index 09222c8d81..0a3d5f96bd 100644 --- a/scene/resources/visual_shader.h +++ b/scene/resources/visual_shader.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/visual_shader_nodes.cpp b/scene/resources/visual_shader_nodes.cpp index 4c168b7c9b..f46fba3b5b 100644 --- a/scene/resources/visual_shader_nodes.cpp +++ b/scene/resources/visual_shader_nodes.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/scene/resources/visual_shader_nodes.h b/scene/resources/visual_shader_nodes.h index 144350423c..0f428088e0 100644 --- a/scene/resources/visual_shader_nodes.h +++ b/scene/resources/visual_shader_nodes.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/world.cpp b/scene/resources/world.cpp index 2c22f45f9d..1099852098 100644 --- a/scene/resources/world.cpp +++ b/scene/resources/world.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -268,12 +268,17 @@ RID World::get_scenario() const { } void World::set_environment(const Ref<Environment> &p_environment) { + if (environment == p_environment) { + return; + } environment = p_environment; if (environment.is_valid()) VS::get_singleton()->scenario_set_environment(scenario, environment->get_rid()); else VS::get_singleton()->scenario_set_environment(scenario, RID()); + + emit_changed(); } Ref<Environment> World::get_environment() const { @@ -282,12 +287,17 @@ Ref<Environment> World::get_environment() const { } void World::set_fallback_environment(const Ref<Environment> &p_environment) { + if (fallback_environment == p_environment) { + return; + } fallback_environment = p_environment; if (fallback_environment.is_valid()) VS::get_singleton()->scenario_set_fallback_environment(scenario, p_environment->get_rid()); else VS::get_singleton()->scenario_set_fallback_environment(scenario, RID()); + + emit_changed(); } Ref<Environment> World::get_fallback_environment() const { diff --git a/scene/resources/world.h b/scene/resources/world.h index 05d5ceb411..b6248b28c8 100644 --- a/scene/resources/world.h +++ b/scene/resources/world.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/world_2d.cpp b/scene/resources/world_2d.cpp index b5743ad416..5cc809d8e3 100644 --- a/scene/resources/world_2d.cpp +++ b/scene/resources/world_2d.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/resources/world_2d.h b/scene/resources/world_2d.h index e0c671e1a7..d837ef58c2 100644 --- a/scene/resources/world_2d.h +++ b/scene/resources/world_2d.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/scene_string_names.cpp b/scene/scene_string_names.cpp index 634f4d7160..6299c3a801 100644 --- a/scene/scene_string_names.cpp +++ b/scene/scene_string_names.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/scene/scene_string_names.h b/scene/scene_string_names.h index bc75165b8c..eeeaf22b01 100644 --- a/scene/scene_string_names.h +++ b/scene/scene_string_names.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/arvr/arvr_interface.cpp b/servers/arvr/arvr_interface.cpp index e1b7611354..577b4cdd8a 100644 --- a/servers/arvr/arvr_interface.cpp +++ b/servers/arvr/arvr_interface.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/arvr/arvr_interface.h b/servers/arvr/arvr_interface.h index 85556b2757..f33ddb2411 100644 --- a/servers/arvr/arvr_interface.h +++ b/servers/arvr/arvr_interface.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/arvr/arvr_positional_tracker.cpp b/servers/arvr/arvr_positional_tracker.cpp index cbda3556c5..4438475d44 100644 --- a/servers/arvr/arvr_positional_tracker.cpp +++ b/servers/arvr/arvr_positional_tracker.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/arvr/arvr_positional_tracker.h b/servers/arvr/arvr_positional_tracker.h index 775579b089..03c6b33ffe 100644 --- a/servers/arvr/arvr_positional_tracker.h +++ b/servers/arvr/arvr_positional_tracker.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/arvr_server.cpp b/servers/arvr_server.cpp index f7ce1d3c5d..a5bb9f794d 100644 --- a/servers/arvr_server.cpp +++ b/servers/arvr_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/arvr_server.h b/servers/arvr_server.h index c0301ebaab..af1d2ba39f 100644 --- a/servers/arvr_server.h +++ b/servers/arvr_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_driver_dummy.cpp b/servers/audio/audio_driver_dummy.cpp index c151326e5e..5389c64099 100644 --- a/servers/audio/audio_driver_dummy.cpp +++ b/servers/audio/audio_driver_dummy.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_driver_dummy.h b/servers/audio/audio_driver_dummy.h index 1a2839d9cb..ba99e5a239 100644 --- a/servers/audio/audio_driver_dummy.h +++ b/servers/audio/audio_driver_dummy.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_effect.cpp b/servers/audio/audio_effect.cpp index dc73596952..d7279cdf48 100644 --- a/servers/audio/audio_effect.cpp +++ b/servers/audio/audio_effect.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_effect.h b/servers/audio/audio_effect.h index 8ae716db20..76cb8a209c 100644 --- a/servers/audio/audio_effect.h +++ b/servers/audio/audio_effect.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_filter_sw.cpp b/servers/audio/audio_filter_sw.cpp index ca033f6079..c0bf4f3a55 100644 --- a/servers/audio/audio_filter_sw.cpp +++ b/servers/audio/audio_filter_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_filter_sw.h b/servers/audio/audio_filter_sw.h index 6b51a1d9ef..61088eec55 100644 --- a/servers/audio/audio_filter_sw.h +++ b/servers/audio/audio_filter_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_rb_resampler.cpp b/servers/audio/audio_rb_resampler.cpp index ad5bcde382..092c3315ee 100644 --- a/servers/audio/audio_rb_resampler.cpp +++ b/servers/audio/audio_rb_resampler.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_rb_resampler.h b/servers/audio/audio_rb_resampler.h index 5b945cd953..8cd9714d57 100644 --- a/servers/audio/audio_rb_resampler.h +++ b/servers/audio/audio_rb_resampler.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp index c651c177b5..6b286e09e9 100644 --- a/servers/audio/audio_stream.cpp +++ b/servers/audio/audio_stream.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/audio_stream.h b/servers/audio/audio_stream.h index 4548f8f036..58775c3d94 100644 --- a/servers/audio/audio_stream.h +++ b/servers/audio/audio_stream.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_amplify.cpp b/servers/audio/effects/audio_effect_amplify.cpp index 21a09297b2..938d29f764 100644 --- a/servers/audio/effects/audio_effect_amplify.cpp +++ b/servers/audio/effects/audio_effect_amplify.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_amplify.h b/servers/audio/effects/audio_effect_amplify.h index 4a98196d94..06e64ca3ce 100644 --- a/servers/audio/effects/audio_effect_amplify.h +++ b/servers/audio/effects/audio_effect_amplify.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_chorus.cpp b/servers/audio/effects/audio_effect_chorus.cpp index 216a0a4aa6..58943582c9 100644 --- a/servers/audio/effects/audio_effect_chorus.cpp +++ b/servers/audio/effects/audio_effect_chorus.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_chorus.h b/servers/audio/effects/audio_effect_chorus.h index 417cc0c035..ab5053b919 100644 --- a/servers/audio/effects/audio_effect_chorus.h +++ b/servers/audio/effects/audio_effect_chorus.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_compressor.cpp b/servers/audio/effects/audio_effect_compressor.cpp index 10f883d16c..1ef3bb9b10 100644 --- a/servers/audio/effects/audio_effect_compressor.cpp +++ b/servers/audio/effects/audio_effect_compressor.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_compressor.h b/servers/audio/effects/audio_effect_compressor.h index 0fe956f60b..2882f2e452 100644 --- a/servers/audio/effects/audio_effect_compressor.h +++ b/servers/audio/effects/audio_effect_compressor.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_delay.cpp b/servers/audio/effects/audio_effect_delay.cpp index 8d34d46313..21d979a78c 100644 --- a/servers/audio/effects/audio_effect_delay.cpp +++ b/servers/audio/effects/audio_effect_delay.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_delay.h b/servers/audio/effects/audio_effect_delay.h index ee778c70dc..595793488c 100644 --- a/servers/audio/effects/audio_effect_delay.h +++ b/servers/audio/effects/audio_effect_delay.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_distortion.cpp b/servers/audio/effects/audio_effect_distortion.cpp index 278647c304..8f2c0743ef 100644 --- a/servers/audio/effects/audio_effect_distortion.cpp +++ b/servers/audio/effects/audio_effect_distortion.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_distortion.h b/servers/audio/effects/audio_effect_distortion.h index 0b5ad0ec9e..e92334b3b8 100644 --- a/servers/audio/effects/audio_effect_distortion.h +++ b/servers/audio/effects/audio_effect_distortion.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_eq.cpp b/servers/audio/effects/audio_effect_eq.cpp index 150f9db78f..ecd5f04d5f 100644 --- a/servers/audio/effects/audio_effect_eq.cpp +++ b/servers/audio/effects/audio_effect_eq.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_eq.h b/servers/audio/effects/audio_effect_eq.h index dc75e566e7..7551b85e95 100644 --- a/servers/audio/effects/audio_effect_eq.h +++ b/servers/audio/effects/audio_effect_eq.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_filter.cpp b/servers/audio/effects/audio_effect_filter.cpp index 3841f2b5a0..9ba5ceb500 100644 --- a/servers/audio/effects/audio_effect_filter.cpp +++ b/servers/audio/effects/audio_effect_filter.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_filter.h b/servers/audio/effects/audio_effect_filter.h index bb0d451522..0088118d8c 100644 --- a/servers/audio/effects/audio_effect_filter.h +++ b/servers/audio/effects/audio_effect_filter.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_limiter.cpp b/servers/audio/effects/audio_effect_limiter.cpp index 9eaab11106..d495964719 100644 --- a/servers/audio/effects/audio_effect_limiter.cpp +++ b/servers/audio/effects/audio_effect_limiter.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_limiter.h b/servers/audio/effects/audio_effect_limiter.h index bf7167e3f4..9bac78578e 100644 --- a/servers/audio/effects/audio_effect_limiter.h +++ b/servers/audio/effects/audio_effect_limiter.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_panner.cpp b/servers/audio/effects/audio_effect_panner.cpp index 95212fee78..b9e95f44df 100644 --- a/servers/audio/effects/audio_effect_panner.cpp +++ b/servers/audio/effects/audio_effect_panner.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_panner.h b/servers/audio/effects/audio_effect_panner.h index 7bd5a09fc6..6e0eb226f5 100644 --- a/servers/audio/effects/audio_effect_panner.h +++ b/servers/audio/effects/audio_effect_panner.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_phaser.cpp b/servers/audio/effects/audio_effect_phaser.cpp index b8768501e9..d811522576 100644 --- a/servers/audio/effects/audio_effect_phaser.cpp +++ b/servers/audio/effects/audio_effect_phaser.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_phaser.h b/servers/audio/effects/audio_effect_phaser.h index b76d6bb29c..d071970b6a 100644 --- a/servers/audio/effects/audio_effect_phaser.h +++ b/servers/audio/effects/audio_effect_phaser.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_pitch_shift.cpp b/servers/audio/effects/audio_effect_pitch_shift.cpp index ec3182685f..28185e591f 100644 --- a/servers/audio/effects/audio_effect_pitch_shift.cpp +++ b/servers/audio/effects/audio_effect_pitch_shift.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_pitch_shift.h b/servers/audio/effects/audio_effect_pitch_shift.h index 2028496ebf..c6528bafa9 100644 --- a/servers/audio/effects/audio_effect_pitch_shift.h +++ b/servers/audio/effects/audio_effect_pitch_shift.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_record.cpp b/servers/audio/effects/audio_effect_record.cpp index 83d78daff4..9b1fb1fefb 100644 --- a/servers/audio/effects/audio_effect_record.cpp +++ b/servers/audio/effects/audio_effect_record.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/audio/effects/audio_effect_record.h b/servers/audio/effects/audio_effect_record.h index d9bf39eb5f..09101033be 100644 --- a/servers/audio/effects/audio_effect_record.h +++ b/servers/audio/effects/audio_effect_record.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_reverb.cpp b/servers/audio/effects/audio_effect_reverb.cpp index 003ac452d2..caa2d8ab26 100644 --- a/servers/audio/effects/audio_effect_reverb.cpp +++ b/servers/audio/effects/audio_effect_reverb.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_reverb.h b/servers/audio/effects/audio_effect_reverb.h index 31a796bf98..6a34bc63c5 100644 --- a/servers/audio/effects/audio_effect_reverb.h +++ b/servers/audio/effects/audio_effect_reverb.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_spectrum_analyzer.cpp b/servers/audio/effects/audio_effect_spectrum_analyzer.cpp index bb1daf04a4..d4bd3e2461 100644 --- a/servers/audio/effects/audio_effect_spectrum_analyzer.cpp +++ b/servers/audio/effects/audio_effect_spectrum_analyzer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_spectrum_analyzer.h b/servers/audio/effects/audio_effect_spectrum_analyzer.h index 27eb88d29f..8e735b8b50 100644 --- a/servers/audio/effects/audio_effect_spectrum_analyzer.h +++ b/servers/audio/effects/audio_effect_spectrum_analyzer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_stereo_enhance.cpp b/servers/audio/effects/audio_effect_stereo_enhance.cpp index 8945675e07..e8b8f47676 100644 --- a/servers/audio/effects/audio_effect_stereo_enhance.cpp +++ b/servers/audio/effects/audio_effect_stereo_enhance.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_effect_stereo_enhance.h b/servers/audio/effects/audio_effect_stereo_enhance.h index 44b7d3eb5c..c801049283 100644 --- a/servers/audio/effects/audio_effect_stereo_enhance.h +++ b/servers/audio/effects/audio_effect_stereo_enhance.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_stream_generator.cpp b/servers/audio/effects/audio_stream_generator.cpp index 49af63e82a..9e1019afbc 100644 --- a/servers/audio/effects/audio_stream_generator.cpp +++ b/servers/audio/effects/audio_stream_generator.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/audio_stream_generator.h b/servers/audio/effects/audio_stream_generator.h index 33839d3db8..f1cd73d266 100644 --- a/servers/audio/effects/audio_stream_generator.h +++ b/servers/audio/effects/audio_stream_generator.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/eq.cpp b/servers/audio/effects/eq.cpp index a9b576b1d9..426f178dcb 100644 --- a/servers/audio/effects/eq.cpp +++ b/servers/audio/effects/eq.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/eq.h b/servers/audio/effects/eq.h index 2c407ee60e..6c002effbf 100644 --- a/servers/audio/effects/eq.h +++ b/servers/audio/effects/eq.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/reverb.cpp b/servers/audio/effects/reverb.cpp index 1f9fa23763..9946a5eeef 100644 --- a/servers/audio/effects/reverb.cpp +++ b/servers/audio/effects/reverb.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/effects/reverb.h b/servers/audio/effects/reverb.h index 6a2e291466..92e4aed435 100644 --- a/servers/audio/effects/reverb.h +++ b/servers/audio/effects/reverb.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/reverb_sw.cpp b/servers/audio/reverb_sw.cpp index 63bf1a7eaa..3bf0b0ea96 100644 --- a/servers/audio/reverb_sw.cpp +++ b/servers/audio/reverb_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/reverb_sw.h b/servers/audio/reverb_sw.h index 1a2e2e2bb8..13c63e602a 100644 --- a/servers/audio/reverb_sw.h +++ b/servers/audio/reverb_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio/voice_rb_sw.h b/servers/audio/voice_rb_sw.h index 1f0c88ed30..c51076035c 100644 --- a/servers/audio/voice_rb_sw.h +++ b/servers/audio/voice_rb_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp index 1da0146084..ccb406bf9a 100644 --- a/servers/audio_server.cpp +++ b/servers/audio_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/audio_server.h b/servers/audio_server.h index da4b9daf5b..8037c7feed 100644 --- a/servers/audio_server.h +++ b/servers/audio_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/camera/camera_feed.cpp b/servers/camera/camera_feed.cpp index 094c83cd7c..f58a8bfaaa 100644 --- a/servers/camera/camera_feed.cpp +++ b/servers/camera/camera_feed.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/camera/camera_feed.h b/servers/camera/camera_feed.h index 0c53ff9309..d5029812c1 100644 --- a/servers/camera/camera_feed.h +++ b/servers/camera/camera_feed.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/camera_server.cpp b/servers/camera_server.cpp index 0f93221072..fd88d15e58 100644 --- a/servers/camera_server.cpp +++ b/servers/camera_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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..c4b3d9f5c9 100644 --- a/servers/camera_server.h +++ b/servers/camera_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/area_pair_sw.cpp b/servers/physics/area_pair_sw.cpp index fed24e0b58..966a440930 100644 --- a/servers/physics/area_pair_sw.cpp +++ b/servers/physics/area_pair_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/area_pair_sw.h b/servers/physics/area_pair_sw.h index 48113d0580..97a37ebf90 100644 --- a/servers/physics/area_pair_sw.h +++ b/servers/physics/area_pair_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/area_sw.cpp b/servers/physics/area_sw.cpp index ad3e40916d..f9f7f67a1e 100644 --- a/servers/physics/area_sw.cpp +++ b/servers/physics/area_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/area_sw.h b/servers/physics/area_sw.h index 9b14055507..846243a133 100644 --- a/servers/physics/area_sw.h +++ b/servers/physics/area_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/body_pair_sw.cpp b/servers/physics/body_pair_sw.cpp index dbe4fbd700..31fc1b07d9 100644 --- a/servers/physics/body_pair_sw.cpp +++ b/servers/physics/body_pair_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/body_pair_sw.h b/servers/physics/body_pair_sw.h index cd2355d5a1..235aab23b5 100644 --- a/servers/physics/body_pair_sw.h +++ b/servers/physics/body_pair_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/body_sw.cpp b/servers/physics/body_sw.cpp index ba98e14d2e..64e07e1155 100644 --- a/servers/physics/body_sw.cpp +++ b/servers/physics/body_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/body_sw.h b/servers/physics/body_sw.h index 05c61639de..ee4dd0b310 100644 --- a/servers/physics/body_sw.h +++ b/servers/physics/body_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/broad_phase_basic.cpp b/servers/physics/broad_phase_basic.cpp index 13b91f2be9..f49bf9d4cc 100644 --- a/servers/physics/broad_phase_basic.cpp +++ b/servers/physics/broad_phase_basic.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/broad_phase_basic.h b/servers/physics/broad_phase_basic.h index 3d63a70074..424889d8aa 100644 --- a/servers/physics/broad_phase_basic.h +++ b/servers/physics/broad_phase_basic.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/broad_phase_octree.cpp b/servers/physics/broad_phase_octree.cpp index 1b59779bd6..a9aa662abf 100644 --- a/servers/physics/broad_phase_octree.cpp +++ b/servers/physics/broad_phase_octree.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/broad_phase_octree.h b/servers/physics/broad_phase_octree.h index f4b5d3f2a7..e2a1d82b69 100644 --- a/servers/physics/broad_phase_octree.h +++ b/servers/physics/broad_phase_octree.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/broad_phase_sw.cpp b/servers/physics/broad_phase_sw.cpp index f90520d373..a6fc253b1b 100644 --- a/servers/physics/broad_phase_sw.cpp +++ b/servers/physics/broad_phase_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/broad_phase_sw.h b/servers/physics/broad_phase_sw.h index 9ffbd8986b..e69a2d24ed 100644 --- a/servers/physics/broad_phase_sw.h +++ b/servers/physics/broad_phase_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/collision_object_sw.cpp b/servers/physics/collision_object_sw.cpp index 39de440da2..cdae26078c 100644 --- a/servers/physics/collision_object_sw.cpp +++ b/servers/physics/collision_object_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/collision_object_sw.h b/servers/physics/collision_object_sw.h index 08708e2f60..7c0e66ff90 100644 --- a/servers/physics/collision_object_sw.h +++ b/servers/physics/collision_object_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/collision_solver_sat.cpp b/servers/physics/collision_solver_sat.cpp index a13fa65009..0e0dfd3cf2 100644 --- a/servers/physics/collision_solver_sat.cpp +++ b/servers/physics/collision_solver_sat.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/collision_solver_sat.h b/servers/physics/collision_solver_sat.h index 1bbe1de9be..31895231f0 100644 --- a/servers/physics/collision_solver_sat.h +++ b/servers/physics/collision_solver_sat.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/collision_solver_sw.cpp b/servers/physics/collision_solver_sw.cpp index d970dd39fb..ce24ba6bca 100644 --- a/servers/physics/collision_solver_sw.cpp +++ b/servers/physics/collision_solver_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/collision_solver_sw.h b/servers/physics/collision_solver_sw.h index 0a8a17e5e2..d4dc1ac2a2 100644 --- a/servers/physics/collision_solver_sw.h +++ b/servers/physics/collision_solver_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/constraint_sw.h b/servers/physics/constraint_sw.h index e92c2c08fa..a28aa74618 100644 --- a/servers/physics/constraint_sw.h +++ b/servers/physics/constraint_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/gjk_epa.cpp b/servers/physics/gjk_epa.cpp index 1d5ca42838..abf0c0dc15 100644 --- a/servers/physics/gjk_epa.cpp +++ b/servers/physics/gjk_epa.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/gjk_epa.h b/servers/physics/gjk_epa.h index d3fa192804..38c616cde0 100644 --- a/servers/physics/gjk_epa.h +++ b/servers/physics/gjk_epa.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints/cone_twist_joint_sw.cpp b/servers/physics/joints/cone_twist_joint_sw.cpp index 1b3de3e913..58f66f7ea2 100644 --- a/servers/physics/joints/cone_twist_joint_sw.cpp +++ b/servers/physics/joints/cone_twist_joint_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/cone_twist_joint_sw.h b/servers/physics/joints/cone_twist_joint_sw.h index 62ae310f35..857aaa0d86 100644 --- a/servers/physics/joints/cone_twist_joint_sw.h +++ b/servers/physics/joints/cone_twist_joint_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints/generic_6dof_joint_sw.cpp b/servers/physics/joints/generic_6dof_joint_sw.cpp index a9fe045856..8f0ccab7f7 100644 --- a/servers/physics/joints/generic_6dof_joint_sw.cpp +++ b/servers/physics/joints/generic_6dof_joint_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints/generic_6dof_joint_sw.h b/servers/physics/joints/generic_6dof_joint_sw.h index d4a36f1610..07626ffa97 100644 --- a/servers/physics/joints/generic_6dof_joint_sw.h +++ b/servers/physics/joints/generic_6dof_joint_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints/hinge_joint_sw.cpp b/servers/physics/joints/hinge_joint_sw.cpp index 209cddda5e..1ad3e738ba 100644 --- a/servers/physics/joints/hinge_joint_sw.cpp +++ b/servers/physics/joints/hinge_joint_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/joints/hinge_joint_sw.h b/servers/physics/joints/hinge_joint_sw.h index b94baffc29..1c160cfc09 100644 --- a/servers/physics/joints/hinge_joint_sw.h +++ b/servers/physics/joints/hinge_joint_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints/jacobian_entry_sw.h b/servers/physics/joints/jacobian_entry_sw.h index a7b437e449..a17175e6de 100644 --- a/servers/physics/joints/jacobian_entry_sw.h +++ b/servers/physics/joints/jacobian_entry_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints/pin_joint_sw.cpp b/servers/physics/joints/pin_joint_sw.cpp index 5d30678fd6..fe994aa172 100644 --- a/servers/physics/joints/pin_joint_sw.cpp +++ b/servers/physics/joints/pin_joint_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints/pin_joint_sw.h b/servers/physics/joints/pin_joint_sw.h index 95de733a0a..42884e4940 100644 --- a/servers/physics/joints/pin_joint_sw.h +++ b/servers/physics/joints/pin_joint_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints/slider_joint_sw.cpp b/servers/physics/joints/slider_joint_sw.cpp index 61894f7dc9..9963c7ae89 100644 --- a/servers/physics/joints/slider_joint_sw.cpp +++ b/servers/physics/joints/slider_joint_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints/slider_joint_sw.h b/servers/physics/joints/slider_joint_sw.h index 813eaae097..8b416eafc9 100644 --- a/servers/physics/joints/slider_joint_sw.h +++ b/servers/physics/joints/slider_joint_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/joints_sw.h b/servers/physics/joints_sw.h index d79fb0750a..c284d541e3 100644 --- a/servers/physics/joints_sw.h +++ b/servers/physics/joints_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/physics_server_sw.cpp b/servers/physics/physics_server_sw.cpp index 09872977b6..7c950829ca 100644 --- a/servers/physics/physics_server_sw.cpp +++ b/servers/physics/physics_server_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/physics_server_sw.h b/servers/physics/physics_server_sw.h index b593e9b5f1..0b7b9fb145 100644 --- a/servers/physics/physics_server_sw.h +++ b/servers/physics/physics_server_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/shape_sw.cpp b/servers/physics/shape_sw.cpp index f01caefdce..7c92178803 100644 --- a/servers/physics/shape_sw.cpp +++ b/servers/physics/shape_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/shape_sw.h b/servers/physics/shape_sw.h index 6af1224b38..202b61f187 100644 --- a/servers/physics/shape_sw.h +++ b/servers/physics/shape_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/space_sw.cpp b/servers/physics/space_sw.cpp index 410b6e59a0..222da7ed58 100644 --- a/servers/physics/space_sw.cpp +++ b/servers/physics/space_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/space_sw.h b/servers/physics/space_sw.h index 3aaa552845..09200f1f47 100644 --- a/servers/physics/space_sw.h +++ b/servers/physics/space_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/step_sw.cpp b/servers/physics/step_sw.cpp index 4082956747..f4055ecff7 100644 --- a/servers/physics/step_sw.cpp +++ b/servers/physics/step_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics/step_sw.h b/servers/physics/step_sw.h index c291190fe4..40022ef8b9 100644 --- a/servers/physics/step_sw.h +++ b/servers/physics/step_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/area_2d_sw.cpp b/servers/physics_2d/area_2d_sw.cpp index 9ec1eacd29..110e94d22e 100644 --- a/servers/physics_2d/area_2d_sw.cpp +++ b/servers/physics_2d/area_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/area_2d_sw.h b/servers/physics_2d/area_2d_sw.h index 371ad94c22..31bc0f6f23 100644 --- a/servers/physics_2d/area_2d_sw.h +++ b/servers/physics_2d/area_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/area_pair_2d_sw.cpp b/servers/physics_2d/area_pair_2d_sw.cpp index 7401dbfa89..05d71cfabe 100644 --- a/servers/physics_2d/area_pair_2d_sw.cpp +++ b/servers/physics_2d/area_pair_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/area_pair_2d_sw.h b/servers/physics_2d/area_pair_2d_sw.h index 6972bcd0f5..78173d98b2 100644 --- a/servers/physics_2d/area_pair_2d_sw.h +++ b/servers/physics_2d/area_pair_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/body_2d_sw.cpp index de1dfc9ee7..225aab3a92 100644 --- a/servers/physics_2d/body_2d_sw.cpp +++ b/servers/physics_2d/body_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/body_2d_sw.h b/servers/physics_2d/body_2d_sw.h index 5df184c894..06cc447526 100644 --- a/servers/physics_2d/body_2d_sw.h +++ b/servers/physics_2d/body_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/body_pair_2d_sw.cpp b/servers/physics_2d/body_pair_2d_sw.cpp index 46ea0fd65d..38f33134a5 100644 --- a/servers/physics_2d/body_pair_2d_sw.cpp +++ b/servers/physics_2d/body_pair_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/body_pair_2d_sw.h b/servers/physics_2d/body_pair_2d_sw.h index a5c07aac05..e46ecbc8eb 100644 --- a/servers/physics_2d/body_pair_2d_sw.h +++ b/servers/physics_2d/body_pair_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/broad_phase_2d_basic.cpp b/servers/physics_2d/broad_phase_2d_basic.cpp index 6a9c9f783c..11bf8712ac 100644 --- a/servers/physics_2d/broad_phase_2d_basic.cpp +++ b/servers/physics_2d/broad_phase_2d_basic.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/broad_phase_2d_basic.h b/servers/physics_2d/broad_phase_2d_basic.h index 595c5d411a..fea5668c89 100644 --- a/servers/physics_2d/broad_phase_2d_basic.h +++ b/servers/physics_2d/broad_phase_2d_basic.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.cpp b/servers/physics_2d/broad_phase_2d_hash_grid.cpp index 6dd19c2868..711ff9f1f7 100644 --- a/servers/physics_2d/broad_phase_2d_hash_grid.cpp +++ b/servers/physics_2d/broad_phase_2d_hash_grid.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.h b/servers/physics_2d/broad_phase_2d_hash_grid.h index 61fe5dbcf6..e75b51c19d 100644 --- a/servers/physics_2d/broad_phase_2d_hash_grid.h +++ b/servers/physics_2d/broad_phase_2d_hash_grid.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/broad_phase_2d_sw.cpp b/servers/physics_2d/broad_phase_2d_sw.cpp index 20250c5113..c9e1dd8758 100644 --- a/servers/physics_2d/broad_phase_2d_sw.cpp +++ b/servers/physics_2d/broad_phase_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/broad_phase_2d_sw.h b/servers/physics_2d/broad_phase_2d_sw.h index 1ba8e24cff..c7777d9d92 100644 --- a/servers/physics_2d/broad_phase_2d_sw.h +++ b/servers/physics_2d/broad_phase_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/collision_object_2d_sw.cpp b/servers/physics_2d/collision_object_2d_sw.cpp index f556638db1..85f7b8467a 100644 --- a/servers/physics_2d/collision_object_2d_sw.cpp +++ b/servers/physics_2d/collision_object_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/collision_object_2d_sw.h b/servers/physics_2d/collision_object_2d_sw.h index ed59469878..3f9d19bbab 100644 --- a/servers/physics_2d/collision_object_2d_sw.h +++ b/servers/physics_2d/collision_object_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/collision_solver_2d_sat.cpp b/servers/physics_2d/collision_solver_2d_sat.cpp index 19e4b8c1d9..da67fcc770 100644 --- a/servers/physics_2d/collision_solver_2d_sat.cpp +++ b/servers/physics_2d/collision_solver_2d_sat.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/collision_solver_2d_sat.h b/servers/physics_2d/collision_solver_2d_sat.h index ecf09151e5..105cb9104d 100644 --- a/servers/physics_2d/collision_solver_2d_sat.h +++ b/servers/physics_2d/collision_solver_2d_sat.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/collision_solver_2d_sw.cpp b/servers/physics_2d/collision_solver_2d_sw.cpp index 03c0fd5981..60cca6f825 100644 --- a/servers/physics_2d/collision_solver_2d_sw.cpp +++ b/servers/physics_2d/collision_solver_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/collision_solver_2d_sw.h b/servers/physics_2d/collision_solver_2d_sw.h index 0c5ac5245c..e73ee8fd7e 100644 --- a/servers/physics_2d/collision_solver_2d_sw.h +++ b/servers/physics_2d/collision_solver_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/constraint_2d_sw.h b/servers/physics_2d/constraint_2d_sw.h index 582b92ad46..f3314f0ffc 100644 --- a/servers/physics_2d/constraint_2d_sw.h +++ b/servers/physics_2d/constraint_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/joints_2d_sw.cpp b/servers/physics_2d/joints_2d_sw.cpp index acdaa6e6df..02b3502242 100644 --- a/servers/physics_2d/joints_2d_sw.cpp +++ b/servers/physics_2d/joints_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/joints_2d_sw.h b/servers/physics_2d/joints_2d_sw.h index 981d80328b..3e8fc1a29f 100644 --- a/servers/physics_2d/joints_2d_sw.h +++ b/servers/physics_2d/joints_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp index 80e204087a..809c5c40e0 100644 --- a/servers/physics_2d/physics_2d_server_sw.cpp +++ b/servers/physics_2d/physics_2d_server_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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/physics_2d/physics_2d_server_sw.h b/servers/physics_2d/physics_2d_server_sw.h index 72625c397c..c8f443e3b6 100644 --- a/servers/physics_2d/physics_2d_server_sw.h +++ b/servers/physics_2d/physics_2d_server_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.cpp b/servers/physics_2d/physics_2d_server_wrap_mt.cpp index 9fc15d9660..995d763c6d 100644 --- a/servers/physics_2d/physics_2d_server_wrap_mt.cpp +++ b/servers/physics_2d/physics_2d_server_wrap_mt.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.h b/servers/physics_2d/physics_2d_server_wrap_mt.h index 33a184ba3f..eec0a3933f 100644 --- a/servers/physics_2d/physics_2d_server_wrap_mt.h +++ b/servers/physics_2d/physics_2d_server_wrap_mt.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/shape_2d_sw.cpp b/servers/physics_2d/shape_2d_sw.cpp index 48799a56fb..75c604f0fa 100644 --- a/servers/physics_2d/shape_2d_sw.cpp +++ b/servers/physics_2d/shape_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/shape_2d_sw.h b/servers/physics_2d/shape_2d_sw.h index 632032cc23..a336dcecf5 100644 --- a/servers/physics_2d/shape_2d_sw.h +++ b/servers/physics_2d/shape_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp index 2778775446..08a261da2a 100644 --- a/servers/physics_2d/space_2d_sw.cpp +++ b/servers/physics_2d/space_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/space_2d_sw.h b/servers/physics_2d/space_2d_sw.h index 14c24959b7..94f8cf9d71 100644 --- a/servers/physics_2d/space_2d_sw.h +++ b/servers/physics_2d/space_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/step_2d_sw.cpp b/servers/physics_2d/step_2d_sw.cpp index 6c23160cb7..21f18229e7 100644 --- a/servers/physics_2d/step_2d_sw.cpp +++ b/servers/physics_2d/step_2d_sw.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d/step_2d_sw.h b/servers/physics_2d/step_2d_sw.h index 23385f6950..22d59b729b 100644 --- a/servers/physics_2d/step_2d_sw.h +++ b/servers/physics_2d/step_2d_sw.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp index dadadf68fd..71e3bf8ae8 100644 --- a/servers/physics_2d_server.cpp +++ b/servers/physics_2d_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_2d_server.h b/servers/physics_2d_server.h index 46b22d6777..40c58ecac5 100644 --- a/servers/physics_2d_server.h +++ b/servers/physics_2d_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_server.cpp b/servers/physics_server.cpp index fe8c644f0b..94bcf1f76e 100644 --- a/servers/physics_server.cpp +++ b/servers/physics_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/physics_server.h b/servers/physics_server.h index 5e5964ca8d..6a66763b2f 100644 --- a/servers/physics_server.h +++ b/servers/physics_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp index c944e7016e..3ff736ad82 100644 --- a/servers/register_server_types.cpp +++ b/servers/register_server_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/register_server_types.h b/servers/register_server_types.h index f42a5e7afc..0988f8cd94 100644 --- a/servers/register_server_types.h +++ b/servers/register_server_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/server_wrap_mt_common.h b/servers/server_wrap_mt_common.h index a6f595d776..b4819431b5 100644 --- a/servers/server_wrap_mt_common.h +++ b/servers/server_wrap_mt_common.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/rasterizer.cpp b/servers/visual/rasterizer.cpp index 5e02238e85..77c716379a 100644 --- a/servers/visual/rasterizer.cpp +++ b/servers/visual/rasterizer.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index 9aaebefd80..0008b809b7 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -588,6 +588,8 @@ public: virtual int get_captured_render_info(VS::RenderInfo p_info) = 0; virtual int get_render_info(VS::RenderInfo p_info) = 0; + virtual String get_video_adapter_name() const = 0; + virtual String get_video_adapter_vendor() const = 0; static RasterizerStorage *base_singleton; RasterizerStorage(); @@ -782,6 +784,7 @@ public: RID normal_map; int count; bool antialiased; + bool antialiasing_use_indices; CommandPolygon() { type = TYPE_POLYGON; diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index 316a94556d..9505c0af39 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -571,8 +571,10 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { CharType last_char = str[str.length() - 1]; if (hexa_found) { - //hex integers eg."0xFF" or "0x12AB", etc - NOT supported yet - return _make_token(TK_ERROR, "Invalid (hexadecimal) numeric constant - Not supported"); + //integer(hex) + if (str.size() > 11 || !str.is_valid_hex_number(true)) { // > 0xFFFFFFFF + return _make_token(TK_ERROR, "Invalid (hexadecimal) numeric constant"); + } } else if (period_found || exponent_found || float_suffix_found) { //floats if (period_found) { @@ -621,7 +623,11 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { else tk.type = TK_INT_CONSTANT; - tk.constant = str.to_double(); //won't work with hex + if (hexa_found) { + tk.constant = (double)str.hex_to_int64(true); + } else { + tk.constant = str.to_double(); + } tk.line = tk_line; return tk; @@ -2912,7 +2918,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 +5105,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/shader_language.h b/servers/visual/shader_language.h index 0b0947da0c..e5c3c6852c 100644 --- a/servers/visual/shader_language.h +++ b/servers/visual/shader_language.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/shader_types.cpp b/servers/visual/shader_types.cpp index 019f477362..b6eb5a74f9 100644 --- a/servers/visual/shader_types.cpp +++ b/servers/visual/shader_types.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/shader_types.h b/servers/visual/shader_types.h index 149c9b5e1f..7d674bfb5c 100644 --- a/servers/visual/shader_types.h +++ b/servers/visual/shader_types.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp index ed06a67e4c..e07e188ec6 100644 --- a/servers/visual/visual_server_canvas.cpp +++ b/servers/visual/visual_server_canvas.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -75,10 +75,10 @@ void _collect_ysort_children(VisualServerCanvas::Item *p_canvas_item, Transform2 } void _mark_ysort_dirty(VisualServerCanvas::Item *ysort_owner, RID_Owner<VisualServerCanvas::Item> &canvas_item_owner) { - while (ysort_owner && ysort_owner->sort_y) { + do { ysort_owner->ysort_children_count = -1; ysort_owner = canvas_item_owner.owns(ysort_owner->parent) ? canvas_item_owner.getornull(ysort_owner->parent) : NULL; - } + } while (ysort_owner && ysort_owner->sort_y); } void VisualServerCanvas::_render_canvas_item(Item *p_canvas_item, const Transform2D &p_transform, const Rect2 &p_clip_rect, const Color &p_modulate, int p_z, RasterizerCanvas::Item **z_list, RasterizerCanvas::Item **z_last_list, Item *p_canvas_clip, Item *p_material_owner) { @@ -362,7 +362,9 @@ void VisualServerCanvas::canvas_item_set_parent(RID p_item, RID p_parent) { Item *item_owner = canvas_item_owner.get(canvas_item->parent); item_owner->child_items.erase(canvas_item); - _mark_ysort_dirty(item_owner, canvas_item_owner); + if (item_owner->sort_y) { + _mark_ysort_dirty(item_owner, canvas_item_owner); + } } canvas_item->parent = RID(); @@ -382,7 +384,9 @@ void VisualServerCanvas::canvas_item_set_parent(RID p_item, RID p_parent) { item_owner->child_items.push_back(canvas_item); item_owner->children_order_dirty = true; - _mark_ysort_dirty(item_owner, canvas_item_owner); + if (item_owner->sort_y) { + _mark_ysort_dirty(item_owner, canvas_item_owner); + } } else { @@ -399,9 +403,7 @@ void VisualServerCanvas::canvas_item_set_visible(RID p_item, bool p_visible) { canvas_item->visible = p_visible; - if (canvas_item->parent.is_valid() && canvas_item_owner.owns(canvas_item->parent)) { - _mark_ysort_dirty(canvas_item_owner.get(canvas_item->parent), canvas_item_owner); - } + _mark_ysort_dirty(canvas_item, canvas_item_owner); } void VisualServerCanvas::canvas_item_set_light_mask(RID p_item, int p_mask) { @@ -776,12 +778,13 @@ void VisualServerCanvas::canvas_item_add_polygon(RID p_item, const Vector<Point2 polygon->indices = indices; polygon->count = indices.size(); polygon->antialiased = p_antialiased; + polygon->antialiasing_use_indices = false; canvas_item->rect_dirty = true; 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, bool p_antialiasing_use_indices) { Item *canvas_item = canvas_item_owner.getornull(p_item); ERR_FAIL_COND(!canvas_item); @@ -820,7 +823,8 @@ 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; + polygon->antialiasing_use_indices = p_antialiasing_use_indices; canvas_item->rect_dirty = true; canvas_item->commands.push_back(polygon); @@ -1382,7 +1386,9 @@ bool VisualServerCanvas::free(RID p_rid) { Item *item_owner = canvas_item_owner.get(canvas_item->parent); item_owner->child_items.erase(canvas_item); - _mark_ysort_dirty(item_owner, canvas_item_owner); + if (item_owner->sort_y) { + _mark_ysort_dirty(item_owner, canvas_item_owner); + } } } diff --git a/servers/visual/visual_server_canvas.h b/servers/visual/visual_server_canvas.h index 822e3f8ce3..a2c641ce76 100644 --- a/servers/visual/visual_server_canvas.h +++ b/servers/visual/visual_server_canvas.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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, bool p_antialiasing_use_indices = 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_globals.cpp b/servers/visual/visual_server_globals.cpp index 5c247c7f0f..248d27e08a 100644 --- a/servers/visual/visual_server_globals.cpp +++ b/servers/visual/visual_server_globals.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_globals.h b/servers/visual/visual_server_globals.h index 04d52aa1eb..5a9d365eca 100644 --- a/servers/visual/visual_server_globals.h +++ b/servers/visual/visual_server_globals.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_light_baker.cpp b/servers/visual/visual_server_light_baker.cpp index 5626a72283..4f9ade5017 100644 --- a/servers/visual/visual_server_light_baker.cpp +++ b/servers/visual/visual_server_light_baker.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_light_baker.h b/servers/visual/visual_server_light_baker.h index 6e1148d622..d88090c473 100644 --- a/servers/visual/visual_server_light_baker.h +++ b/servers/visual/visual_server_light_baker.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index 7aded4e816..23736b5e63 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -153,6 +153,16 @@ int VisualServerRaster::get_render_info(RenderInfo p_info) { return VSG::storage->get_render_info(p_info); } +String VisualServerRaster::get_video_adapter_name() const { + + return VSG::storage->get_video_adapter_name(); +} + +String VisualServerRaster::get_video_adapter_vendor() const { + + return VSG::storage->get_video_adapter_vendor(); +} + /* TESTING */ void VisualServerRaster::set_boot_image(const Ref<Image> &p_image, const Color &p_color, bool p_scale, bool p_use_filter) { diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 06096781fe..1a1e86833e 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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) + BIND12(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, 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) @@ -680,6 +680,8 @@ public: /* STATUS INFORMATION */ virtual int get_render_info(RenderInfo p_info); + virtual String get_video_adapter_name() const; + virtual String get_video_adapter_vendor() const; virtual RID get_test_cube(); diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp index 7c100be0f2..bf9db616e4 100644 --- a/servers/visual/visual_server_scene.cpp +++ b/servers/visual/visual_server_scene.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_scene.h b/servers/visual/visual_server_scene.h index 629d66c6cb..ad74250fe4 100644 --- a/servers/visual/visual_server_scene.h +++ b/servers/visual/visual_server_scene.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp index ae1f3712b0..df9cef20f9 100644 --- a/servers/visual/visual_server_viewport.cpp +++ b/servers/visual/visual_server_viewport.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_viewport.h b/servers/visual/visual_server_viewport.h index bdd4c1d4f2..e8d36f70af 100644 --- a/servers/visual/visual_server_viewport.h +++ b/servers/visual/visual_server_viewport.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_wrap_mt.cpp b/servers/visual/visual_server_wrap_mt.cpp index 1f0217c0ce..29ea8d80e7 100644 --- a/servers/visual/visual_server_wrap_mt.cpp +++ b/servers/visual/visual_server_wrap_mt.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index 59df51ff19..9535c7f50d 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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) + FUNC12(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, 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) @@ -602,6 +602,14 @@ public: return visual_server->get_render_info(p_info); } + virtual String get_video_adapter_name() const { + return visual_server->get_video_adapter_name(); + } + + virtual String get_video_adapter_vendor() const { + return visual_server->get_video_adapter_vendor(); + } + FUNC4(set_boot_image, const Ref<Image> &, const Color &, bool, bool) FUNC1(set_default_clear_color, const Color &) diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp index a1ba946d8c..b9b492e758 100644 --- a/servers/visual_server.cpp +++ b/servers/visual_server.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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", "antialiasing_use_indices"), &VisualServer::canvas_item_add_triangle_array, DEFVAL(Vector<Point2>()), DEFVAL(Vector<int>()), DEFVAL(Vector<float>()), DEFVAL(RID()), DEFVAL(-1), DEFVAL(RID()), DEFVAL(false), 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); @@ -2031,6 +2032,8 @@ void VisualServer::_bind_methods() { ClassDB::bind_method(D_METHOD("init"), &VisualServer::init); ClassDB::bind_method(D_METHOD("finish"), &VisualServer::finish); ClassDB::bind_method(D_METHOD("get_render_info", "info"), &VisualServer::get_render_info); + ClassDB::bind_method(D_METHOD("get_video_adapter_name"), &VisualServer::get_video_adapter_name); + ClassDB::bind_method(D_METHOD("get_video_adapter_vendor"), &VisualServer::get_video_adapter_vendor); #ifndef _3D_DISABLED ClassDB::bind_method(D_METHOD("make_sphere_mesh", "latitudes", "longitudes", "radius"), &VisualServer::make_sphere_mesh); diff --git a/servers/visual_server.h b/servers/visual_server.h index b1daf87e56..33a9e8d72b 100644 --- a/servers/visual_server.h +++ b/servers/visual_server.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -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, bool p_antialiasing_use_indices = 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; @@ -1017,6 +1017,8 @@ public: }; virtual int get_render_info(RenderInfo p_info) = 0; + virtual String get_video_adapter_name() const = 0; + virtual String get_video_adapter_vendor() const = 0; /* Materials for 2D on 3D */ diff --git a/thirdparty/README.md b/thirdparty/README.md index 9571ee49b9..4c4bb4dfac 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 @@ -61,7 +46,7 @@ Files extracted from upstream source: ## enet - Upstream: http://enet.bespin.org -- Version: 1.3.13 +- Version: 1.3.14 (0eaf48e, 2019) - License: MIT Files extracted from upstream source: @@ -72,12 +57,14 @@ Files extracted from upstream source: Important: enet.h, host.c, protocol.c have been slightly modified to be usable by godot socket implementation and allow IPv6. +Apply the patch in the `patches/` folder when syncing on newer upstream +commits. + Two files (godot.cpp and enet/godot.h) have been added to provide enet socket implementation using Godot classes. + It is still possible to build against a system wide ENet but doing so will limit it's functionality to IPv4 only. -Check the diff of enet.h, protocol.c, and host.c with the 1.3.13 -tarball before the next update. ## etc2comp @@ -511,15 +498,13 @@ File extracted from upstream release tarball: ## xatlas - Upstream: https://github.com/jpcy/xatlas -- Version: git (b4b5426, 2019) +- Version: git (e12ea82, 2019) - License: MIT Files extracted from upstream source: - `xatlas.{cpp,h}` - -Note: License is marked as Public Domain in the files, but it was -later clarified upstream to MIT license. +- `LICENSE` ## zlib 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/enet/LICENSE b/thirdparty/enet/LICENSE index 39af84a8f6..78d9dcf613 100644 --- a/thirdparty/enet/LICENSE +++ b/thirdparty/enet/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2002-2016 Lee Salzman +Copyright (c) 2002-2019 Lee Salzman 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: diff --git a/thirdparty/enet/enet/enet.h b/thirdparty/enet/enet/enet.h index 246cbb0a62..966e3a465d 100644 --- a/thirdparty/enet/enet/enet.h +++ b/thirdparty/enet/enet/enet.h @@ -22,7 +22,7 @@ extern "C" #define ENET_VERSION_MAJOR 1 #define ENET_VERSION_MINOR 3 -#define ENET_VERSION_PATCH 13 +#define ENET_VERSION_PATCH 14 #define ENET_VERSION_CREATE(major, minor, patch) (((major)<<16) | ((minor)<<8) | (patch)) #define ENET_VERSION_GET_MAJOR(version) (((version)>>16)&0xFF) #define ENET_VERSION_GET_MINOR(version) (((version)>>8)&0xFF) @@ -507,6 +507,17 @@ ENET_API int enet_socketset_select (ENetSocket, ENetSocketSet *, ENetSock /** @defgroup Address ENet address functions @{ */ + +/** Attempts to parse the printable form of the IP address in the parameter hostName + and sets the host field in the address parameter if successful. + @param address destination to store the parsed IP address + @param hostName IP address to parse + @retval 0 on success + @retval < 0 on failure + @returns the address of the given hostName in address on success +*/ +ENET_API int enet_address_set_host_ip (ENetAddress * address, const char * hostName); + /** Attempts to resolve the host named by the parameter hostName and sets the host field in the address parameter if successful. @param address destination to store resolved address diff --git a/thirdparty/enet/enet/godot.h b/thirdparty/enet/enet/godot.h index 9230af428b..4f25ea9c7b 100644 --- a/thirdparty/enet/enet/godot.h +++ b/thirdparty/enet/enet/godot.h @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/thirdparty/enet/godot.cpp b/thirdparty/enet/godot.cpp index 822a294781..63580b6d1a 100644 --- a/thirdparty/enet/godot.cpp +++ b/thirdparty/enet/godot.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/thirdparty/enet/patches/ipv6_support.patch b/thirdparty/enet/patches/ipv6_support.patch new file mode 100644 index 0000000000..1f79863645 --- /dev/null +++ b/thirdparty/enet/patches/ipv6_support.patch @@ -0,0 +1,105 @@ +diff --git a/thirdparty/enet/enet/enet.h b/thirdparty/enet/enet/enet.h +index 650b199ee5..246cbb0a62 100644 +--- a/thirdparty/enet/enet/enet.h ++++ b/thirdparty/enet/enet/enet.h +@@ -10,13 +10,10 @@ extern "C" + { + #endif + ++#include <stdint.h> + #include <stdlib.h> + +-#ifdef _WIN32 +-#include "enet/win32.h" +-#else +-#include "enet/unix.h" +-#endif ++#include "enet/godot.h" + + #include "enet/types.h" + #include "enet/protocol.h" +@@ -72,7 +69,6 @@ typedef enum _ENetSocketShutdown + ENET_SOCKET_SHUTDOWN_READ_WRITE = 2 + } ENetSocketShutdown; + +-#define ENET_HOST_ANY 0 + #define ENET_HOST_BROADCAST 0xFFFFFFFFU + #define ENET_PORT_ANY 0 + +@@ -88,9 +84,11 @@ typedef enum _ENetSocketShutdown + */ + typedef struct _ENetAddress + { +- enet_uint32 host; ++ uint8_t host[16]; + enet_uint16 port; ++ uint8_t wildcard; + } ENetAddress; ++#define enet_host_equal(host_a, host_b) (memcmp(&host_a, &host_b,16) == 0) + + /** + * Packet flag bit constants. +@@ -519,6 +517,16 @@ ENET_API int enet_socketset_select (ENetSocket, ENetSocketSet *, ENetSock + */ + ENET_API int enet_address_set_host (ENetAddress * address, const char * hostName); + ++/** Sets the host field in the address parameter from ip struct. ++ @param address destination to store resolved address ++ @param ip the ip struct to read from ++ @param size the size of the ip struct. ++ @retval 0 on success ++ @retval != 0 on failure ++ @returns the address of the given ip in address on success. ++*/ ++ENET_API void enet_address_set_ip(ENetAddress * address, const uint8_t * ip, size_t size); ++ + /** Gives the printable form of the IP address specified in the address parameter. + @param address address printed + @param hostName destination for name, must not be NULL +diff --git a/thirdparty/enet/host.c b/thirdparty/enet/host.c +index 3be6c0922c..fc4da4ca67 100644 +--- a/thirdparty/enet/host.c ++++ b/thirdparty/enet/host.c +@@ -87,7 +87,7 @@ enet_host_create (const ENetAddress * address, size_t peerCount, size_t channelL + host -> commandCount = 0; + host -> bufferCount = 0; + host -> checksum = NULL; +- host -> receivedAddress.host = ENET_HOST_ANY; ++ memset(host -> receivedAddress.host, 0, 16); + host -> receivedAddress.port = 0; + host -> receivedData = NULL; + host -> receivedDataLength = 0; +diff --git a/thirdparty/enet/protocol.c b/thirdparty/enet/protocol.c +index 29d648732d..ab26886de4 100644 +--- a/thirdparty/enet/protocol.c ++++ b/thirdparty/enet/protocol.c +@@ -298,7 +298,7 @@ enet_protocol_handle_connect (ENetHost * host, ENetProtocolHeader * header, ENet + } + else + if (currentPeer -> state != ENET_PEER_STATE_CONNECTING && +- currentPeer -> address.host == host -> receivedAddress.host) ++ enet_host_equal(currentPeer -> address.host, host -> receivedAddress.host)) + { + if (currentPeer -> address.port == host -> receivedAddress.port && + currentPeer -> connectID == command -> connect.connectID) +@@ -1010,9 +1010,8 @@ enet_protocol_handle_incoming_commands (ENetHost * host, ENetEvent * event) + + if (peer -> state == ENET_PEER_STATE_DISCONNECTED || + peer -> state == ENET_PEER_STATE_ZOMBIE || +- ((host -> receivedAddress.host != peer -> address.host || +- host -> receivedAddress.port != peer -> address.port) && +- peer -> address.host != ENET_HOST_BROADCAST) || ++ (!enet_host_equal(host -> receivedAddress.host, peer -> address.host) || ++ host -> receivedAddress.port != peer -> address.port) || + (peer -> outgoingPeerID < ENET_PROTOCOL_MAXIMUM_PEER_ID && + sessionID != peer -> incomingSessionID)) + return 0; +@@ -1054,7 +1053,7 @@ enet_protocol_handle_incoming_commands (ENetHost * host, ENetEvent * event) + + if (peer != NULL) + { +- peer -> address.host = host -> receivedAddress.host; ++ enet_address_set_ip(&(peer -> address), host -> receivedAddress.host, 16); + peer -> address.port = host -> receivedAddress.port; + peer -> incomingDataTotal += host -> receivedDataLength; + } diff --git a/thirdparty/enet/protocol.c b/thirdparty/enet/protocol.c index cbeea1a763..28ad5fc41c 100644 --- a/thirdparty/enet/protocol.c +++ b/thirdparty/enet/protocol.c @@ -9,7 +9,6 @@ #include "enet/time.h" #include "enet/enet.h" - static size_t commandSizes [ENET_PROTOCOL_COMMAND_COUNT] = { 0, @@ -164,7 +163,10 @@ enet_protocol_remove_sent_unreliable_commands (ENetPeer * peer) { ENetOutgoingCommand * outgoingCommand; - while (! enet_list_empty (& peer -> sentUnreliableCommands)) + if (enet_list_empty (& peer -> sentUnreliableCommands)) + return; + + do { outgoingCommand = (ENetOutgoingCommand *) enet_list_front (& peer -> sentUnreliableCommands); @@ -183,7 +185,13 @@ enet_protocol_remove_sent_unreliable_commands (ENetPeer * peer) } enet_free (outgoingCommand); - } + } while (! enet_list_empty (& peer -> sentUnreliableCommands)); + + if (peer -> state == ENET_PEER_STATE_DISCONNECT_LATER && + enet_list_empty (& peer -> outgoingReliableCommands) && + enet_list_empty (& peer -> outgoingUnreliableCommands) && + enet_list_empty (& peer -> sentReliableCommands)) + enet_peer_disconnect (peer, peer -> eventData); } static ENetProtocolCommand @@ -1406,7 +1414,8 @@ enet_protocol_send_unreliable_outgoing_commands (ENetHost * host, ENetPeer * pee if (peer -> state == ENET_PEER_STATE_DISCONNECT_LATER && enet_list_empty (& peer -> outgoingReliableCommands) && enet_list_empty (& peer -> outgoingUnreliableCommands) && - enet_list_empty (& peer -> sentReliableCommands)) + enet_list_empty (& peer -> sentReliableCommands) && + enet_list_empty (& peer -> sentUnreliableCommands)) enet_peer_disconnect (peer, peer -> eventData); } @@ -1691,7 +1700,7 @@ enet_protocol_send_outgoing_commands (ENetHost * host, ENetEvent * event, int ch & host -> buffers [1], host -> bufferCount - 1, originalSize, host -> packetData [1], - originalSize); + originalSize); if (compressedSize > 0 && compressedSize < originalSize) { host -> headerFlags |= ENET_PROTOCOL_HEADER_FLAG_COMPRESSED; 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 diff --git a/thirdparty/xatlas/LICENSE b/thirdparty/xatlas/LICENSE index 94d0c60485..9e61e15fb7 100644 --- a/thirdparty/xatlas/LICENSE +++ b/thirdparty/xatlas/LICENSE @@ -1,14 +1,21 @@ -xatlas -https://github.com/jpcy/xatlas -Copyright (c) 2018 Jonathan Young +MIT License -thekla_atlas -https://github.com/Thekla/thekla_atlas -Copyright (c) 2013 Thekla, Inc -Copyright NVIDIA Corporation 2006 -- Ignacio Castano <icastano@nvidia.com> +Copyright (c) 2018-2019 Jonathan Young -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: +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 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. +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.
\ No newline at end of file diff --git a/thirdparty/xatlas/xatlas.cpp b/thirdparty/xatlas/xatlas.cpp index 56794211a6..80cacf9746 100644 --- a/thirdparty/xatlas/xatlas.cpp +++ b/thirdparty/xatlas/xatlas.cpp @@ -33,7 +33,6 @@ https://github.com/brandonpelfrey/Fast-BVH MIT License Copyright (c) 2012 Brandon Pelfrey */ -#include <algorithm> #include <atomic> #include <condition_variable> #include <mutex> @@ -114,22 +113,25 @@ Copyright (c) 2012 Brandon Pelfrey #define XA_UNUSED(a) ((void)(a)) -#define XA_GROW_CHARTS_COPLANAR 1 #define XA_MERGE_CHARTS 1 #define XA_MERGE_CHARTS_MIN_NORMAL_DEVIATION 0.5f #define XA_RECOMPUTE_CHARTS 1 -#define XA_SKIP_PARAMETERIZATION 0 // Use the orthogonal parameterization from segment::Atlas #define XA_CLOSE_HOLES_CHECK_EDGE_INTERSECTION 0 +#define XA_FIX_INTERNAL_BOUNDARY_LOOPS 1 +#define XA_PRINT_CHART_WARNINGS 0 #define XA_DEBUG_HEAP 0 #define XA_DEBUG_SINGLE_CHART 0 #define XA_DEBUG_EXPORT_ATLAS_IMAGES 0 +#define XA_DEBUG_EXPORT_ATLAS_IMAGES_PER_CHART 0 // Export an atlas image after each chart is added. +#define XA_DEBUG_EXPORT_BOUNDARY_GRID 0 +#define XA_DEBUG_EXPORT_TGA (XA_DEBUG_EXPORT_ATLAS_IMAGES || XA_DEBUG_EXPORT_BOUNDARY_GRID) #define XA_DEBUG_EXPORT_OBJ_SOURCE_MESHES 0 #define XA_DEBUG_EXPORT_OBJ_CHART_GROUPS 0 +#define XA_DEBUG_EXPORT_OBJ_PLANAR_REGIONS 0 #define XA_DEBUG_EXPORT_OBJ_CHARTS 0 #define XA_DEBUG_EXPORT_OBJ_BEFORE_FIX_TJUNCTION 0 #define XA_DEBUG_EXPORT_OBJ_CLOSE_HOLES_ERROR 0 -#define XA_DEBUG_EXPORT_OBJ_NOT_DISK 0 #define XA_DEBUG_EXPORT_OBJ_CHARTS_AFTER_PARAMETERIZATION 0 #define XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION 0 #define XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS 0 @@ -137,10 +139,10 @@ Copyright (c) 2012 Brandon Pelfrey #define XA_DEBUG_EXPORT_OBJ (0 \ || XA_DEBUG_EXPORT_OBJ_SOURCE_MESHES \ || XA_DEBUG_EXPORT_OBJ_CHART_GROUPS \ + || XA_DEBUG_EXPORT_OBJ_PLANAR_REGIONS \ || XA_DEBUG_EXPORT_OBJ_CHARTS \ || XA_DEBUG_EXPORT_OBJ_BEFORE_FIX_TJUNCTION \ || XA_DEBUG_EXPORT_OBJ_CLOSE_HOLES_ERROR \ - || XA_DEBUG_EXPORT_OBJ_NOT_DISK \ || XA_DEBUG_EXPORT_OBJ_CHARTS_AFTER_PARAMETERIZATION \ || XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION \ || XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS) @@ -166,6 +168,10 @@ struct MemTag enum { Default, + BitImage, + BVH, + FullVector, + Matrix, Mesh, MeshBoundaries, MeshColocals, @@ -174,6 +180,10 @@ struct MemTag MeshNormals, MeshPositions, MeshTexcoords, + SegmentAtlasChartCandidates, + SegmentAtlasChartFaces, + SegmentAtlasMeshData, + SegmentAtlasPlanarRegions, Count }; }; @@ -192,7 +202,7 @@ struct AllocHeader static std::mutex s_allocMutex; static AllocHeader *s_allocRoot = nullptr; -static size_t s_allocTotalSize = 0, s_allocPeakSize = 0, s_allocTotalTagSize[MemTag::Count] = { 0 }, s_allocPeakTagSize[MemTag::Count] = { 0 }; +static size_t s_allocTotalCount = 0, s_allocTotalSize = 0, s_allocPeakSize = 0, s_allocCount[MemTag::Count] = { 0 }, s_allocTotalTagSize[MemTag::Count] = { 0 }, s_allocPeakTagSize[MemTag::Count] = { 0 }; static uint32_t s_allocId =0 ; static constexpr uint32_t kAllocRedzone = 0x12345678; @@ -245,9 +255,11 @@ static void *Realloc(void *ptr, size_t size, int tag, const char *file, int line s_allocRoot = header; header->next->prev = header; } + s_allocTotalCount++; s_allocTotalSize += size; if (s_allocTotalSize > s_allocPeakSize) s_allocPeakSize = s_allocTotalSize; + s_allocCount[tag]++; s_allocTotalTagSize[tag] += size; if (s_allocTotalTagSize[tag] > s_allocPeakTagSize[tag]) s_allocPeakTagSize[tag] = s_allocTotalTagSize[tag]; @@ -287,9 +299,14 @@ static void ReportLeaks() static void PrintMemoryUsage() { + XA_PRINT("Total allocations: %zu\n", s_allocTotalCount); XA_PRINT("Memory usage: %0.2fMB current, %0.2fMB peak\n", internal::s_allocTotalSize / 1024.0f / 1024.0f, internal::s_allocPeakSize / 1024.0f / 1024.0f); static const char *labels[] = { // Sync with MemTag "Default", + "BitImage", + "BVH", + "FullVector", + "Matrix", "Mesh", "MeshBoundaries", "MeshColocals", @@ -297,10 +314,14 @@ static void PrintMemoryUsage() "MeshIndices", "MeshNormals", "MeshPositions", - "MeshTexcoords" + "MeshTexcoords", + "SegmentAtlasChartCandidates", + "SegmentAtlasChartFaces", + "SegmentAtlasMeshData", + "SegmentAtlasPlanarRegions" }; for (int i = 0; i < MemTag::Count; i++) { - XA_PRINT(" %s: %0.2fMB current, %0.2fMB peak\n", labels[i], internal::s_allocTotalTagSize[i] / 1024.0f / 1024.0f, internal::s_allocPeakTagSize[i] / 1024.0f / 1024.0f); + XA_PRINT(" %s: %zu allocations, %0.2fMB current, %0.2fMB peak\n", labels[i], internal::s_allocCount[i], internal::s_allocTotalTagSize[i] / 1024.0f / 1024.0f, internal::s_allocPeakTagSize[i] / 1024.0f / 1024.0f); } } @@ -308,7 +329,9 @@ static void PrintMemoryUsage() #else static void *Realloc(void *ptr, size_t size, int /*tag*/, const char * /*file*/, int /*line*/) { - if (ptr && size == 0 && s_free) { + if (size == 0 && !ptr) + return nullptr; + if (size == 0 && s_free) { s_free(ptr); return nullptr; } @@ -333,7 +356,6 @@ struct ProfileData std::atomic<clock_t> addMeshThread; std::atomic<clock_t> addMeshCreateColocals; std::atomic<clock_t> addMeshCreateFaceGroups; - std::atomic<clock_t> addMeshCreateBoundaries; std::atomic<clock_t> addMeshCreateChartGroupsReal; std::atomic<clock_t> addMeshCreateChartGroupsThread; clock_t computeChartsReal; @@ -362,7 +384,6 @@ struct ProfileData clock_t packChartsRasterize; clock_t packChartsDilate; clock_t packChartsFindLocation; - std::atomic<clock_t> packChartsFindLocationThread; clock_t packChartsBlit; clock_t buildOutputMeshes; }; @@ -386,6 +407,7 @@ static double clockToSeconds(clock_t c) static constexpr float kPi = 3.14159265358979323846f; static constexpr float kPi2 = 6.28318530717958647692f; +static constexpr float kPi4 = 12.56637061435917295384f; static constexpr float kEpsilon = 0.0001f; static constexpr float kAreaEpsilon = FLT_EPSILON; static constexpr float kNormalEpsilon = 0.001f; @@ -430,11 +452,9 @@ static T clamp(const T &x, const T &a, const T &b) template <typename T> static void swap(T &a, T &b) { - T temp; - temp = a; + T temp = a; a = b; b = temp; - temp = T(); } union FloatUint32 @@ -620,6 +640,14 @@ static Vector2 normalize(const Vector2 &v, float epsilon) return n; } +static Vector2 normalizeSafe(const Vector2 &v, const Vector2 &fallback, float epsilon) +{ + float l = length(v); + if (isZero(l, epsilon)) + return fallback; + return v * (1.0f / l); +} + static bool equal(const Vector2 &v1, const Vector2 &v2, float epsilon) { return equal(v1.x, v2.x, epsilon) && equal(v1.y, v2.y, epsilon); @@ -640,23 +668,19 @@ static bool isFinite(const Vector2 &v) return isFinite(v.x) && isFinite(v.y); } -// Note, this is the area scaled by 2! -static float triangleArea(const Vector2 &v0, const Vector2 &v1) -{ - return (v0.x * v1.y - v0.y * v1.x); // * 0.5f; -} - static float triangleArea(const Vector2 &a, const Vector2 &b, const Vector2 &c) { // IC: While it may be appealing to use the following expression: - //return (c.x * a.y + a.x * b.y + b.x * c.y - b.x * a.y - c.x * b.y - a.x * c.y); // * 0.5f; + //return (c.x * a.y + a.x * b.y + b.x * c.y - b.x * a.y - c.x * b.y - a.x * c.y) * 0.5f; // That's actually a terrible idea. Small triangles far from the origin can end up producing fairly large floating point // numbers and the results becomes very unstable and dependent on the order of the factors. // Instead, it's preferable to subtract the vertices first, and multiply the resulting small values together. The result // in this case is always much more accurate (as long as the triangle is small) and less dependent of the location of // the triangle. - //return ((a.x - c.x) * (b.y - c.y) - (a.y - c.y) * (b.x - c.x)); // * 0.5f; - return triangleArea(a - c, b - c); + //return ((a.x - c.x) * (b.y - c.y) - (a.y - c.y) * (b.x - c.x)) * 0.5f; + const Vector2 v0 = a - c; + const Vector2 v1 = b - c; + return (v0.x * v1.y - v0.y * v1.x) * 0.5f; } static bool linesIntersect(const Vector2 &a1, const Vector2 &a2, const Vector2 &b1, const Vector2 &b2, float epsilon) @@ -746,11 +770,6 @@ public: float x, y, z; }; -static bool operator!=(const Vector3 &a, const Vector3 &b) -{ - return a.x != b.x || a.y != b.y || a.z != b.z; -} - static Vector3 operator+(const Vector3 &a, const Vector3 &b) { return Vector3(a.x + b.x, a.y + b.y, a.z + b.z); @@ -837,6 +856,33 @@ bool isFinite(const Vector3 &v) } #endif +struct Extents2 +{ + Vector2 min, max; + + void reset() + { + min.x = min.y = FLT_MAX; + max.x = max.y = -FLT_MAX; + } + + void add(Vector2 p) + { + min = xatlas::internal::min(min, p); + max = xatlas::internal::max(max, p); + } + + Vector2 midpoint() const + { + return Vector2(min.x + (max.x - min.x) * 0.5f, min.y + (max.y - min.y) * 0.5f); + } + + static bool intersect(Extents2 e1, Extents2 e2) + { + return e1.min.x <= e2.max.x && e1.max.x >= e2.min.x && e1.min.y <= e2.max.y && e1.max.y >= e2.min.y; + } +}; + struct Plane { Plane() = default; @@ -979,7 +1025,14 @@ struct AABB struct ArrayBase { - ArrayBase(uint32_t elementSize, int memTag = MemTag::Default) : buffer(nullptr), elementSize(elementSize), size(0), capacity(0), memTag(memTag) {} + ArrayBase(uint32_t elementSize, int memTag = MemTag::Default) : buffer(nullptr), elementSize(elementSize), size(0), capacity(0) + { +#if XA_DEBUG_HEAP + this->memTag = memTag; +#else + XA_UNUSED(memTag); +#endif + } ~ArrayBase() { @@ -991,6 +1044,12 @@ struct ArrayBase size = 0; } + void copyFrom(const uint8_t *data, uint32_t length) + { + resize(length, true); + memcpy(buffer, data, length * elementSize); + } + void copyTo(ArrayBase &other) const { XA_DEBUG_ASSERT(elementSize == other.elementSize); @@ -1025,7 +1084,9 @@ struct ArrayBase other.elementSize = elementSize; other.size = size; other.capacity = capacity; +#if XA_DEBUG_HEAP other.memTag = memTag; +#endif buffer = nullptr; elementSize = size = capacity = 0; } @@ -1043,6 +1104,16 @@ struct ArrayBase memcpy(&buffer[(size - 1) * elementSize], value, elementSize); } + void push_back(const ArrayBase &other) + { + XA_DEBUG_ASSERT(elementSize == other.elementSize); + if (other.size == 0) + return; + const uint32_t oldSize = size; + resize(size + other.size, false); + memcpy(buffer + oldSize * elementSize, other.buffer, other.size * other.elementSize); + } + // Remove the element at the given index. This is an expensive operation! void removeAt(uint32_t index) { @@ -1083,16 +1154,29 @@ struct ArrayBase } } else { // realloc the buffer +#if XA_DEBUG_HEAP buffer = XA_REALLOC_SIZE(memTag, buffer, newCapacity * elementSize); +#else + buffer = XA_REALLOC_SIZE(MemTag::Default, buffer, newCapacity * elementSize); +#endif } capacity = newCapacity; } +#if XA_DEBUG_HEAP + void setMemTag(int memTag) + { + this->memTag = memTag; + } +#endif + uint8_t *buffer; uint32_t elementSize; uint32_t size; uint32_t capacity; +#if XA_DEBUG_HEAP int memTag; +#endif }; template<typename T> @@ -1101,7 +1185,7 @@ class Array public: Array(int memTag = MemTag::Default) : m_base(sizeof(T), memTag) {} Array(const Array&) = delete; - const Array &operator=(const Array &) = delete; + Array &operator=(const Array &) = delete; XA_INLINE const T &operator[](uint32_t index) const { @@ -1123,6 +1207,17 @@ public: XA_INLINE T *begin() { return (T *)m_base.buffer; } XA_INLINE void clear() { m_base.clear(); } + + bool contains(const T &value) const + { + for (uint32_t i = 0; i < m_base.size; i++) { + if (((const T *)m_base.buffer)[i] == value) + return true; + } + return false; + } + + void copyFrom(const T *data, uint32_t length) { m_base.copyFrom((const uint8_t *)data, length); } void copyTo(Array &other) const { m_base.copyTo(other.m_base); } XA_INLINE const T *data() const { return (const T *)m_base.buffer; } XA_INLINE T *data() { return (T *)m_base.buffer; } @@ -1131,11 +1226,24 @@ public: void insertAt(uint32_t index, const T &value) { m_base.insertAt(index, (const uint8_t *)&value); } void moveTo(Array &other) { m_base.moveTo(other.m_base); } void push_back(const T &value) { m_base.push_back((const uint8_t *)&value); } + void push_back(const Array &other) { m_base.push_back(other.m_base); } void pop_back() { m_base.pop_back(); } void removeAt(uint32_t index) { m_base.removeAt(index); } void reserve(uint32_t desiredSize) { m_base.reserve(desiredSize); } void resize(uint32_t newSize) { m_base.resize(newSize, true); } + void runCtors() + { + for (uint32_t i = 0; i < m_base.size; i++) + new (&((T *)m_base.buffer)[i]) T; + } + + void runDtors() + { + for (uint32_t i = 0; i < m_base.size; i++) + ((T *)m_base.buffer)[i].~T(); + } + void setAll(const T &value) { auto buffer = (T *)m_base.buffer; @@ -1143,6 +1251,10 @@ public: buffer[i] = value; } +#if XA_DEBUG_HEAP + void setMemTag(int memTag) { m_base.setMemTag(memTag); } +#endif + XA_INLINE uint32_t size() const { return m_base.size; } XA_INLINE void zeroOutMemory() { memset(m_base.buffer, 0, m_base.elementSize * m_base.size); } @@ -1150,6 +1262,28 @@ private: ArrayBase m_base; }; +template<typename T> +struct ArrayView +{ + ArrayView(Array<T> &a) : data(a.data()), length(a.size()) {} + ArrayView(T *data, uint32_t length) : data(data), length(length) {} + ArrayView &operator=(Array<T> &a) { data = a.data(); length = a.size(); return *this; } + XA_INLINE const T &operator[](uint32_t index) const { XA_DEBUG_ASSERT(index < length); return data[index]; } + T *data; + uint32_t length; +}; + +template<typename T> +struct ConstArrayView +{ + ConstArrayView(const Array<T> &a) : data(a.data()), length(a.size()) {} + ConstArrayView(const T *data, uint32_t length) : data(data), length(length) {} + ConstArrayView &operator=(const Array<T> &a) { data = a.data(); length = a.size(); return *this; } + XA_INLINE const T &operator[](uint32_t index) const { XA_DEBUG_ASSERT(index < length); return data[index]; } + const T *data; + uint32_t length; +}; + /// Basis class to compute tangent space basis, ortogonalizations and to transform vectors from one space to another. struct Basis { @@ -1197,40 +1331,34 @@ public: m_wordArray.resize((m_size + 31) >> 5); } - /// Get bit. - bool bitAt(uint32_t b) const + bool get(uint32_t index) const { - XA_DEBUG_ASSERT( b < m_size ); - return (m_wordArray[b >> 5] & (1 << (b & 31))) != 0; + XA_DEBUG_ASSERT(index < m_size); + return (m_wordArray[index >> 5] & (1 << (index & 31))) != 0; } - // Set a bit. - void setBitAt(uint32_t idx) + void set(uint32_t index) { - XA_DEBUG_ASSERT(idx < m_size); - m_wordArray[idx >> 5] |= (1 << (idx & 31)); + XA_DEBUG_ASSERT(index < m_size); + m_wordArray[index >> 5] |= (1 << (index & 31)); } - // Clear all the bits. - void clearAll() + void zeroOutMemory() { - memset(m_wordArray.data(), 0, m_wordArray.size() * sizeof(uint32_t)); + m_wordArray.zeroOutMemory(); } private: - // Number of bits stored. - uint32_t m_size; - - // Array of bits. + uint32_t m_size; // Number of bits stored. Array<uint32_t> m_wordArray; }; class BitImage { public: - BitImage() : m_width(0), m_height(0), m_rowStride(0) {} + BitImage() : m_width(0), m_height(0), m_rowStride(0), m_data(MemTag::BitImage) {} - BitImage(uint32_t w, uint32_t h) : m_width(w), m_height(h) + BitImage(uint32_t w, uint32_t h) : m_width(w), m_height(h), m_data(MemTag::BitImage) { m_rowStride = (m_width + 63) >> 6; m_data.resize(m_rowStride * m_height); @@ -1238,7 +1366,7 @@ public: } BitImage(const BitImage &other) = delete; - const BitImage &operator=(const BitImage &other) = delete; + BitImage &operator=(const BitImage &other) = delete; uint32_t width() const { return m_width; } uint32_t height() const { return m_height; } @@ -1275,22 +1403,22 @@ public: m_rowStride = rowStride; } - bool bitAt(uint32_t x, uint32_t y) const + bool get(uint32_t x, uint32_t y) const { XA_DEBUG_ASSERT(x < m_width && y < m_height); const uint32_t index = (x >> 6) + y * m_rowStride; return (m_data[index] & (UINT64_C(1) << (uint64_t(x) & UINT64_C(63)))) != 0; } - void setBitAt(uint32_t x, uint32_t y) + void set(uint32_t x, uint32_t y) { XA_DEBUG_ASSERT(x < m_width && y < m_height); const uint32_t index = (x >> 6) + y * m_rowStride; m_data[index] |= UINT64_C(1) << (uint64_t(x) & UINT64_C(63)); - XA_DEBUG_ASSERT(bitAt(x, y)); + XA_DEBUG_ASSERT(get(x, y)); } - void clearAll() + void zeroOutMemory() { m_data.zeroOutMemory(); } @@ -1324,26 +1452,26 @@ public: { BitImage tmp(m_width, m_height); for (uint32_t p = 0; p < padding; p++) { - tmp.clearAll(); + tmp.zeroOutMemory(); for (uint32_t y = 0; y < m_height; y++) { for (uint32_t x = 0; x < m_width; x++) { - bool b = bitAt(x, y); + bool b = get(x, y); if (!b) { if (x > 0) { - b |= bitAt(x - 1, y); - if (y > 0) b |= bitAt(x - 1, y - 1); - if (y < m_height - 1) b |= bitAt(x - 1, y + 1); + b |= get(x - 1, y); + if (y > 0) b |= get(x - 1, y - 1); + if (y < m_height - 1) b |= get(x - 1, y + 1); } - if (y > 0) b |= bitAt(x, y - 1); - if (y < m_height - 1) b |= bitAt(x, y + 1); + if (y > 0) b |= get(x, y - 1); + if (y < m_height - 1) b |= get(x, y + 1); if (x < m_width - 1) { - b |= bitAt(x + 1, y); - if (y > 0) b |= bitAt(x + 1, y - 1); - if (y < m_height - 1) b |= bitAt(x + 1, y + 1); + b |= get(x + 1, y); + if (y > 0) b |= get(x + 1, y - 1); + if (y < m_height - 1) b |= get(x + 1, y + 1); } } if (b) - tmp.setBitAt(x, y); + tmp.set(x, y); } } tmp.m_data.copyTo(m_data); @@ -1361,7 +1489,7 @@ private: class BVH { public: - BVH(const Array<AABB> &objectAabbs, uint32_t leafSize = 4) + BVH(const Array<AABB> &objectAabbs, uint32_t leafSize = 4) : m_objectIds(MemTag::BVH), m_nodes(MemTag::BVH) { m_objectAabbs = &objectAabbs; if (m_objectAabbs->isEmpty()) @@ -1494,9 +1622,118 @@ private: Array<Node> m_nodes; }; -class Fit +struct Fit { -public: + static bool computeBasis(const Vector3 *points, uint32_t pointsCount, Basis *basis) + { + if (computeLeastSquaresNormal(points, pointsCount, &basis->normal)) { + basis->tangent = Basis::computeTangent(basis->normal); + basis->bitangent = Basis::computeBitangent(basis->normal, basis->tangent); + return true; + } + return computeEigen(points, pointsCount, basis); + } + +private: + // Fit a plane to a collection of points. + // Fast, and accurate to within a few degrees. + // Returns None if the points do not span a plane. + // https://www.ilikebigbits.com/2015_03_04_plane_from_points.html + static bool computeLeastSquaresNormal(const Vector3 *points, uint32_t pointsCount, Vector3 *normal) + { + XA_DEBUG_ASSERT(pointsCount >= 3); + if (pointsCount == 3) { + *normal = normalize(cross(points[2] - points[0], points[1] - points[0]), kEpsilon); + return true; + } + const float invN = 1.0f / float(pointsCount); + Vector3 centroid(0.0f); + for (uint32_t i = 0; i < pointsCount; i++) + centroid += points[i]; + centroid *= invN; + // Calculate full 3x3 covariance matrix, excluding symmetries: + float xx = 0.0f, xy = 0.0f, xz = 0.0f, yy = 0.0f, yz = 0.0f, zz = 0.0f; + for (uint32_t i = 0; i < pointsCount; i++) { + Vector3 r = points[i] - centroid; + xx += r.x * r.x; + xy += r.x * r.y; + xz += r.x * r.z; + yy += r.y * r.y; + yz += r.y * r.z; + zz += r.z * r.z; + } +#if 0 + xx *= invN; + xy *= invN; + xz *= invN; + yy *= invN; + yz *= invN; + zz *= invN; + Vector3 weighted_dir(0.0f); + { + float det_x = yy * zz - yz * yz; + const Vector3 axis_dir(det_x, xz * yz - xy * zz, xy * yz - xz * yy); + float weight = det_x * det_x; + if (dot(weighted_dir, axis_dir) < 0.0f) + weight = -weight; + weighted_dir += axis_dir * weight; + } + { + float det_y = xx * zz - xz * xz; + const Vector3 axis_dir(xz * yz - xy * zz, det_y, xy * xz - yz * xx); + float weight = det_y * det_y; + if (dot(weighted_dir, axis_dir) < 0.0f) + weight = -weight; + weighted_dir += axis_dir * weight; + } + { + float det_z = xx * yy - xy * xy; + const Vector3 axis_dir(xy * yz - xz * yy, xy * xz - yz * xx, det_z); + float weight = det_z * det_z; + if (dot(weighted_dir, axis_dir) < 0.0f) + weight = -weight; + weighted_dir += axis_dir * weight; + } + *normal = normalize(weighted_dir, kEpsilon); +#else + const float det_x = yy * zz - yz * yz; + const float det_y = xx * zz - xz * xz; + const float det_z = xx * yy - xy * xy; + const float det_max = max(det_x, max(det_y, det_z)); + if (det_max <= 0.0f) + return false; // The points don't span a plane + // Pick path with best conditioning: + Vector3 dir(0.0f); + if (det_max == det_x) + dir = Vector3(det_x,xz * yz - xy * zz,xy * yz - xz * yy); + else if (det_max == det_y) + dir = Vector3(xz * yz - xy * zz, det_y, xy * xz - yz * xx); + else if (det_max == det_z) + dir = Vector3(xy * yz - xz * yy, xy * xz - yz * xx, det_z); + const float len = length(dir); + if (isZero(len, kEpsilon)) + return false; + *normal = dir * (1.0f / len); +#endif + return isNormalized(*normal); + } + + static bool computeEigen(const Vector3 *points, uint32_t pointsCount, Basis *basis) + { + float matrix[6]; + computeCovariance(pointsCount, points, matrix); + if (matrix[0] == 0 && matrix[3] == 0 && matrix[5] == 0) + return false; + float eigenValues[3]; + Vector3 eigenVectors[3]; + if (!eigenSolveSymmetric3(matrix, eigenValues, eigenVectors)) + return false; + basis->normal = normalize(eigenVectors[2], kEpsilon); + basis->tangent = normalize(eigenVectors[0], kEpsilon); + basis->bitangent = normalize(eigenVectors[1], kEpsilon); + return true; + } + static Vector3 computeCentroid(int n, const Vector3 * points) { Vector3 centroid(0.0f); @@ -1694,9 +1931,9 @@ private: class FullVector { public: - FullVector(uint32_t dim) { m_array.resize(dim); } - FullVector(const FullVector &v) { v.m_array.copyTo(m_array); } - const FullVector &operator=(const FullVector &v) = delete; + FullVector(uint32_t dim) : m_array(MemTag::FullVector) { m_array.resize(dim); } + FullVector(const FullVector &v) : m_array(MemTag::FullVector) { v.m_array.copyTo(m_array); } + FullVector &operator=(const FullVector &v) = delete; XA_INLINE uint32_t dimension() const { return m_array.size(); } XA_INLINE const float &operator[](uint32_t index) const { return m_array[index]; } XA_INLINE float &operator[](uint32_t index) { return m_array[index]; } @@ -1767,7 +2004,10 @@ private: void alloc() { XA_DEBUG_ASSERT(m_size > 0); - m_numSlots = (uint32_t)(m_size * 1.3); + m_numSlots = nextPowerOfTwo(m_size); + auto minNumSlots = uint32_t(m_size * 1.3); + if (m_numSlots < minNumSlots) + m_numSlots = nextPowerOfTwo(minNumSlots); m_slots = XA_ALLOC_ARRAY(m_memTag, uint32_t, m_numSlots); for (uint32_t i = 0; i < m_numSlots; i++) m_slots[i] = UINT32_MAX; @@ -1778,7 +2018,7 @@ private: uint32_t computeHash(const Key &key) const { H hash; - return hash(key) % m_numSlots; + return hash(key) & (m_numSlots - 1); } int m_memTag; @@ -1806,6 +2046,16 @@ static void insertionSort(T *data, uint32_t length) class KISSRng { public: + KISSRng() { reset(); } + + void reset() + { + x = 123456789; + y = 362436000; + z = 521288629; + c = 7654321; + } + uint32_t getRange(uint32_t range) { if (range == 0) @@ -1820,7 +2070,7 @@ public: } private: - uint32_t x = 123456789, y = 362436000, z = 521288629, c = 7654321; + uint32_t x, y, z, c; }; // Based on Pierre Terdiman's and Michael Herf's source code. @@ -2009,15 +2259,27 @@ private: class BoundingBox2D { public: - Vector2 majorAxis() const { return m_majorAxis; } - Vector2 minorAxis() const { return m_minorAxis; } - Vector2 minCorner() const { return m_minCorner; } - Vector2 maxCorner() const { return m_maxCorner; } + Vector2 majorAxis, minorAxis, minCorner, maxCorner; + + void clear() + { + m_boundaryVertices.clear(); + } + + void appendBoundaryVertex(Vector2 v) + { + m_boundaryVertices.push_back(v); + } // This should compute convex hull and use rotating calipers to find the best box. Currently it uses a brute force method. - void compute(const Vector2 *boundaryVertices, uint32_t boundaryVertexCount, const Vector2 *vertices, uint32_t vertexCount) + // If vertices is null or vertexCount is 0, the boundary vertices are used. + void compute(const Vector2 *vertices = nullptr, uint32_t vertexCount = 0) { - convexHull(boundaryVertices, boundaryVertexCount, m_hull, 0.00001f); + if (!vertices || vertexCount == 0) { + vertices = m_boundaryVertices.data(); + vertexCount = m_boundaryVertices.size(); + } + convexHull(m_boundaryVertices.data(), m_boundaryVertices.size(), m_hull, 0.00001f); // @@ Ideally I should use rotating calipers to find the best box. Using brute force for now. float best_area = FLT_MAX; Vector2 best_min(0); @@ -2051,11 +2313,11 @@ public: best_axis = axis; } } - m_majorAxis = best_axis; - m_minorAxis = Vector2(-best_axis.y, best_axis.x); - m_minCorner = best_min; - m_maxCorner = best_max; - XA_ASSERT(isFinite(m_majorAxis) && isFinite(m_minorAxis) && isFinite(m_minCorner)); + majorAxis = best_axis; + minorAxis = Vector2(-best_axis.y, best_axis.x); + minCorner = best_min; + maxCorner = best_max; + XA_ASSERT(isFinite(majorAxis) && isFinite(minorAxis) && isFinite(minCorner)); } private: @@ -2088,6 +2350,7 @@ private: } // Filter top list. output.clear(); + XA_DEBUG_ASSERT(m_top.size() >= 2); output.push_back(m_top[0]); output.push_back(m_top[1]); for (uint32_t i = 2; i < m_top.size(); ) { @@ -2103,6 +2366,7 @@ private: } } uint32_t top_count = output.size(); + XA_DEBUG_ASSERT(m_bottom.size() >= 2); output.push_back(m_bottom[1]); // Filter bottom list. for (uint32_t i = 2; i < m_bottom.size(); ) { @@ -2122,9 +2386,9 @@ private: output.pop_back(); } + Array<Vector2> m_boundaryVertices; Array<float> m_coords; Array<Vector2> m_top, m_bottom, m_hull; - Vector2 m_majorAxis, m_minorAxis, m_minCorner, m_maxCorner; }; static uint32_t meshEdgeFace(uint32_t edge) { return edge / 3; } @@ -2152,7 +2416,7 @@ static void meshGetBoundaryLoops(const Mesh &mesh, Array<uint32_t> &boundaryLoop class Mesh { public: - Mesh(float epsilon, uint32_t approxVertexCount, uint32_t approxFaceCount, uint32_t flags = 0, uint32_t id = UINT32_MAX) : m_epsilon(epsilon), m_flags(flags), m_id(id), m_faceIgnore(MemTag::Mesh), m_faceGroups(MemTag::Mesh), m_indices(MemTag::MeshIndices), m_positions(MemTag::MeshPositions), m_normals(MemTag::MeshNormals), m_texcoords(MemTag::MeshTexcoords), m_colocalVertexCount(0), m_nextColocalVertex(MemTag::MeshColocals), m_boundaryVertices(MemTag::MeshBoundaries), m_oppositeEdges(MemTag::MeshBoundaries), m_nextBoundaryEdges(MemTag::MeshBoundaries), m_edgeMap(MemTag::MeshEdgeMap, approxFaceCount * 3) + Mesh(float epsilon, uint32_t approxVertexCount, uint32_t approxFaceCount, uint32_t flags = 0, uint32_t id = UINT32_MAX) : m_epsilon(epsilon), m_flags(flags), m_id(id), m_faceIgnore(MemTag::Mesh), m_ignoredFaceCount(0), m_indices(MemTag::MeshIndices), m_positions(MemTag::MeshPositions), m_normals(MemTag::MeshNormals), m_texcoords(MemTag::MeshTexcoords), m_faceGroups(MemTag::Mesh), m_faceGroupFirstFace(MemTag::Mesh), m_faceGroupNextFace(MemTag::Mesh), m_faceGroupFaceCounts(MemTag::Mesh), m_colocalVertexCount(0), m_nextColocalVertex(MemTag::MeshColocals), m_boundaryEdges(MemTag::MeshBoundaries), m_oppositeEdges(MemTag::MeshBoundaries), m_nextBoundaryEdges(MemTag::MeshBoundaries), m_edgeMap(MemTag::MeshEdgeMap, approxFaceCount * 3) { m_indices.reserve(approxFaceCount * 3); m_positions.reserve(approxVertexCount); @@ -2165,6 +2429,7 @@ public: m_normals.reserve(approxVertexCount); } + static constexpr uint16_t kInvalidFaceGroup = UINT16_MAX; uint32_t flags() const { return m_flags; } uint32_t id() const { return m_id; } @@ -2199,9 +2464,12 @@ public: { AddFaceResult::Enum result = AddFaceResult::OK; if (m_flags & MeshFlags::HasFaceGroups) - m_faceGroups.push_back(UINT32_MAX); - if (m_flags & MeshFlags::HasIgnoredFaces) + m_faceGroups.push_back(kInvalidFaceGroup); + if (m_flags & MeshFlags::HasIgnoredFaces) { m_faceIgnore.push_back(ignore); + if (ignore) + m_ignoredFaceCount++; + } const uint32_t firstIndex = m_indices.size(); for (uint32_t i = 0; i < 3; i++) m_indices.push_back(indices[i]); @@ -2221,13 +2489,13 @@ public: void createColocals() { const uint32_t vertexCount = m_positions.size(); - Array<AABB> aabbs; + Array<AABB> aabbs(MemTag::BVH); aabbs.resize(vertexCount); for (uint32_t i = 0; i < m_positions.size(); i++) aabbs[i] = AABB(m_positions[i], m_epsilon); BVH bvh(aabbs); - Array<uint32_t> colocals; - Array<uint32_t> potential; + Array<uint32_t> colocals(MemTag::MeshColocals); + Array<uint32_t> potential(MemTag::MeshColocals); m_colocalVertexCount = 0; m_nextColocalVertex.resize(vertexCount); for (uint32_t i = 0; i < vertexCount; i++) @@ -2259,7 +2527,7 @@ public: } // Check if the face duplicates any edges of any face already in the group. - bool faceDuplicatesGroupEdge(uint32_t group, uint32_t face) const + bool faceDuplicatesGroupEdge(uint16_t group, uint32_t face) const { for (FaceEdgeIterator edgeIt(this, face); !edgeIt.isDone(); edgeIt.advance()) { for (ColocalEdgeIterator colocalEdgeIt(this, edgeIt.vertex0(), edgeIt.vertex1()); !colocalEdgeIt.isDone(); colocalEdgeIt.advance()) { @@ -2270,55 +2538,31 @@ public: return false; } - // Check if the face mirrors any face already in the group. - // i.e. don't want two-sided faces in the same group. - // A face mirrors another face if all edges match with opposite winding. - bool faceMirrorsGroupFace(uint32_t group, uint32_t face) const - { - FaceEdgeIterator edgeIt(this, face); - for (ColocalEdgeIterator colocalEdgeIt(this, edgeIt.vertex1(), edgeIt.vertex0()); !colocalEdgeIt.isDone(); colocalEdgeIt.advance()) { - const uint32_t candidateFace = meshEdgeFace(colocalEdgeIt.edge()); - if (m_faceGroups[candidateFace] == group) { - // Found a match for mirrored first edge, try the other edges. - bool match = false; - for (; !edgeIt.isDone(); edgeIt.advance()) { - match = false; - for (ColocalEdgeIterator colocalEdgeIt2(this, edgeIt.vertex1(), edgeIt.vertex0()); !colocalEdgeIt2.isDone(); colocalEdgeIt2.advance()) { - if (meshEdgeFace(colocalEdgeIt2.edge()) == candidateFace) { - match = true; - break; - } - } - if (!match) - break; - } - if (match) - return true; // All edges are mirrored in this face. - // Try the next face. - edgeIt = FaceEdgeIterator(this, candidateFace); - } - } - return false; - } - void createFaceGroups() { - uint32_t group = 0; + uint32_t firstUnassignedFace = 0; + uint16_t group = 0; Array<uint32_t> growFaces; + const uint32_t n = faceCount(); + m_faceGroupNextFace.resize(n); for (;;) { // Find an unassigned face. uint32_t face = UINT32_MAX; - for (uint32_t f = 0; f < faceCount(); f++) { - if (m_faceGroups[f] == UINT32_MAX && !isFaceIgnored(f)) { + for (uint32_t f = firstUnassignedFace; f < n; f++) { + if (m_faceGroups[f] == kInvalidFaceGroup && !isFaceIgnored(f)) { face = f; + firstUnassignedFace = f + 1; break; } } if (face == UINT32_MAX) break; // All faces assigned to a group (except ignored faces). m_faceGroups[face] = group; + m_faceGroupNextFace[face] = UINT32_MAX; + m_faceGroupFirstFace.push_back(face); growFaces.clear(); growFaces.push_back(face); + uint32_t prevFace = face, groupFaceCount = 1; // Find faces connected to the face and assign them to the same group as the face, unless they are already assigned to another group. for (;;) { if (growFaces.isEmpty()) @@ -2340,24 +2584,38 @@ public: alreadyAssignedToThisGroup = true; break; } - if (m_faceGroups[oppositeFace] != UINT32_MAX) + if (m_faceGroups[oppositeFace] != kInvalidFaceGroup) continue; // Connected face is already assigned to another group. if (faceDuplicatesGroupEdge(group, oppositeFace)) continue; // Don't want duplicate edges in a group. - if (faceMirrorsGroupFace(group, oppositeFace)) - continue; // Don't want two-sided faces in a group. const uint32_t oppositeVertex0 = m_indices[meshEdgeIndex0(oppositeEdge)]; const uint32_t oppositeVertex1 = m_indices[meshEdgeIndex1(oppositeEdge)]; if (bestConnectedFace == UINT32_MAX || (oppositeVertex0 == edgeIt.vertex1() && oppositeVertex1 == edgeIt.vertex0())) bestConnectedFace = oppositeFace; +#if 0 + else { + // Choose the opposite face with the smallest dihedral angle. + const float d1 = 1.0f - dot(computeFaceNormal(f), computeFaceNormal(bestConnectedFace)); + const float d2 = 1.0f - dot(computeFaceNormal(f), computeFaceNormal(oppositeFace)); + if (d2 < d1) + bestConnectedFace = oppositeFace; + } +#endif } if (!alreadyAssignedToThisGroup && bestConnectedFace != UINT32_MAX) { m_faceGroups[bestConnectedFace] = group; + m_faceGroupNextFace[bestConnectedFace] = UINT32_MAX; + if (prevFace != UINT32_MAX) + m_faceGroupNextFace[prevFace] = bestConnectedFace; + prevFace = bestConnectedFace; + groupFaceCount++; growFaces.push_back(bestConnectedFace); } } } + m_faceGroupFaceCounts.push_back(groupFaceCount); group++; + XA_ASSERT(group < kInvalidFaceGroup); } } @@ -2366,29 +2624,27 @@ public: const uint32_t edgeCount = m_indices.size(); const uint32_t vertexCount = m_positions.size(); m_oppositeEdges.resize(edgeCount); - m_boundaryVertices.resize(vertexCount); + m_boundaryEdges.reserve(uint32_t(edgeCount * 0.1f)); + m_isBoundaryVertex.resize(vertexCount); + m_isBoundaryVertex.zeroOutMemory(); for (uint32_t i = 0; i < edgeCount; i++) m_oppositeEdges[i] = UINT32_MAX; - for (uint32_t i = 0; i < vertexCount; i++) - m_boundaryVertices[i] = false; - const bool hasFaceGroups = m_flags & MeshFlags::HasFaceGroups; - for (uint32_t i = 0; i < faceCount(); i++) { + const uint32_t faceCount = m_indices.size() / 3; + for (uint32_t i = 0; i < faceCount; i++) { if (isFaceIgnored(i)) continue; for (uint32_t j = 0; j < 3; j++) { - const uint32_t vertex0 = m_indices[i * 3 + j]; + const uint32_t edge = i * 3 + j; + const uint32_t vertex0 = m_indices[edge]; const uint32_t vertex1 = m_indices[i * 3 + (j + 1) % 3]; // If there is an edge with opposite winding to this one, the edge isn't on a boundary. - const uint32_t oppositeEdge = findEdge(hasFaceGroups ? m_faceGroups[i] : UINT32_MAX, vertex1, vertex0); + const uint32_t oppositeEdge = findEdge(vertex1, vertex0); if (oppositeEdge != UINT32_MAX) { -#if XA_DEBUG - if (hasFaceGroups) - XA_DEBUG_ASSERT(m_faceGroups[meshEdgeFace(oppositeEdge)] == m_faceGroups[i]); -#endif - XA_DEBUG_ASSERT(!isFaceIgnored(meshEdgeFace(oppositeEdge))); - m_oppositeEdges[i * 3 + j] = oppositeEdge; + m_oppositeEdges[edge] = oppositeEdge; } else { - m_boundaryVertices[vertex0] = m_boundaryVertices[vertex1] = true; + m_boundaryEdges.push_back(edge); + m_isBoundaryVertex.set(vertex0); + m_isBoundaryVertex.set(vertex1); } } } @@ -2407,12 +2663,12 @@ public: m_nextBoundaryEdges[i] = UINT32_MAX; uint32_t numBoundaryLoops = 0, numUnclosedBoundaries = 0; BitArray linkedEdges(edgeCount); - linkedEdges.clearAll(); + linkedEdges.zeroOutMemory(); for (;;) { // Find the first boundary edge that hasn't been linked yet. uint32_t firstEdge = UINT32_MAX; for (uint32_t i = 0; i < edgeCount; i++) { - if (m_oppositeEdges[i] == UINT32_MAX && !linkedEdges.bitAt(i)) { + if (m_oppositeEdges[i] == UINT32_MAX && !linkedEdges.get(i)) { firstEdge = i; break; } @@ -2430,12 +2686,8 @@ public: const uint32_t otherEdge = mapIndex / 2; // Two vertices added per edge. if (m_oppositeEdges[otherEdge] != UINT32_MAX) goto next; // Not a boundary edge. - if (linkedEdges.bitAt(otherEdge)) + if (linkedEdges.get(otherEdge)) goto next; // Already linked. - if (m_flags & MeshFlags::HasFaceGroups && m_faceGroups[meshEdgeFace(currentEdge)] != m_faceGroups[meshEdgeFace(otherEdge)]) - goto next; // Don't cross face groups. - if (isFaceIgnored(meshEdgeFace(otherEdge))) - goto next; // Face is ignored. if (m_indices[meshEdgeIndex0(otherEdge)] != it.vertex()) goto next; // Edge contains the vertex, but it's the wrong one. // First edge (closing the boundary loop) has the highest priority. @@ -2449,11 +2701,11 @@ public: if (bestNextEdge == UINT32_MAX) { numUnclosedBoundaries++; if (currentEdge == firstEdge) - linkedEdges.setBitAt(firstEdge); // Only 1 edge in this boundary "loop". + linkedEdges.set(firstEdge); // Only 1 edge in this boundary "loop". break; // Can't find a next edge. } m_nextBoundaryEdges[currentEdge] = bestNextEdge; - linkedEdges.setBitAt(bestNextEdge); + linkedEdges.set(bestNextEdge); currentEdge = bestNextEdge; if (currentEdge == firstEdge) { numBoundaryLoops++; @@ -2461,6 +2713,7 @@ public: } } } +#if XA_FIX_INTERNAL_BOUNDARY_LOOPS // Find internal boundary loops and separate them. // Detect by finding two edges in a boundary loop that have a colocal end vertex. // Fix by swapping their next boundary edge. @@ -2469,28 +2722,29 @@ public: fixInternalBoundary: meshGetBoundaryLoops(*this, boundaryLoops); for (uint32_t loop = 0; loop < boundaryLoops.size(); loop++) { - linkedEdges.clearAll(); - for (Mesh::BoundaryEdgeIterator it1(this, boundaryLoops[loop]); !it1.isDone(); it1.advance()) { + linkedEdges.zeroOutMemory(); + for (Mesh::BoundaryLoopEdgeIterator it1(this, boundaryLoops[loop]); !it1.isDone(); it1.advance()) { const uint32_t e1 = it1.edge(); - if (linkedEdges.bitAt(e1)) + if (linkedEdges.get(e1)) continue; - for (Mesh::BoundaryEdgeIterator it2(this, boundaryLoops[loop]); !it2.isDone(); it2.advance()) { + for (Mesh::BoundaryLoopEdgeIterator it2(this, boundaryLoops[loop]); !it2.isDone(); it2.advance()) { const uint32_t e2 = it2.edge(); - if (e1 == e2 || !isBoundaryEdge(e2) || linkedEdges.bitAt(e2)) + if (e1 == e2 || !isBoundaryEdge(e2) || linkedEdges.get(e2)) continue; if (!areColocal(m_indices[meshEdgeIndex1(e1)], m_indices[meshEdgeIndex1(e2)])) continue; swap(m_nextBoundaryEdges[e1], m_nextBoundaryEdges[e2]); - linkedEdges.setBitAt(e1); - linkedEdges.setBitAt(e2); + linkedEdges.set(e1); + linkedEdges.set(e2); goto fixInternalBoundary; // start over } } } +#endif } /// Find edge, test all colocals. - uint32_t findEdge(uint32_t faceGroup, uint32_t vertex0, uint32_t vertex1) const + uint32_t findEdge(uint32_t vertex0, uint32_t vertex1) const { uint32_t result = UINT32_MAX; if (m_nextColocalVertex.isEmpty()) { @@ -2498,7 +2752,7 @@ public: uint32_t edge = m_edgeMap.get(key); while (edge != UINT32_MAX) { // Don't find edges of ignored faces. - if ((faceGroup == UINT32_MAX || m_faceGroups[meshEdgeFace(edge)] == faceGroup) && !isFaceIgnored(meshEdgeFace(edge))) { + if (!isFaceIgnored(meshEdgeFace(edge))) { //XA_DEBUG_ASSERT(m_id != UINT32_MAX || (m_id == UINT32_MAX && result == UINT32_MAX)); // duplicate edge - ignore on initial meshes result = edge; #if !XA_DEBUG @@ -2514,7 +2768,7 @@ public: uint32_t edge = m_edgeMap.get(key); while (edge != UINT32_MAX) { // Don't find edges of ignored faces. - if ((faceGroup == UINT32_MAX || m_faceGroups[meshEdgeFace(edge)] == faceGroup) && !isFaceIgnored(meshEdgeFace(edge))) { + if (!isFaceIgnored(meshEdgeFace(edge))) { XA_DEBUG_ASSERT(m_id != UINT32_MAX || (m_id == UINT32_MAX && result == UINT32_MAX)); // duplicate edge - ignore on initial meshes result = edge; #if !XA_DEBUG @@ -2607,7 +2861,7 @@ public: { float area = 0; for (uint32_t f = 0; f < faceCount(); f++) - area += faceArea(f); + area += computeFaceArea(f); XA_DEBUG_ASSERT(area >= 0); return area; } @@ -2616,11 +2870,11 @@ public: { float area = 0; for (uint32_t f = 0; f < faceCount(); f++) - area += faceParametricArea(f); + area += computeFaceParametricArea(f); return fabsf(area); // May be negative, depends on texcoord winding. } - float faceArea(uint32_t face) const + float computeFaceArea(uint32_t face) const { const Vector3 &p0 = m_positions[m_indices[face * 3 + 0]]; const Vector3 &p1 = m_positions[m_indices[face * 3 + 1]]; @@ -2628,7 +2882,7 @@ public: return length(cross(p1 - p0, p2 - p0)) * 0.5f; } - Vector3 faceCentroid(uint32_t face) const + Vector3 computeFaceCentroid(uint32_t face) const { Vector3 sum(0.0f); for (uint32_t i = 0; i < 3; i++) @@ -2636,22 +2890,9 @@ public: return sum / 3.0f; } - Vector3 calculateFaceNormal(uint32_t face) const - { - return normalizeSafe(triangleNormalAreaScaled(face), Vector3(0, 0, 1), 0.0f); - } - - float faceParametricArea(uint32_t face) const - { - const Vector2 &t0 = m_texcoords[m_indices[face * 3 + 0]]; - const Vector2 &t1 = m_texcoords[m_indices[face * 3 + 1]]; - const Vector2 &t2 = m_texcoords[m_indices[face * 3 + 2]]; - return triangleArea(t0, t1, t2) * 0.5f; - } - // Average of the edge midpoints weighted by the edge length. // I want a point inside the triangle, but closer to the cirumcenter. - Vector3 triangleCenter(uint32_t face) const + Vector3 computeFaceCenter(uint32_t face) const { const Vector3 &p0 = m_positions[m_indices[face * 3 + 0]]; const Vector3 &p1 = m_positions[m_indices[face * 3 + 1]]; @@ -2665,22 +2906,25 @@ public: return m0 + m1 + m2; } - // Unnormalized face normal assuming it's a triangle. - Vector3 triangleNormal(uint32_t face) const - { - return normalizeSafe(triangleNormalAreaScaled(face), Vector3(0), 0.0f); - } - - Vector3 triangleNormalAreaScaled(uint32_t face) const + Vector3 computeFaceNormal(uint32_t face) const { const Vector3 &p0 = m_positions[m_indices[face * 3 + 0]]; const Vector3 &p1 = m_positions[m_indices[face * 3 + 1]]; const Vector3 &p2 = m_positions[m_indices[face * 3 + 2]]; const Vector3 e0 = p2 - p0; const Vector3 e1 = p1 - p0; - return cross(e0, e1); + const Vector3 normalAreaScaled = cross(e0, e1); + return normalizeSafe(normalAreaScaled, Vector3(0, 0, 1), 0.0f); } + float computeFaceParametricArea(uint32_t face) const + { + const Vector2 &t0 = m_texcoords[m_indices[face * 3 + 0]]; + const Vector2 &t1 = m_texcoords[m_indices[face * 3 + 1]]; + const Vector2 &t2 = m_texcoords[m_indices[face * 3 + 2]]; + return triangleArea(t0, t1, t2); + } + // @@ This is not exactly accurate, we should compare the texture coordinates... bool isSeam(uint32_t edge) const { @@ -2732,7 +2976,8 @@ public: XA_INLINE uint32_t edgeCount() const { return m_indices.size(); } XA_INLINE uint32_t oppositeEdge(uint32_t edge) const { return m_oppositeEdges[edge]; } XA_INLINE bool isBoundaryEdge(uint32_t edge) const { return m_oppositeEdges[edge] == UINT32_MAX; } - XA_INLINE bool isBoundaryVertex(uint32_t vertex) const { return m_boundaryVertices[vertex]; } + XA_INLINE const Array<uint32_t> &boundaryEdges() const { return m_boundaryEdges; } + XA_INLINE bool isBoundaryVertex(uint32_t vertex) const { return m_isBoundaryVertex.get(vertex); } XA_INLINE uint32_t colocalVertexCount() const { return m_colocalVertexCount; } XA_INLINE uint32_t vertexCount() const { return m_positions.size(); } XA_INLINE uint32_t vertexAt(uint32_t i) const { return m_indices[i]; } @@ -2740,10 +2985,14 @@ public: XA_INLINE const Vector3 &normal(uint32_t vertex) const { XA_DEBUG_ASSERT(m_flags & MeshFlags::HasNormals); return m_normals[vertex]; } XA_INLINE const Vector2 &texcoord(uint32_t vertex) const { return m_texcoords[vertex]; } XA_INLINE Vector2 &texcoord(uint32_t vertex) { return m_texcoords[vertex]; } + XA_INLINE const Vector2 *texcoords() const { return m_texcoords.data(); } XA_INLINE Vector2 *texcoords() { return m_texcoords.data(); } + XA_INLINE uint32_t ignoredFaceCount() const { return m_ignoredFaceCount; } XA_INLINE uint32_t faceCount() const { return m_indices.size() / 3; } - XA_INLINE uint32_t faceGroupCount() const { XA_DEBUG_ASSERT(m_flags & MeshFlags::HasFaceGroups); return m_faceGroups.size(); } - XA_INLINE uint32_t faceGroupAt(uint32_t face) const { XA_DEBUG_ASSERT(m_flags & MeshFlags::HasFaceGroups); return m_faceGroups[face]; } + XA_INLINE uint16_t faceGroupAt(uint32_t face) const { XA_DEBUG_ASSERT(m_flags & MeshFlags::HasFaceGroups); return m_faceGroups[face]; } + XA_INLINE uint32_t faceGroupCount() const { XA_DEBUG_ASSERT(m_flags & MeshFlags::HasFaceGroups); return m_faceGroupFaceCounts.size(); } + XA_INLINE uint32_t faceGroupNextFace(uint32_t face) const { XA_DEBUG_ASSERT(m_flags & MeshFlags::HasFaceGroups); return m_faceGroupNextFace[face]; } + XA_INLINE uint32_t faceGroupFaceCount(uint32_t group) const { XA_DEBUG_ASSERT(m_flags & MeshFlags::HasFaceGroups); return m_faceGroupFaceCounts[group]; } XA_INLINE const uint32_t *indices() const { return m_indices.data(); } XA_INLINE uint32_t indexCount() const { return m_indices.size(); } @@ -2754,18 +3003,25 @@ private: uint32_t m_flags; uint32_t m_id; Array<bool> m_faceIgnore; - Array<uint32_t> m_faceGroups; + uint32_t m_ignoredFaceCount; Array<uint32_t> m_indices; Array<Vector3> m_positions; Array<Vector3> m_normals; Array<Vector2> m_texcoords; + // Populated by createFaceGroups + Array<uint16_t> m_faceGroups; + Array<uint32_t> m_faceGroupFirstFace; + Array<uint32_t> m_faceGroupNextFace; // In: face. Out: the next face in the same group. + Array<uint32_t> m_faceGroupFaceCounts; // In: face group. Out: number of faces in the group. + // Populated by createColocals uint32_t m_colocalVertexCount; Array<uint32_t> m_nextColocalVertex; // In: vertex index. Out: the vertex index of the next colocal position. // Populated by createBoundaries - Array<bool> m_boundaryVertices; + BitArray m_isBoundaryVertex; + Array<uint32_t> m_boundaryEdges; Array<uint32_t> m_oppositeEdges; // In: edge index. Out: the index of the opposite edge (i.e. wound the opposite direction). UINT32_MAX if the input edge is a boundary edge. // Populated by linkBoundaries @@ -2776,28 +3032,24 @@ private: EdgeKey() {} EdgeKey(const EdgeKey &k) : v0(k.v0), v1(k.v1) {} EdgeKey(uint32_t v0, uint32_t v1) : v0(v0), v1(v1) {} - - void operator=(const EdgeKey &k) - { - v0 = k.v0; - v1 = k.v1; - } - bool operator==(const EdgeKey &k) const - { - return v0 == k.v0 && v1 == k.v1; - } + bool operator==(const EdgeKey &k) const { return v0 == k.v0 && v1 == k.v1; } uint32_t v0; uint32_t v1; }; - HashMap<EdgeKey> m_edgeMap; + struct EdgeHash + { + uint32_t operator()(const EdgeKey &k) const { return k.v0 * 32768u + k.v1; } + }; + + HashMap<EdgeKey, EdgeHash> m_edgeMap; public: - class BoundaryEdgeIterator + class BoundaryLoopEdgeIterator { public: - BoundaryEdgeIterator(const Mesh *mesh, uint32_t edge) : m_mesh(mesh), m_first(UINT32_MAX), m_current(edge) {} + BoundaryLoopEdgeIterator(const Mesh *mesh, uint32_t edge) : m_mesh(mesh), m_first(UINT32_MAX), m_current(edge) {} void advance() { @@ -2866,7 +3118,14 @@ public: public: ColocalEdgeIterator(const Mesh *mesh, uint32_t vertex0, uint32_t vertex1) : m_mesh(mesh), m_vertex0It(mesh, vertex0), m_vertex1It(mesh, vertex1), m_vertex1(vertex1) { - resetElement(); + do { + if (!resetElement()) { + advanceVertex1(); + } + else { + break; + } + } while (!isDone()); } void advance() @@ -2885,7 +3144,7 @@ public: } private: - void resetElement() + bool resetElement() { m_edge = m_mesh->m_edgeMap.get(Mesh::EdgeKey(m_vertex0It.vertex(), m_vertex1It.vertex())); while (m_edge != UINT32_MAX) { @@ -2893,8 +3152,10 @@ public: break; m_edge = m_mesh->m_edgeMap.getNext(m_edge); } - if (m_edge == UINT32_MAX) - advanceVertex1(); + if (m_edge == UINT32_MAX) { + return false; + } + return true; } void advanceElement() @@ -2910,22 +3171,22 @@ public: advanceVertex1(); } - void advanceVertex0() - { - m_vertex0It.advance(); - if (m_vertex0It.isDone()) - return; - m_vertex1It = ColocalVertexIterator(m_mesh, m_vertex1); - resetElement(); - } - void advanceVertex1() { - m_vertex1It.advance(); - if (m_vertex1It.isDone()) - advanceVertex0(); - else - resetElement(); + auto successful = false; + while (!successful) { + m_vertex1It.advance(); + if (m_vertex1It.isDone()) { + if (!m_vertex0It.isDone()) { + m_vertex0It.advance(); + m_vertex1It = ColocalVertexIterator(m_mesh, m_vertex1); + } + else { + return; + } + } + successful = resetElement(); + } } bool isIgnoredFace() const @@ -2976,16 +3237,8 @@ public: return meshEdgeFace(oedge); } - uint32_t vertex0() const - { - return m_mesh->m_indices[m_face * 3 + m_relativeEdge]; - } - - uint32_t vertex1() const - { - return m_mesh->m_indices[m_face * 3 + (m_relativeEdge + 1) % 3]; - } - + uint32_t vertex0() const { return m_mesh->m_indices[m_face * 3 + m_relativeEdge]; } + uint32_t vertex1() const { return m_mesh->m_indices[m_face * 3 + (m_relativeEdge + 1) % 3]; } const Vector3 &position0() const { return m_mesh->m_positions[vertex0()]; } const Vector3 &position1() const { return m_mesh->m_positions[vertex1()]; } const Vector3 &normal0() const { return m_mesh->m_normals[vertex0()]; } @@ -2999,8 +3252,39 @@ public: uint32_t m_edge; uint32_t m_relativeEdge; }; + + class GroupFaceIterator + { + public: + GroupFaceIterator(const Mesh *mesh, uint32_t group) : m_mesh(mesh) + { + XA_DEBUG_ASSERT(group != UINT32_MAX); + m_current = mesh->m_faceGroupFirstFace[group]; + } + + void advance() + { + m_current = m_mesh->m_faceGroupNextFace[m_current]; + } + + bool isDone() const + { + return m_current == UINT32_MAX; + } + + uint32_t face() const + { + return m_current; + } + + private: + const Mesh *m_mesh; + uint32_t m_current; + }; }; +constexpr uint16_t Mesh::kInvalidFaceGroup; + static bool meshCloseHole(Mesh *mesh, const Array<uint32_t> &holeVertices, const Vector3 &normal) { #if XA_CLOSE_HOLES_CHECK_EDGE_INTERSECTION @@ -3027,15 +3311,15 @@ static bool meshCloseHole(Mesh *mesh, const Array<uint32_t> &holeVertices, const const uint32_t i3 = (i + 1) % frontCount; const Vector3 edge1 = frontPoints[i1] - frontPoints[i2]; const Vector3 edge2 = frontPoints[i3] - frontPoints[i2]; - frontAngles[i] = acosf(dot(edge1, edge2) / (length(edge1) * length(edge2))); + frontAngles[i] = atan2f(length(cross(edge1, edge2)), dot(edge1, edge2)); if (frontAngles[i] >= smallestAngle || isNan(frontAngles[i])) continue; // Don't duplicate edges. - if (mesh->findEdge(UINT32_MAX, frontVertices[i1], frontVertices[i2]) != UINT32_MAX) + if (mesh->findEdge(frontVertices[i1], frontVertices[i2]) != UINT32_MAX) continue; - if (mesh->findEdge(UINT32_MAX, frontVertices[i2], frontVertices[i3]) != UINT32_MAX) + if (mesh->findEdge(frontVertices[i2], frontVertices[i3]) != UINT32_MAX) continue; - if (mesh->findEdge(UINT32_MAX, frontVertices[i3], frontVertices[i1]) != UINT32_MAX) + if (mesh->findEdge(frontVertices[i3], frontVertices[i1]) != UINT32_MAX) continue; /* Make sure he new edge that would be formed by (i3, i1) doesn't intersect any vertices. This often happens when fixing t-junctions. @@ -3128,9 +3412,10 @@ static bool meshCloseHole(Mesh *mesh, const Array<uint32_t> &holeVertices, const return true; } -static bool meshCloseHoles(Mesh *mesh, const Array<uint32_t> &boundaryLoops, const Vector3 &normal, Array<uint32_t> &holeFaceCounts) +static bool meshCloseHoles(Mesh *mesh, const Array<uint32_t> &boundaryLoops, const Vector3 &normal, uint32_t *holeCount, Array<uint32_t> *holeFaceCounts) { - holeFaceCounts.clear(); + if (holeFaceCounts) + holeFaceCounts->clear(); // Compute lengths. const uint32_t boundaryCount = boundaryLoops.size(); Array<float> boundaryLengths; @@ -3139,7 +3424,7 @@ static bool meshCloseHoles(Mesh *mesh, const Array<uint32_t> &boundaryLoops, con for (uint32_t i = 0; i < boundaryCount; i++) { float boundaryLength = 0.0f; boundaryEdgeCounts[i] = 0; - for (Mesh::BoundaryEdgeIterator it(mesh, boundaryLoops[i]); !it.isDone(); it.advance()) { + for (Mesh::BoundaryLoopEdgeIterator it(mesh, boundaryLoops[i]); !it.isDone(); it.advance()) { const Vector3 &t0 = mesh->position(mesh->vertexAt(meshEdgeIndex0(it.edge()))); const Vector3 &t1 = mesh->position(mesh->vertexAt(meshEdgeIndex1(it.edge()))); boundaryLength += length(t1 - t0); @@ -3167,7 +3452,7 @@ static bool meshCloseHoles(Mesh *mesh, const Array<uint32_t> &boundaryLoops, con holePoints.resize(boundaryEdgeCounts[i]); // Winding is backwards for internal boundaries. uint32_t e = 0; - for (Mesh::BoundaryEdgeIterator it(mesh, boundaryLoops[i]); !it.isDone(); it.advance()) { + for (Mesh::BoundaryLoopEdgeIterator it(mesh, boundaryLoops[i]); !it.isDone(); it.advance()) { const uint32_t vertex = mesh->vertexAt(meshEdgeIndex0(it.edge())); holeVertices[boundaryEdgeCounts[i] - 1 - e] = vertex; holePoints[boundaryEdgeCounts[i] - 1 - e] = mesh->position(vertex); @@ -3176,7 +3461,10 @@ static bool meshCloseHoles(Mesh *mesh, const Array<uint32_t> &boundaryLoops, con const uint32_t oldFaceCount = mesh->faceCount(); if (!meshCloseHole(mesh, holeVertices, normal)) result = false; // Return false if any hole failed to close, but keep trying to close other holes. - holeFaceCounts.push_back(mesh->faceCount() - oldFaceCount); + if (holeCount) + (*holeCount)++; + if (holeFaceCounts) + holeFaceCounts->push_back(mesh->faceCount() - oldFaceCount); } return result; } @@ -3307,104 +3595,18 @@ static void meshGetBoundaryLoops(const Mesh &mesh, Array<uint32_t> &boundaryLoop { const uint32_t edgeCount = mesh.edgeCount(); BitArray bitFlags(edgeCount); - bitFlags.clearAll(); + bitFlags.zeroOutMemory(); boundaryLoops.clear(); // Search for boundary edges. Mark all the edges that belong to the same boundary. for (uint32_t e = 0; e < edgeCount; e++) { - if (bitFlags.bitAt(e) || !mesh.isBoundaryEdge(e)) + if (bitFlags.get(e) || !mesh.isBoundaryEdge(e)) continue; - for (Mesh::BoundaryEdgeIterator it(&mesh, e); !it.isDone(); it.advance()) - bitFlags.setBitAt(it.edge()); + for (Mesh::BoundaryLoopEdgeIterator it(&mesh, e); !it.isDone(); it.advance()) + bitFlags.set(it.edge()); boundaryLoops.push_back(e); } } -class MeshTopology -{ -public: - MeshTopology(const Mesh *mesh) - { - const uint32_t vertexCount = mesh->colocalVertexCount(); - const uint32_t faceCount = mesh->faceCount(); - const uint32_t edgeCount = mesh->edgeCount(); - Array<uint32_t> stack(MemTag::Default); - stack.reserve(faceCount); - BitArray bitFlags(faceCount); - bitFlags.clearAll(); - // Compute connectivity. - m_connectedCount = 0; - for (uint32_t f = 0; f < faceCount; f++ ) { - if (bitFlags.bitAt(f) == false) { - m_connectedCount++; - stack.push_back(f); - while (!stack.isEmpty()) { - const uint32_t top = stack.back(); - XA_ASSERT(top != uint32_t(~0)); - stack.pop_back(); - if (bitFlags.bitAt(top) == false) { - bitFlags.setBitAt(top); - for (Mesh::FaceEdgeIterator it(mesh, top); !it.isDone(); it.advance()) { - const uint32_t oppositeFace = it.oppositeFace(); - if (oppositeFace != UINT32_MAX) - stack.push_back(oppositeFace); - } - } - } - } - } - XA_ASSERT(stack.isEmpty()); - // Count boundary loops. - m_boundaryCount = 0; - bitFlags.resize(edgeCount); - bitFlags.clearAll(); - // Don't forget to link the boundary otherwise this won't work. - for (uint32_t e = 0; e < edgeCount; e++) { - if (bitFlags.bitAt(e) || !mesh->isBoundaryEdge(e)) - continue; - m_boundaryCount++; - for (Mesh::BoundaryEdgeIterator it(mesh, e); !it.isDone(); it.advance()) - bitFlags.setBitAt(it.edge()); - } - // Compute euler number. - m_eulerNumber = vertexCount - edgeCount + faceCount; - // Compute genus. (only valid on closed connected surfaces) - m_genus = -1; - if (isClosed() && isConnected()) - m_genus = (2 - m_eulerNumber) / 2; - } - - /// Determine if the mesh is connected. - bool isConnected() const - { - return m_connectedCount == 1; - } - - /// Determine if the mesh is closed. (Each edge is shared by two faces) - bool isClosed() const - { - return m_boundaryCount == 0; - } - - /// Return true if the mesh has the topology of a disk. - bool isDisk() const - { - return isConnected() && m_boundaryCount == 1/* && m_eulerNumber == 1*/; - } - -private: - ///< Number of boundary loops. - int m_boundaryCount; - - ///< Number of connected components. - int m_connectedCount; - - ///< Euler number. - int m_eulerNumber; - - /// Mesh genus. - int m_genus; -}; - struct Progress { Progress(ProgressCategory::Enum category, ProgressFunc func, void *userData, uint32_t maxValue) : value(0), cancel(false), m_category(category), m_func(func), m_userData(userData), m_maxValue(maxValue), m_progress(0) @@ -3482,6 +3684,7 @@ class TaskScheduler public: TaskScheduler() : m_shutdown(false) { + m_threadIndex = 0; // Max with current task scheduler usage is 1 per thread + 1 deep nesting, but allow for some slop. m_maxGroups = std::thread::hardware_concurrency() * 4; m_groups = XA_ALLOC_ARRAY(MemTag::Default, TaskGroup, m_maxGroups); @@ -3494,7 +3697,7 @@ public: for (uint32_t i = 0; i < m_workers.size(); i++) { new (&m_workers[i]) Worker(); m_workers[i].wakeup = false; - m_workers[i].thread = XA_NEW_ARGS(MemTag::Default, std::thread, workerThread, this, &m_workers[i]); + m_workers[i].thread = XA_NEW_ARGS(MemTag::Default, std::thread, workerThread, this, &m_workers[i], i + 1); } } @@ -3517,6 +3720,11 @@ public: XA_FREE(m_groups); } + uint32_t threadCount() const + { + return max(1u, std::thread::hardware_concurrency()); // Including the main thread. + } + TaskGroupHandle createTaskGroup(uint32_t reserveSize = 0) { // Claim the first free group. @@ -3581,6 +3789,8 @@ public: handle->value = UINT32_MAX; } + static uint32_t currentThreadIndex() { return m_threadIndex; } + private: struct TaskGroup { @@ -3603,9 +3813,11 @@ private: uint32_t m_maxGroups; Array<Worker> m_workers; std::atomic<bool> m_shutdown; + static thread_local uint32_t m_threadIndex; - static void workerThread(TaskScheduler *scheduler, Worker *worker) + static void workerThread(TaskScheduler *scheduler, Worker *worker, uint32_t threadIndex) { + m_threadIndex = threadIndex; std::unique_lock<std::mutex> lock(worker->mutex); for (;;) { worker->cv.wait(lock, [=]{ return worker->wakeup.load(); }); @@ -3636,6 +3848,8 @@ private: } } }; + +thread_local uint32_t TaskScheduler::m_threadIndex; #else class TaskScheduler { @@ -3646,6 +3860,11 @@ public: destroyGroup({ i }); } + uint32_t threadCount() const + { + return 1; + } + TaskGroupHandle createTaskGroup(uint32_t reserveSize = 0) { TaskGroup *group = XA_NEW(MemTag::Default, TaskGroup); @@ -3675,6 +3894,8 @@ public: handle->value = UINT32_MAX; } + static uint32_t currentThreadIndex() { return 0; } + private: void destroyGroup(TaskGroupHandle handle) { @@ -3695,6 +3916,369 @@ private: }; #endif +#if XA_DEBUG_EXPORT_TGA +const uint8_t TGA_TYPE_RGB = 2; +const uint8_t TGA_ORIGIN_UPPER = 0x20; + +#pragma pack(push, 1) +struct TgaHeader +{ + uint8_t id_length; + uint8_t colormap_type; + uint8_t image_type; + uint16_t colormap_index; + uint16_t colormap_length; + uint8_t colormap_size; + uint16_t x_origin; + uint16_t y_origin; + uint16_t width; + uint16_t height; + uint8_t pixel_size; + uint8_t flags; + enum { Size = 18 }; +}; +#pragma pack(pop) + +static void WriteTga(const char *filename, const uint8_t *data, uint32_t width, uint32_t height) +{ + XA_DEBUG_ASSERT(sizeof(TgaHeader) == TgaHeader::Size); + FILE *f; + XA_FOPEN(f, filename, "wb"); + if (!f) + return; + TgaHeader tga; + tga.id_length = 0; + tga.colormap_type = 0; + tga.image_type = TGA_TYPE_RGB; + tga.colormap_index = 0; + tga.colormap_length = 0; + tga.colormap_size = 0; + tga.x_origin = 0; + tga.y_origin = 0; + tga.width = (uint16_t)width; + tga.height = (uint16_t)height; + tga.pixel_size = 24; + tga.flags = TGA_ORIGIN_UPPER; + fwrite(&tga, sizeof(TgaHeader), 1, f); + fwrite(data, sizeof(uint8_t), width * height * 3, f); + fclose(f); +} +#endif + +template<typename T> +class ThreadLocal +{ +public: + ThreadLocal() + { +#if XA_MULTITHREADED + const uint32_t n = std::thread::hardware_concurrency(); +#else + const uint32_t n = 1; +#endif + m_array = XA_ALLOC_ARRAY(MemTag::Default, T, n); + for (uint32_t i = 0; i < n; i++) + new (&m_array[i]) T; + } + + ~ThreadLocal() + { +#if XA_MULTITHREADED + const uint32_t n = std::thread::hardware_concurrency(); +#else + const uint32_t n = 1; +#endif + for (uint32_t i = 0; i < n; i++) + m_array[i].~T(); + XA_FREE(m_array); + } + + T &get() const + { + return m_array[TaskScheduler::currentThreadIndex()]; + } + +private: + T *m_array; +}; + +class UniformGrid2 +{ +public: + void reset(const Vector2 *positions, const uint32_t *indices = nullptr, uint32_t reserveEdgeCount = 0) + { + m_edges.clear(); + if (reserveEdgeCount > 0) + m_edges.reserve(reserveEdgeCount); + m_positions = positions; + m_indices = indices; + m_cellDataOffsets.clear(); + } + + void append(uint32_t edge) + { + XA_DEBUG_ASSERT(m_cellDataOffsets.isEmpty()); + m_edges.push_back(edge); + } + + bool intersect(Vector2 v1, Vector2 v2, float epsilon) + { + const uint32_t edgeCount = m_edges.size(); + bool bruteForce = edgeCount <= 64; + if (!bruteForce && m_cellDataOffsets.isEmpty()) + bruteForce = !createGrid(); + if (bruteForce) { + for (uint32_t j = 0; j < edgeCount; j++) { + const uint32_t edge = m_edges[j]; + if (linesIntersect(v1, v2, edgePosition0(edge), edgePosition1(edge), epsilon)) + return true; + } + } else { + computePotentialEdges(v1, v2); + uint32_t prevEdge = UINT32_MAX; + for (uint32_t j = 0; j < m_potentialEdges.size(); j++) { + const uint32_t edge = m_potentialEdges[j]; + if (edge == prevEdge) + continue; + if (linesIntersect(v1, v2, edgePosition0(edge), edgePosition1(edge), epsilon)) + return true; + prevEdge = edge; + } + } + return false; + } + + bool intersectSelf(float epsilon) + { + const uint32_t edgeCount = m_edges.size(); + bool bruteForce = edgeCount <= 64; + if (!bruteForce && m_cellDataOffsets.isEmpty()) + bruteForce = !createGrid(); + for (uint32_t i = 0; i < edgeCount; i++) { + const uint32_t edge1 = m_edges[i]; + if (bruteForce) { + for (uint32_t j = 0; j < edgeCount; j++) { + const uint32_t edge2 = m_edges[j]; + if (edgesIntersect(edge1, edge2, epsilon)) + return true; + } + } else { + computePotentialEdges(edgePosition0(edge1), edgePosition1(edge1)); + uint32_t prevEdge = UINT32_MAX; + for (uint32_t j = 0; j < m_potentialEdges.size(); j++) { + const uint32_t edge2 = m_potentialEdges[j]; + if (edge2 == prevEdge) + continue; + if (edgesIntersect(edge1, edge2, epsilon)) + return true; + prevEdge = edge2; + } + } + } + return false; + } + +#if XA_DEBUG_EXPORT_BOUNDARY_GRID + void debugExport(const char *filename) + { + Array<uint8_t> image; + image.resize(m_gridWidth * m_gridHeight * 3); + for (uint32_t y = 0; y < m_gridHeight; y++) { + for (uint32_t x = 0; x < m_gridWidth; x++) { + uint8_t *bgr = &image[(x + y * m_gridWidth) * 3]; + bgr[0] = bgr[1] = bgr[2] = 32; + uint32_t offset = m_cellDataOffsets[x + y * m_gridWidth]; + while (offset != UINT32_MAX) { + const uint32_t edge2 = m_cellData[offset]; + srand(edge2); + for (uint32_t i = 0; i < 3; i++) + bgr[i] = uint8_t(bgr[i] * 0.5f + (rand() % 255) * 0.5f); + offset = m_cellData[offset + 1]; + } + } + } + WriteTga(filename, image.data(), m_gridWidth, m_gridHeight); + } +#endif + +private: + bool createGrid() + { + // Compute edge extents. Min will be the grid origin. + const uint32_t edgeCount = m_edges.size(); + Extents2 edgeExtents; + edgeExtents.reset(); + for (uint32_t i = 0; i < edgeCount; i++) { + const uint32_t edge = m_edges[i]; + edgeExtents.add(edgePosition0(edge)); + edgeExtents.add(edgePosition1(edge)); + } + m_gridOrigin = edgeExtents.min; + // Size grid to approximately one edge per cell. + const Vector2 extentsSize(edgeExtents.max - edgeExtents.min); + m_cellSize = min(extentsSize.x, extentsSize.y) / sqrtf((float)edgeCount); + if (m_cellSize <= 0.0f) + return false; + m_gridWidth = uint32_t(ceilf(extentsSize.x / m_cellSize)); + m_gridHeight = uint32_t(ceilf(extentsSize.y / m_cellSize)); + if (m_gridWidth == 0 || m_gridHeight == 0) + return false; + // Insert edges into cells. + m_cellDataOffsets.resize(m_gridWidth * m_gridHeight); + for (uint32_t i = 0; i < m_cellDataOffsets.size(); i++) + m_cellDataOffsets[i] = UINT32_MAX; + m_cellData.clear(); + m_cellData.reserve(edgeCount * 2); + for (uint32_t i = 0; i < edgeCount; i++) { + const uint32_t edge = m_edges[i]; + traverse(edgePosition0(edge), edgePosition1(edge)); + XA_DEBUG_ASSERT(!m_traversedCellOffsets.isEmpty()); + for (uint32_t j = 0; j < m_traversedCellOffsets.size(); j++) { + const uint32_t cell = m_traversedCellOffsets[j]; + uint32_t offset = m_cellDataOffsets[cell]; + if (offset == UINT32_MAX) + m_cellDataOffsets[cell] = m_cellData.size(); + else { + for (;;) { + uint32_t &nextOffset = m_cellData[offset + 1]; + if (nextOffset == UINT32_MAX) { + nextOffset = m_cellData.size(); + break; + } + offset = nextOffset; + } + } + m_cellData.push_back(edge); + m_cellData.push_back(UINT32_MAX); + } + } + return true; + } + + void computePotentialEdges(Vector2 p1, Vector2 p2) + { + m_potentialEdges.clear(); + traverse(p1, p2); + for (uint32_t j = 0; j < m_traversedCellOffsets.size(); j++) { + const uint32_t cell = m_traversedCellOffsets[j]; + uint32_t offset = m_cellDataOffsets[cell]; + while (offset != UINT32_MAX) { + const uint32_t edge2 = m_cellData[offset]; + m_potentialEdges.push_back(edge2); + offset = m_cellData[offset + 1]; + } + } + if (m_potentialEdges.isEmpty()) + return; + insertionSort(m_potentialEdges.data(), m_potentialEdges.size()); + } + + // "A Fast Voxel Traversal Algorithm for Ray Tracing" + void traverse(Vector2 p1, Vector2 p2) + { + const Vector2 dir = p2 - p1; + const Vector2 normal = normalizeSafe(dir, Vector2(0.0f), kEpsilon); + const int stepX = dir.x >= 0 ? 1 : -1; + const int stepY = dir.y >= 0 ? 1 : -1; + const uint32_t firstCell[2] = { cellX(p1.x), cellY(p1.y) }; + const uint32_t lastCell[2] = { cellX(p2.x), cellY(p2.y) }; + float distToNextCellX; + if (stepX == 1) + distToNextCellX = (firstCell[0] + 1) * m_cellSize - (p1.x - m_gridOrigin.x); + else + distToNextCellX = (p1.x - m_gridOrigin.x) - firstCell[0] * m_cellSize; + float distToNextCellY; + if (stepY == 1) + distToNextCellY = (firstCell[1] + 1) * m_cellSize - (p1.y - m_gridOrigin.y); + else + distToNextCellY = (p1.y - m_gridOrigin.y) - firstCell[1] * m_cellSize; + float tMaxX, tMaxY, tDeltaX, tDeltaY; + if (normal.x > kEpsilon || normal.x < -kEpsilon) { + tMaxX = (distToNextCellX * stepX) / normal.x; + tDeltaX = (m_cellSize * stepX) / normal.x; + } + else + tMaxX = tDeltaX = FLT_MAX; + if (normal.y > kEpsilon || normal.y < -kEpsilon) { + tMaxY = (distToNextCellY * stepY) / normal.y; + tDeltaY = (m_cellSize * stepY) / normal.y; + } + else + tMaxY = tDeltaY = FLT_MAX; + m_traversedCellOffsets.clear(); + m_traversedCellOffsets.push_back(firstCell[0] + firstCell[1] * m_gridWidth); + uint32_t currentCell[2] = { firstCell[0], firstCell[1] }; + while (!(currentCell[0] == lastCell[0] && currentCell[1] == lastCell[1])) { + if (tMaxX < tMaxY) { + tMaxX += tDeltaX; + currentCell[0] += stepX; + } else { + tMaxY += tDeltaY; + currentCell[1] += stepY; + } + if (currentCell[0] >= m_gridWidth || currentCell[1] >= m_gridHeight) + break; + if (stepX == 0 && currentCell[0] < lastCell[0]) + break; + if (stepX == 1 && currentCell[0] > lastCell[0]) + break; + if (stepY == 0 && currentCell[1] < lastCell[1]) + break; + if (stepY == 1 && currentCell[1] > lastCell[1]) + break; + m_traversedCellOffsets.push_back(currentCell[0] + currentCell[1] * m_gridWidth); + } + } + + bool edgesIntersect(uint32_t edge1, uint32_t edge2, float epsilon) const + { + if (edge1 == edge2) + return false; + const uint32_t ai[2] = { vertexAt(meshEdgeIndex0(edge1)), vertexAt(meshEdgeIndex1(edge1)) }; + const uint32_t bi[2] = { vertexAt(meshEdgeIndex0(edge2)), vertexAt(meshEdgeIndex1(edge2)) }; + // Ignore connected edges, since they can't intersect (only overlap), and may be detected as false positives. + if (ai[0] == bi[0] || ai[0] == bi[1] || ai[1] == bi[0] || ai[1] == bi[1]) + return false; + return linesIntersect(m_positions[ai[0]], m_positions[ai[1]], m_positions[bi[0]], m_positions[bi[1]], epsilon); + } + + uint32_t cellX(float x) const + { + return min((uint32_t)max(0.0f, (x - m_gridOrigin.x) / m_cellSize), m_gridWidth - 1u); + } + + uint32_t cellY(float y) const + { + return min((uint32_t)max(0.0f, (y - m_gridOrigin.y) / m_cellSize), m_gridHeight - 1u); + } + + Vector2 edgePosition0(uint32_t edge) const + { + return m_positions[vertexAt(meshEdgeIndex0(edge))]; + } + + Vector2 edgePosition1(uint32_t edge) const + { + return m_positions[vertexAt(meshEdgeIndex1(edge))]; + } + + uint32_t vertexAt(uint32_t index) const + { + return m_indices ? m_indices[index] : index; + } + + Array<uint32_t> m_edges; + const Vector2 *m_positions; + const uint32_t *m_indices; // Optional + float m_cellSize; + Vector2 m_gridOrigin; + uint32_t m_gridWidth, m_gridHeight; // in cells + Array<uint32_t> m_cellDataOffsets; + Array<uint32_t> m_cellData; + Array<uint32_t> m_potentialEdges; + Array<uint32_t> m_traversedCellOffsets; +}; + struct UvMeshChart { Array<uint32_t> faces; @@ -3834,15 +4418,16 @@ struct Triangle // make sure every triangle is front facing. flipBackface(); // Compute deltas. - computeUnitInwardNormals(); + if (isValid()) + computeUnitInwardNormals(); } bool isValid() { const Vector2 e0 = v3 - v1; const Vector2 e1 = v2 - v1; - const float denom = 1.0f / (e0.y * e1.x - e1.y * e0.x); - return isFinite(denom); + const float area = e0.y * e1.x - e1.y * e0.x; + return area != 0.0f; } // extents has to be multiple of BK_SIZE!! @@ -3926,6 +4511,7 @@ struct Triangle return true; } +private: void flipBackface() { // check if triangle is backfacing, if so, swap two vertices @@ -3941,13 +4527,13 @@ struct Triangle { n1 = v1 - v2; n1 = Vector2(-n1.y, n1.x); - n1 = n1 * (1.0f / sqrtf(n1.x * n1.x + n1.y * n1.y)); + n1 = n1 * (1.0f / sqrtf(dot(n1, n1))); n2 = v2 - v3; n2 = Vector2(-n2.y, n2.x); - n2 = n2 * (1.0f / sqrtf(n2.x * n2.x + n2.y * n2.y)); + n2 = n2 * (1.0f / sqrtf(dot(n2, n2))); n3 = v3 - v1; n3 = Vector2(-n3.y, n3.x); - n3 = n3 * (1.0f / sqrtf(n3.x * n3.x + n3.y * n3.y)); + n3 = n3 * (1.0f / sqrtf(dot(n3, n3))); } // Vertices. @@ -3990,28 +4576,33 @@ public: float v; // value }; - Matrix(uint32_t d) : m_width(d) + Matrix(uint32_t d) : m_width(d), m_array(MemTag::Matrix) { m_array.resize(d); - for (uint32_t i = 0; i < m_array.size(); i++) - new (&m_array[i]) Array<Coefficient>(); + m_array.runCtors(); +#if XA_DEBUG_HEAP + for (uint32_t i = 0; i < d; i++) + m_array[i].setMemTag(MemTag::Matrix); +#endif } - Matrix(uint32_t w, uint32_t h) : m_width(w) + Matrix(uint32_t w, uint32_t h) : m_width(w), m_array(MemTag::Matrix) { m_array.resize(h); - for (uint32_t i = 0; i < m_array.size(); i++) - new (&m_array[i]) Array<Coefficient>(); + m_array.runCtors(); +#if XA_DEBUG_HEAP + for (uint32_t i = 0; i < h; i++) + m_array[i].setMemTag(MemTag::Matrix); +#endif } ~Matrix() { - for (uint32_t i = 0; i < m_array.size(); i++) - m_array[i].~Array(); + m_array.runDtors(); } Matrix(const Matrix &m) = delete; - const Matrix &operator=(const Matrix &m) = delete; + Matrix &operator=(const Matrix &m) = delete; uint32_t width() const { return m_width; } uint32_t height() const { return m_array.size(); } bool isSquare() const { return width() == height(); } @@ -4211,164 +4802,164 @@ static void mult(const Matrix &A, const Matrix &B, Matrix &C) namespace segment { -// Dummy implementation of a priority queue using sort at insertion. // - Insertion is o(n) // - Smallest element goes at the end, so that popping it is o(1). -// - Resorting is n*log(n) -// @@ Number of elements in the queue is usually small, and we'd have to rebalance often. I'm not sure it's worth implementing a heap. -// @@ Searcing at removal would remove the need for sorting when priorities change. -struct PriorityQueue +struct CostQueue { - PriorityQueue(uint32_t size = UINT32_MAX) : maxSize(size) {} + CostQueue(uint32_t size = UINT32_MAX) : m_maxSize(size), m_pairs(MemTag::SegmentAtlasChartCandidates) {} - void push(float priority, uint32_t face) + float peekCost() const { - uint32_t i = 0; - const uint32_t count = pairs.size(); - for (; i < count; i++) { - if (pairs[i].priority > priority) break; - } - Pair p = { priority, face }; - pairs.insertAt(i, p); - if (pairs.size() > maxSize) - pairs.removeAt(0); + return m_pairs.back().cost; } - // push face out of order, to be sorted later. - void push(uint32_t face) + uint32_t peekFace() const { - Pair p = { 0.0f, face }; - pairs.push_back(p); + return m_pairs.back().face; } - uint32_t pop() + void push(float cost, uint32_t face) { - XA_DEBUG_ASSERT(!pairs.isEmpty()); - uint32_t f = pairs.back().face; - pairs.pop_back(); - return f; + const Pair p = { cost, face }; + if (m_pairs.isEmpty() || cost < peekCost()) + m_pairs.push_back(p); + else { + uint32_t i = 0; + const uint32_t count = m_pairs.size(); + for (; i < count; i++) { + if (m_pairs[i].cost < cost) + break; + } + m_pairs.insertAt(i, p); + if (m_pairs.size() > m_maxSize) + m_pairs.removeAt(0); + } } - void sort() + uint32_t pop() { - //sort(pairs); // @@ My intro sort appears to be much slower than it should! - std::sort(pairs.begin(), pairs.end()); + XA_DEBUG_ASSERT(!m_pairs.isEmpty()); + uint32_t f = m_pairs.back().face; + m_pairs.pop_back(); + return f; } XA_INLINE void clear() { - pairs.clear(); + m_pairs.clear(); } XA_INLINE uint32_t count() const { - return pairs.size(); + return m_pairs.size(); } - float firstPriority() const - { - return pairs.back().priority; - } - - const uint32_t maxSize; +private: + const uint32_t m_maxSize; struct Pair { - bool operator<(const Pair &p) const - { - return priority > p.priority; // !! Sort in inverse priority order! - } - - float priority; + float cost; uint32_t face; }; - Array<Pair> pairs; + Array<Pair> m_pairs; }; struct Chart { + Chart() : faces(MemTag::SegmentAtlasChartFaces) {} + int id = -1; - Vector3 averageNormal = Vector3(0.0f); + Basis basis; // Best fit normal. float area = 0.0f; float boundaryLength = 0.0f; - Vector3 normalSum = Vector3(0.0f); Vector3 centroidSum = Vector3(0.0f); // Sum of chart face centroids. Vector3 centroid = Vector3(0.0f); // Average centroid of chart faces. Array<uint32_t> seeds; Array<uint32_t> faces; - PriorityQueue candidates; - Basis basis; // Of first face. + Array<uint32_t> failedPlanarRegions; + CostQueue candidates; }; struct Atlas { - // @@ Hardcoded to 10? - Atlas(const Mesh *mesh, Array<uint32_t> *meshFaces, const ChartOptions &options) : m_mesh(mesh), m_meshFaces(meshFaces), m_facesLeft(mesh->faceCount()), m_bestTriangles(10), m_options(options) + Atlas() : m_edgeLengths(MemTag::SegmentAtlasMeshData), m_faceAreas(MemTag::SegmentAtlasMeshData), m_faceNormals(MemTag::SegmentAtlasMeshData), m_texcoords(MemTag::SegmentAtlasMeshData), m_bestTriangles(10), m_nextPlanarRegionFace(MemTag::SegmentAtlasPlanarRegions), m_facePlanarRegionId(MemTag::SegmentAtlasPlanarRegions) {} + + ~Atlas() + { + const uint32_t chartCount = m_charts.size(); + for (uint32_t i = 0; i < chartCount; i++) { + m_charts[i]->~Chart(); + XA_FREE(m_charts[i]); + } + } + + uint32_t facesLeft() const { return m_facesLeft; } + uint32_t chartCount() const { return m_charts.size(); } + const Array<uint32_t> &chartFaces(uint32_t i) const { return m_charts[i]->faces; } + const Basis &chartBasis(uint32_t chartIndex) const { return m_charts[chartIndex]->basis; } + + void reset(uint32_t meshId, uint32_t chartGroupId, const Mesh *mesh, const ChartOptions &options) { + XA_UNUSED(meshId); + XA_UNUSED(chartGroupId); XA_PROFILE_START(buildAtlasInit) + m_mesh = mesh; const uint32_t faceCount = m_mesh->faceCount(); - if (meshFaces) { - m_ignoreFaces.resize(faceCount); - m_ignoreFaces.setAll(true); - for (uint32_t f = 0; f < meshFaces->size(); f++) - m_ignoreFaces[(*meshFaces)[f]] = false; - m_facesLeft = meshFaces->size(); - } else { - m_ignoreFaces.resize(faceCount); - m_ignoreFaces.setAll(false); + m_facesLeft = faceCount; + m_options = options; + m_rand.reset(); + const uint32_t chartCount = m_charts.size(); + for (uint32_t i = 0; i < chartCount; i++) { + m_charts[i]->~Chart(); + XA_FREE(m_charts[i]); } - m_faceChartArray.resize(faceCount); - m_faceChartArray.setAll(-1); - m_faceCandidateCharts.resize(faceCount); - m_faceCandidateCosts.resize(faceCount); + m_charts.clear(); + m_faceCharts.resize(faceCount); + m_faceCharts.setAll(-1); m_texcoords.resize(faceCount * 3); - // @@ Floyd for the whole mesh is too slow. We could compute floyd progressively per patch as the patch grows. We need a better solution to compute most central faces. - //computeShortestPaths(); // Precompute edge lengths and face areas. const uint32_t edgeCount = m_mesh->edgeCount(); m_edgeLengths.resize(edgeCount); - m_edgeLengths.zeroOutMemory(); m_faceAreas.resize(faceCount); - m_faceAreas.zeroOutMemory(); m_faceNormals.resize(faceCount); - m_faceTangents.resize(faceCount); - m_faceBitangents.resize(faceCount); for (uint32_t f = 0; f < faceCount; f++) { - if (m_ignoreFaces[f]) - continue; - for (Mesh::FaceEdgeIterator it(m_mesh, f); !it.isDone(); it.advance()) { - m_edgeLengths[it.edge()] = internal::length(it.position1() - it.position0()); - XA_DEBUG_ASSERT(m_edgeLengths[it.edge()] > 0.0f); + for (uint32_t i = 0; i < 3; i++) { + const uint32_t edge = f * 3 + i; + const Vector3 &p0 = mesh->position(m_mesh->vertexAt(meshEdgeIndex0(edge))); + const Vector3 &p1 = mesh->position(m_mesh->vertexAt(meshEdgeIndex1(edge))); + m_edgeLengths[edge] = length(p1 - p0); + XA_DEBUG_ASSERT(m_edgeLengths[edge] > 0.0f); } - m_faceAreas[f] = mesh->faceArea(f); + m_faceAreas[f] = m_mesh->computeFaceArea(f); XA_DEBUG_ASSERT(m_faceAreas[f] > 0.0f); - m_faceNormals[f] = m_mesh->triangleNormal(f); - m_faceTangents[f] = Basis::computeTangent(m_faceNormals[f]); - m_faceBitangents[f] = Basis::computeBitangent(m_faceNormals[f], m_faceTangents[f]); + m_faceNormals[f] = m_mesh->computeFaceNormal(f); } -#if XA_GROW_CHARTS_COPLANAR // Precompute regions of coplanar incident faces. m_nextPlanarRegionFace.resize(faceCount); - for (uint32_t f = 0; f < faceCount; f++) + m_facePlanarRegionId.resize(faceCount); + for (uint32_t f = 0; f < faceCount; f++) { m_nextPlanarRegionFace[f] = f; + m_facePlanarRegionId[f] = UINT32_MAX; + } Array<uint32_t> faceStack; faceStack.reserve(min(faceCount, 16u)); + uint32_t planarRegionCount = 0; for (uint32_t f = 0; f < faceCount; f++) { if (m_nextPlanarRegionFace[f] != f) continue; // Already assigned. - if (m_ignoreFaces[f]) - continue; faceStack.clear(); faceStack.push_back(f); for (;;) { if (faceStack.isEmpty()) break; const uint32_t face = faceStack.back(); + m_facePlanarRegionId[face] = planarRegionCount; faceStack.pop_back(); for (Mesh::FaceEdgeIterator it(m_mesh, face); !it.isDone(); it.advance()) { const uint32_t oface = it.oppositeFace(); - if (it.isBoundary() || m_ignoreFaces[oface]) + if (it.isBoundary()) continue; if (m_nextPlanarRegionFace[oface] != oface) continue; // Already assigned. @@ -4377,29 +4968,33 @@ struct Atlas const uint32_t next = m_nextPlanarRegionFace[face]; m_nextPlanarRegionFace[face] = oface; m_nextPlanarRegionFace[oface] = next; + m_facePlanarRegionId[oface] = planarRegionCount; faceStack.push_back(oface); } } + planarRegionCount++; + } +#if XA_DEBUG_EXPORT_OBJ_PLANAR_REGIONS + char filename[256]; + XA_SPRINTF(filename, sizeof(filename), "debug_mesh_%03u_chartgroup_%03u_planar_regions.obj", meshId, chartGroupId); + FILE *file; + XA_FOPEN(file, filename, "w"); + if (file) { + m_mesh->writeObjVertices(file); + fprintf(file, "s off\n"); + for (uint32_t i = 0; i < planarRegionCount; i++) { + fprintf(file, "o region%u\n", i); + for (uint32_t j = 0; j < faceCount; j++) { + if (m_facePlanarRegionId[j] == i) + m_mesh->writeObjFace(file, j); + } + } + fclose(file); } #endif XA_PROFILE_END(buildAtlasInit) } - ~Atlas() - { - const uint32_t chartCount = m_chartArray.size(); - for (uint32_t i = 0; i < chartCount; i++) { - m_chartArray[i]->~Chart(); - XA_FREE(m_chartArray[i]); - } - } - - uint32_t facesLeft() const { return m_facesLeft; } - uint32_t chartCount() const { return m_chartArray.size(); } - const Array<uint32_t> &chartFaces(uint32_t i) const { return m_chartArray[i]->faces; } - const Basis &chartBasis(uint32_t chartIndex) const { return m_chartArray[chartIndex]->basis; } - const Vector2 *faceTexcoords(uint32_t face) const { return &m_texcoords[face * 3]; } - void placeSeeds(float threshold) { XA_PROFILE_START(buildAtlasPlaceSeeds) @@ -4415,28 +5010,51 @@ struct Atlas } // Returns true if any of the charts can grow more. - bool growCharts(float threshold) + void growCharts(float threshold) { XA_PROFILE_START(buildAtlasGrowCharts) - // Build global candidate list. - m_faceCandidateCharts.zeroOutMemory(); - for (uint32_t i = 0; i < m_chartArray.size(); i++) - addChartCandidateToGlobalCandidates(m_chartArray[i]); - // Add one candidate face per chart (threshold permitting). - const uint32_t faceCount = m_mesh->faceCount(); - bool canAddAny = false; - for (uint32_t f = 0; f < faceCount; f++) { - Chart *chart = m_faceCandidateCharts[f]; - if (!chart || m_faceCandidateCosts[f] > threshold) - continue; - createFaceTexcoords(chart, f); - if (!canAddFaceToChart(chart, f)) - continue; - addFaceToChart(chart, f); - canAddAny = true; + for (;;) { + if (m_facesLeft == 0) + break; + // Get the single best candidate out of the chart best candidates. + uint32_t bestFace = UINT32_MAX, bestChart = UINT32_MAX; + float lowestCost = FLT_MAX; + for (uint32_t i = 0; i < m_charts.size(); i++) { + Chart *chart = m_charts[i]; + // Get the best candidate from the chart. + // Cleanup any best candidates that have been claimed by another chart. + uint32_t face = UINT32_MAX; + float cost = FLT_MAX; + for (;;) { + if (chart->candidates.count() == 0) + break; + cost = chart->candidates.peekCost(); + face = chart->candidates.peekFace(); + if (m_faceCharts[face] == -1) + break; + else { + // Face belongs to another chart. Pop from queue so the next best candidate can be retrieved. + chart->candidates.pop(); + face = UINT32_MAX; + } + } + if (face == UINT32_MAX) + continue; // No candidates for this chart. + // See if best candidate overall. + if (cost < lowestCost) { + lowestCost = cost; + bestFace = face; + bestChart = i; + } + } + if (bestFace == UINT32_MAX || lowestCost > threshold) + break; + Chart *chart = m_charts[bestChart]; + chart->candidates.pop(); // Pop the selected candidate from the queue. + if (!addFaceToChart(chart, bestFace)) + chart->failedPlanarRegions.push_back(m_facePlanarRegionId[bestFace]); } XA_PROFILE_END(buildAtlasGrowCharts) - return canAddAny && m_facesLeft != 0; // Can continue growing. } void resetCharts() @@ -4444,53 +5062,34 @@ struct Atlas XA_PROFILE_START(buildAtlasResetCharts) const uint32_t faceCount = m_mesh->faceCount(); for (uint32_t i = 0; i < faceCount; i++) - m_faceChartArray[i] = -1; - m_facesLeft = m_meshFaces ? m_meshFaces->size() : faceCount; - const uint32_t chartCount = m_chartArray.size(); + m_faceCharts[i] = -1; + m_facesLeft = faceCount; + const uint32_t chartCount = m_charts.size(); for (uint32_t i = 0; i < chartCount; i++) { - Chart *chart = m_chartArray[i]; + Chart *chart = m_charts[i]; const uint32_t seed = chart->seeds.back(); chart->area = 0.0f; chart->boundaryLength = 0.0f; - chart->normalSum = Vector3(0.0f); + chart->basis.normal = Vector3(0.0f); + chart->basis.tangent = Vector3(0.0f); + chart->basis.bitangent = Vector3(0.0f); chart->centroidSum = Vector3(0.0f); chart->centroid = Vector3(0.0f); chart->faces.clear(); chart->candidates.clear(); + chart->failedPlanarRegions.clear(); addFaceToChart(chart, seed); } -#if XA_GROW_CHARTS_COPLANAR - for (uint32_t i = 0; i < chartCount; i++) { - Chart *chart = m_chartArray[i]; - growChartCoplanar(chart); - } -#endif XA_PROFILE_END(buildAtlasResetCharts) } - void updateChartCandidates(Chart *chart, uint32_t f) - { - // Traverse neighboring faces, add the ones that do not belong to any chart yet. - for (Mesh::FaceEdgeIterator it(m_mesh, f); !it.isDone(); it.advance()) { - if (!it.isBoundary() && !m_ignoreFaces[it.oppositeFace()] && m_faceChartArray[it.oppositeFace()] == -1) - chart->candidates.push(it.oppositeFace()); - } - // Re-evaluate all candidate priorities. - uint32_t candidateCount = chart->candidates.count(); - for (uint32_t i = 0; i < candidateCount; i++) { - PriorityQueue::Pair &pair = chart->candidates.pairs[i]; - pair.priority = evaluateCost(chart, pair.face); - } - chart->candidates.sort(); - } - bool relocateSeeds() { XA_PROFILE_START(buildAtlasRelocateSeeds) bool anySeedChanged = false; - const uint32_t chartCount = m_chartArray.size(); + const uint32_t chartCount = m_charts.size(); for (uint32_t i = 0; i < chartCount; i++) { - if (relocateSeed(m_chartArray[i])) { + if (relocateSeed(m_charts[i])) { anySeedChanged = true; } } @@ -4510,45 +5109,38 @@ struct Atlas void mergeCharts() { XA_PROFILE_START(buildAtlasMergeCharts) - Array<float> sharedBoundaryLengths; - Array<float> sharedBoundaryLengthsNoSeams; - Array<uint32_t> sharedBoundaryEdgeCountNoSeams; - Array<Vector2> tempTexcoords; - const uint32_t chartCount = m_chartArray.size(); + const uint32_t chartCount = m_charts.size(); // Merge charts progressively until there's none left to merge. for (;;) { bool merged = false; for (int c = chartCount - 1; c >= 0; c--) { - Chart *chart = m_chartArray[c]; + Chart *chart = m_charts[c]; if (chart == nullptr) continue; float externalBoundaryLength = 0.0f; - sharedBoundaryLengths.clear(); - sharedBoundaryLengths.resize(chartCount); - sharedBoundaryLengths.zeroOutMemory(); - sharedBoundaryLengthsNoSeams.clear(); - sharedBoundaryLengthsNoSeams.resize(chartCount); - sharedBoundaryLengthsNoSeams.zeroOutMemory(); - sharedBoundaryEdgeCountNoSeams.clear(); - sharedBoundaryEdgeCountNoSeams.resize(chartCount); - sharedBoundaryEdgeCountNoSeams.zeroOutMemory(); + m_sharedBoundaryLengths.resize(chartCount); + m_sharedBoundaryLengths.zeroOutMemory(); + m_sharedBoundaryLengthsNoSeams.resize(chartCount); + m_sharedBoundaryLengthsNoSeams.zeroOutMemory(); + m_sharedBoundaryEdgeCountNoSeams.resize(chartCount); + m_sharedBoundaryEdgeCountNoSeams.zeroOutMemory(); const uint32_t faceCount = chart->faces.size(); for (uint32_t i = 0; i < faceCount; i++) { const uint32_t f = chart->faces[i]; for (Mesh::FaceEdgeIterator it(m_mesh, f); !it.isDone(); it.advance()) { const float l = m_edgeLengths[it.edge()]; - if (it.isBoundary() || m_ignoreFaces[it.oppositeFace()]) { + if (it.isBoundary()) { externalBoundaryLength += l; } else { - const int neighborChart = m_faceChartArray[it.oppositeFace()]; - if (m_chartArray[neighborChart] != chart) { + const int neighborChart = m_faceCharts[it.oppositeFace()]; + if (m_charts[neighborChart] != chart) { if ((it.isSeam() && (isNormalSeam(it.edge()) || it.isTextureSeam()))) { externalBoundaryLength += l; } else { - sharedBoundaryLengths[neighborChart] += l; + m_sharedBoundaryLengths[neighborChart] += l; } - sharedBoundaryLengthsNoSeams[neighborChart] += l; - sharedBoundaryEdgeCountNoSeams[neighborChart]++; + m_sharedBoundaryLengthsNoSeams[neighborChart] += l; + m_sharedBoundaryEdgeCountNoSeams[neighborChart]++; } } } @@ -4556,50 +5148,38 @@ struct Atlas for (int cc = chartCount - 1; cc >= 0; cc--) { if (cc == c) continue; - Chart *chart2 = m_chartArray[cc]; + Chart *chart2 = m_charts[cc]; if (chart2 == nullptr) continue; + // Must share a boundary. + if (m_sharedBoundaryLengths[cc] <= 0.0f) + continue; // Compare proxies. - if (dot(chart2->averageNormal, chart->averageNormal) < XA_MERGE_CHARTS_MIN_NORMAL_DEVIATION) + if (dot(chart2->basis.normal, chart->basis.normal) < XA_MERGE_CHARTS_MIN_NORMAL_DEVIATION) continue; // Obey max chart area and boundary length. if (m_options.maxChartArea > 0.0f && chart->area + chart2->area > m_options.maxChartArea) continue; - if (m_options.maxBoundaryLength > 0.0f && chart->boundaryLength + chart2->boundaryLength - sharedBoundaryLengthsNoSeams[cc] > m_options.maxBoundaryLength) + if (m_options.maxBoundaryLength > 0.0f && chart->boundaryLength + chart2->boundaryLength - m_sharedBoundaryLengthsNoSeams[cc] > m_options.maxBoundaryLength) continue; // Merge if chart2 has a single face. // chart1 must have more than 1 face. // chart2 area must be <= 10% of chart1 area. - if (sharedBoundaryLengthsNoSeams[cc] > 0.0f && chart->faces.size() > 1 && chart2->faces.size() == 1 && chart2->area <= chart->area * 0.1f) + if (m_sharedBoundaryLengthsNoSeams[cc] > 0.0f && chart->faces.size() > 1 && chart2->faces.size() == 1 && chart2->area <= chart->area * 0.1f) goto merge; // Merge if chart2 has two faces (probably a quad), and chart1 bounds at least 2 of its edges. - if (chart2->faces.size() == 2 && sharedBoundaryEdgeCountNoSeams[cc] >= 2) + if (chart2->faces.size() == 2 && m_sharedBoundaryEdgeCountNoSeams[cc] >= 2) goto merge; // Merge if chart2 is wholely inside chart1, ignoring seams. - if (sharedBoundaryLengthsNoSeams[cc] > 0.0f && equal(sharedBoundaryLengthsNoSeams[cc], chart2->boundaryLength, kEpsilon)) + if (m_sharedBoundaryLengthsNoSeams[cc] > 0.0f && equal(m_sharedBoundaryLengthsNoSeams[cc], chart2->boundaryLength, kEpsilon)) goto merge; - if (sharedBoundaryLengths[cc] > 0.2f * max(0.0f, chart->boundaryLength - externalBoundaryLength) || - sharedBoundaryLengths[cc] > 0.75f * chart2->boundaryLength) + if (m_sharedBoundaryLengths[cc] > 0.2f * max(0.0f, chart->boundaryLength - externalBoundaryLength) || + m_sharedBoundaryLengths[cc] > 0.75f * chart2->boundaryLength) goto merge; continue; merge: - // Create texcoords for chart 2 using chart 1 basis. Backup chart 2 texcoords for restoration if charts cannot be merged. - tempTexcoords.resize(chart2->faces.size() * 3); - for (uint32_t i = 0; i < chart2->faces.size(); i++) { - const uint32_t face = chart2->faces[i]; - for (uint32_t j = 0; j < 3; j++) - tempTexcoords[i * 3 + j] = m_texcoords[face * 3 + j]; - createFaceTexcoords(chart, face); - } - if (!canMergeCharts(chart, chart2)) { - // Restore chart 2 texcoords. - for (uint32_t i = 0; i < chart2->faces.size(); i++) { - for (uint32_t j = 0; j < 3; j++) - m_texcoords[chart2->faces[i] * 3 + j] = tempTexcoords[i * 3 + j]; - } + if (!mergeChart(chart, chart2, m_sharedBoundaryLengthsNoSeams[cc])) continue; - } - mergeChart(chart, chart2, sharedBoundaryLengthsNoSeams[cc]); merged = true; break; } @@ -4610,20 +5190,20 @@ struct Atlas break; } // Remove deleted charts. - for (int c = 0; c < int32_t(m_chartArray.size()); /*do not increment if removed*/) { - if (m_chartArray[c] == nullptr) { - m_chartArray.removeAt(c); - // Update m_faceChartArray. - const uint32_t faceCount = m_faceChartArray.size(); + for (int c = 0; c < int32_t(m_charts.size()); /*do not increment if removed*/) { + if (m_charts[c] == nullptr) { + m_charts.removeAt(c); + // Update m_faceCharts. + const uint32_t faceCount = m_faceCharts.size(); for (uint32_t i = 0; i < faceCount; i++) { - XA_DEBUG_ASSERT(m_faceChartArray[i] != c); - XA_DEBUG_ASSERT(m_faceChartArray[i] <= int32_t(m_chartArray.size())); - if (m_faceChartArray[i] > c) { - m_faceChartArray[i]--; + XA_DEBUG_ASSERT(m_faceCharts[i] != c); + XA_DEBUG_ASSERT(m_faceCharts[i] <= int32_t(m_charts.size())); + if (m_faceCharts[i] > c) { + m_faceCharts[i]--; } } } else { - m_chartArray[c]->id = c; + m_charts[c]->id = c; c++; } } @@ -4635,264 +5215,204 @@ private: void createRandomChart(float threshold) { Chart *chart = XA_NEW(MemTag::Default, Chart); - chart->id = (int)m_chartArray.size(); - m_chartArray.push_back(chart); + chart->id = (int)m_charts.size(); + m_charts.push_back(chart); // Pick random face that is not used by any chart yet. uint32_t face = m_rand.getRange(m_mesh->faceCount() - 1); - while (m_ignoreFaces[face] || m_faceChartArray[face] != -1) { + while (m_faceCharts[face] != -1) { if (++face >= m_mesh->faceCount()) face = 0; } chart->seeds.push_back(face); addFaceToChart(chart, face); -#if XA_GROW_CHARTS_COPLANAR - growChartCoplanar(chart); -#endif // Grow the chart as much as possible within the given threshold. - for (uint32_t i = 0; i < m_facesLeft; ) { - if (chart->candidates.count() == 0 || chart->candidates.firstPriority() > threshold) + for (;;) { + if (chart->candidates.count() == 0 || chart->candidates.peekCost() > threshold) break; const uint32_t f = chart->candidates.pop(); - if (m_faceChartArray[f] != -1) + if (m_faceCharts[f] != -1) continue; - createFaceTexcoords(chart, f); - if (!canAddFaceToChart(chart, f)) + if (!addFaceToChart(chart, f)) { + chart->failedPlanarRegions.push_back(m_facePlanarRegionId[f]); continue; - addFaceToChart(chart, f); - i++; - } - } - - void addChartCandidateToGlobalCandidates(Chart *chart) - { - if (chart->candidates.count() == 0) - return; - const float cost = chart->candidates.firstPriority(); - const uint32_t face = chart->candidates.pop(); - if (m_faceChartArray[face] != -1) { - addChartCandidateToGlobalCandidates(chart); - } else if (!m_faceCandidateCharts[face]) { - // No candidate assigned to this face yet. - m_faceCandidateCharts[face] = chart; - m_faceCandidateCosts[face] = cost; - } else { - if (cost < m_faceCandidateCosts[face]) { - // This is a better candidate for this face (lower cost). The other chart can choose another candidate. - Chart *otherChart = m_faceCandidateCharts[face]; - m_faceCandidateCharts[face] = chart; - m_faceCandidateCosts[face] = cost; - addChartCandidateToGlobalCandidates(otherChart); - } else { - // Existing candidate is better. This chart can choose another candidate. - addChartCandidateToGlobalCandidates(chart); } } } - void createFaceTexcoords(Chart *chart, uint32_t face) - { - for (uint32_t i = 0; i < 3; i++) { - const Vector3 &pos = m_mesh->position(m_mesh->vertexAt(face * 3 + i)); - m_texcoords[face * 3 + i] = Vector2(dot(chart->basis.tangent, pos), dot(chart->basis.bitangent, pos)); - } - } - bool isChartBoundaryEdge(const Chart *chart, uint32_t edge) const { const uint32_t oppositeEdge = m_mesh->oppositeEdge(edge); const uint32_t oppositeFace = meshEdgeFace(oppositeEdge); - return oppositeEdge == UINT32_MAX || m_ignoreFaces[oppositeFace] || m_faceChartArray[oppositeFace] != chart->id; + return oppositeEdge == UINT32_MAX || m_faceCharts[oppositeFace] != chart->id; } - bool edgeArraysIntersect(const uint32_t *edges1, uint32_t edges1Count, const uint32_t *edges2, uint32_t edges2Count) + bool computeChartBasis(Chart *chart, Basis *basis) { - for (uint32_t i = 0; i < edges1Count; i++) { - const uint32_t edge1 = edges1[i]; - for (uint32_t j = 0; j < edges2Count; j++) { - const uint32_t edge2 = edges2[j]; - const Vector2 &a1 = m_texcoords[meshEdgeIndex0(edge1)]; - const Vector2 &a2 = m_texcoords[meshEdgeIndex1(edge1)]; - const Vector2 &b1 = m_texcoords[meshEdgeIndex0(edge2)]; - const Vector2 &b2 = m_texcoords[meshEdgeIndex1(edge2)]; - if (linesIntersect(a1, a2, b1, b2, m_mesh->epsilon())) - return true; - } + const uint32_t faceCount = chart->faces.size(); + m_tempPoints.resize(chart->faces.size() * 3); + for (uint32_t i = 0; i < faceCount; i++) { + const uint32_t f = chart->faces[i]; + for (uint32_t j = 0; j < 3; j++) + m_tempPoints[i * 3 + j] = m_mesh->position(m_mesh->vertexAt(f * 3 + j)); } - return false; + return Fit::computeBasis(m_tempPoints.data(), m_tempPoints.size(), basis); } bool isFaceFlipped(uint32_t face) const { - const float t1 = m_texcoords[face * 3 + 0].x; - const float s1 = m_texcoords[face * 3 + 0].y; - const float t2 = m_texcoords[face * 3 + 1].x; - const float s2 = m_texcoords[face * 3 + 1].y; - const float t3 = m_texcoords[face * 3 + 2].x; - const float s3 = m_texcoords[face * 3 + 2].y; - const float parametricArea = ((s2 - s1) * (t3 - t1) - (s3 - s1) * (t2 - t1)) / 2; + const Vector2 &v1 = m_texcoords[face * 3 + 0]; + const Vector2 &v2 = m_texcoords[face * 3 + 1]; + const Vector2 &v3 = m_texcoords[face * 3 + 2]; + const float parametricArea = ((v2.x - v1.x) * (v3.y - v1.y) - (v3.x - v1.x) * (v2.y - v1.y)) * 0.5f; return parametricArea < 0.0f; } - void computeChartBoundaryEdges(const Chart *chart, Array<uint32_t> *dest) const + void parameterizeChart(const Chart *chart) { - dest->clear(); - for (uint32_t f = 0; f < chart->faces.size(); f++) { - const uint32_t face = chart->faces[f]; - for (uint32_t i = 0; i < 3; i++) { - const uint32_t edge = face * 3 + i; - if (isChartBoundaryEdge(chart, edge)) - dest->push_back(edge); + const uint32_t faceCount = chart->faces.size(); + for (uint32_t i = 0; i < faceCount; i++) { + const uint32_t face = chart->faces[i]; + for (uint32_t j = 0; j < 3; j++) { + const uint32_t offset = face * 3 + j; + const Vector3 &pos = m_mesh->position(m_mesh->vertexAt(offset)); + m_texcoords[offset] = Vector2(dot(chart->basis.tangent, pos), dot(chart->basis.bitangent, pos)); } } } - bool canAddFaceToChart(Chart *chart, uint32_t face) + // m_faceCharts for the chart faces must be set to the chart ID. Needed to compute boundary edges. + bool isChartParameterizationValid(const Chart *chart) { - // Check for flipped triangles. - if (isFaceFlipped(face)) + const uint32_t faceCount = chart->faces.size(); + // Check for flipped faces in the parameterization. OK if all are flipped. + uint32_t flippedFaceCount = 0; + for (uint32_t i = 0; i < faceCount; i++) { + if (isFaceFlipped(chart->faces[i])) + flippedFaceCount++; + } + if (flippedFaceCount != 0 && flippedFaceCount != faceCount) return false; - // Find face edges that don't border this chart. - m_tempEdges1.clear(); - for (uint32_t i = 0; i < 3; i++) { - const uint32_t edge = face * 3 + i; - if (isChartBoundaryEdge(chart, edge)) - m_tempEdges1.push_back(edge); - } - if (m_tempEdges1.isEmpty()) - return true; // This can happen if the face is surrounded by the chart. - // Get chart boundary edges, except those that border the face. - m_tempEdges2.clear(); - for (uint32_t i = 0; i < chart->faces.size(); i++) { - const uint32_t chartFace = chart->faces[i]; + // Check for boundary intersection in the parameterization. + m_boundaryGrid.reset(m_texcoords.data()); + for (uint32_t i = 0; i < faceCount; i++) { + const uint32_t f = chart->faces[i]; for (uint32_t j = 0; j < 3; j++) { - const uint32_t chartEdge = chartFace * 3 + j; - if (!isChartBoundaryEdge(chart, chartEdge)) - continue; - // Don't check chart boundary edges that border the face. - const uint32_t oppositeChartEdge = m_mesh->oppositeEdge(chartEdge); - if (meshEdgeFace(oppositeChartEdge) == face) - continue; - m_tempEdges2.push_back(chartEdge); - } - } - const bool intersect = edgeArraysIntersect(m_tempEdges1.data(), m_tempEdges1.size(), m_tempEdges2.data(), m_tempEdges2.size()); -#if 0 - if (intersect) { - static std::atomic<uint32_t> count = 0; - char filename[256]; - XA_SPRINTF(filename, sizeof(filename), "intersect%04u.obj", count.fetch_add(1)); - FILE *file; - XA_FOPEN(file, filename, "w"); - if (file) { - for (uint32_t i = 0; i < m_texcoords.size(); i++) - fprintf(file, "v %g %g 0.0\n", m_texcoords[i].x, m_texcoords[i].y); - fprintf(file, "s off\n"); - fprintf(file, "o face\n"); - { - fprintf(file, "f "); - for (uint32_t j = 0; j < 3; j++) { - const uint32_t index = face * 3 + j + 1; // 1-indexed - fprintf(file, "%d/%d/%d%c", index, index, index, j == 2 ? '\n' : ' '); - } - } - fprintf(file, "s off\n"); - fprintf(file, "o chart\n"); - for (uint32_t i = 0; i < chart->faces.size(); i++) { - const uint32_t chartFace = chart->faces[i]; - fprintf(file, "f "); - for (uint32_t j = 0; j < 3; j++) { - const uint32_t index = chartFace * 3 + j + 1; // 1-indexed - fprintf(file, "%d/%d/%d%c", index, index, index, j == 2 ? '\n' : ' '); - } - } - fclose(file); + const uint32_t edge = f * 3 + j; + if (isChartBoundaryEdge(chart, edge)) + m_boundaryGrid.append(edge); } } -#endif - return !intersect; + if (m_boundaryGrid.intersectSelf(m_mesh->epsilon())) + return false; + return true; } - bool canMergeCharts(Chart *chart1, Chart *chart2) + bool addFaceToChart(Chart *chart, uint32_t face) { - for (uint32_t i = 0; i < chart2->faces.size(); i++) { - if (isFaceFlipped(chart2->faces[i])) - return false; + XA_DEBUG_ASSERT(m_faceCharts[face] == -1); + const uint32_t oldFaceCount = chart->faces.size(); + const bool firstFace = oldFaceCount == 0; + // Append the face and any coplanar connected faces to the chart faces array. + chart->faces.push_back(face); + uint32_t coplanarFace = m_nextPlanarRegionFace[face]; + while (coplanarFace != face) { + XA_DEBUG_ASSERT(m_faceCharts[coplanarFace] == -1); + chart->faces.push_back(coplanarFace); + coplanarFace = m_nextPlanarRegionFace[coplanarFace]; } - computeChartBoundaryEdges(chart1, &m_tempEdges1); - computeChartBoundaryEdges(chart2, &m_tempEdges2); - return !edgeArraysIntersect(m_tempEdges1.data(), m_tempEdges1.size(), m_tempEdges2.data(), m_tempEdges2.size()); - } - - void addFaceToChart(Chart *chart, uint32_t f) - { - const bool firstFace = chart->faces.isEmpty(); - // Use the first face normal as the chart basis. + const uint32_t faceCount = chart->faces.size(); + // Compute basis. + Basis basis; if (firstFace) { - chart->basis.normal = m_faceNormals[f]; - chart->basis.tangent = m_faceTangents[f]; - chart->basis.bitangent = m_faceBitangents[f]; - createFaceTexcoords(chart, f); - } - // Add face to chart. - chart->faces.push_back(f); - XA_DEBUG_ASSERT(m_faceChartArray[f] == -1); - m_faceChartArray[f] = chart->id; - m_facesLeft--; - // Update area and boundary length. - chart->area = chart->area + m_faceAreas[f]; - chart->boundaryLength = computeBoundaryLength(chart, f); - chart->normalSum += m_mesh->triangleNormalAreaScaled(f); - chart->averageNormal = normalizeSafe(chart->normalSum, Vector3(0), 0.0f); - chart->centroidSum += m_mesh->triangleCenter(f); + // Use the first face normal. + // Use any edge as the tangent vector. + basis.normal = m_faceNormals[face]; + basis.tangent = normalize(m_mesh->position(m_mesh->vertexAt(face * 3 + 0)) - m_mesh->position(m_mesh->vertexAt(face * 3 + 1)), kEpsilon); + basis.bitangent = cross(basis.normal, basis.tangent); + } else { + // Use best fit normal. + if (!computeChartBasis(chart, &basis)) { + chart->faces.resize(oldFaceCount); + return false; + } + if (dot(basis.normal, m_faceNormals[face]) < 0.0f) // Flip normal if oriented in the wrong direction. + basis.normal = -basis.normal; + } + if (!firstFace) { + // Compute orthogonal parameterization and check that it is valid. + parameterizeChart(chart); + for (uint32_t i = oldFaceCount; i < faceCount; i++) + m_faceCharts[chart->faces[i]] = chart->id; + if (!isChartParameterizationValid(chart)) { + for (uint32_t i = oldFaceCount; i < faceCount; i++) + m_faceCharts[chart->faces[i]] = -1; + chart->faces.resize(oldFaceCount); + return false; + } + } + // Add face(s) to chart. + chart->basis = basis; + chart->area = computeArea(chart, face); + chart->boundaryLength = computeBoundaryLength(chart, face); + for (uint32_t i = oldFaceCount; i < faceCount; i++) { + const uint32_t f = chart->faces[i]; + m_faceCharts[f] = chart->id; + m_facesLeft--; + chart->centroidSum += m_mesh->computeFaceCenter(f); + } chart->centroid = chart->centroidSum / float(chart->faces.size()); - // Update candidates. - updateChartCandidates(chart, f); - } - -#if XA_GROW_CHARTS_COPLANAR - void growChartCoplanar(Chart *chart) - { - XA_DEBUG_ASSERT(!chart->faces.isEmpty()); - for (uint32_t i = 0; i < chart->faces.size(); i++) { - const uint32_t chartFace = chart->faces[i]; - uint32_t face = m_nextPlanarRegionFace[chartFace]; - while (face != chartFace) { - // Not assigned to a chart? - if (m_faceChartArray[face] == -1) { - createFaceTexcoords(chart, face); - addFaceToChart(chart, face); - } - face = m_nextPlanarRegionFace[face]; + // Refresh candidates. + chart->candidates.clear(); + for (uint32_t i = 0; i < faceCount; i++) { + // Traverse neighboring faces, add the ones that do not belong to any chart yet. + const uint32_t f = chart->faces[i]; + for (uint32_t j = 0; j < 3; j++) { + const uint32_t edge = f * 3 + j; + const uint32_t oedge = m_mesh->oppositeEdge(edge); + if (oedge == UINT32_MAX) + continue; // Boundary edge. + const uint32_t oface = meshEdgeFace(oedge); + if (m_faceCharts[oface] != -1) + continue; // Face belongs to another chart. + if (chart->failedPlanarRegions.contains(m_facePlanarRegionId[oface])) + continue; // Failed to add this faces planar region to the chart before. + const float cost = evaluateCost(chart, oface); + if (cost < FLT_MAX) + chart->candidates.push(cost, oface); } } + return true; } -#endif + // Returns true if the seed has changed. bool relocateSeed(Chart *chart) { // Find the first N triangles that fit the proxy best. const uint32_t faceCount = chart->faces.size(); m_bestTriangles.clear(); for (uint32_t i = 0; i < faceCount; i++) { - float priority = evaluateProxyFitMetric(chart, chart->faces[i]); - m_bestTriangles.push(priority, chart->faces[i]); + const float cost = evaluateProxyFitMetric(chart, chart->faces[i]); + m_bestTriangles.push(cost, chart->faces[i]); } // Of those, choose the least central triangle. uint32_t leastCentral = 0; float maxDistance = -1; - const uint32_t bestCount = m_bestTriangles.count(); - for (uint32_t i = 0; i < bestCount; i++) { - Vector3 faceCentroid = m_mesh->triangleCenter(m_bestTriangles.pairs[i].face); - float distance = length(chart->centroid - faceCentroid); + for (;;) { + if (m_bestTriangles.count() == 0) + break; + const uint32_t face = m_bestTriangles.pop(); + Vector3 faceCentroid = m_mesh->computeFaceCenter(face); + const float distance = length(chart->centroid - faceCentroid); if (distance > maxDistance) { maxDistance = distance; - leastCentral = m_bestTriangles.pairs[i].face; + leastCentral = face; } } XA_DEBUG_ASSERT(maxDistance >= 0); // In order to prevent k-means cyles we record all the previously chosen seeds. for (uint32_t i = 0; i < chart->seeds.size(); i++) { - if (chart->seeds[i] == leastCentral) { + // Treat seeds belong to the same planar region as equal. + if (chart->seeds[i] == leastCentral || m_facePlanarRegionId[chart->seeds[i]] == m_facePlanarRegionId[leastCentral]) { // Move new seed to the end of the seed array. uint32_t last = chart->seeds.size() - 1; swap(chart->seeds[i], chart->seeds[last]); @@ -4907,26 +5427,32 @@ private: // Evaluate combined metric. float evaluateCost(Chart *chart, uint32_t face) const { + if (dot(m_faceNormals[face], chart->basis.normal) <= 0.26f) // ~75 degrees + return FLT_MAX; // Estimate boundary length and area: - const float newChartArea = chart->area + m_faceAreas[face]; - const float newBoundaryLength = computeBoundaryLength(chart, face); + float newChartArea = 0.0f, newBoundaryLength = 0.0f; + if (m_options.maxChartArea > 0.0f || m_options.roundnessMetricWeight > 0.0f) + newChartArea = computeArea(chart, face); + if (m_options.maxBoundaryLength > 0.0f || m_options.roundnessMetricWeight > 0.0f) + newBoundaryLength = computeBoundaryLength(chart, face); // Enforce limits strictly: if (m_options.maxChartArea > 0.0f && newChartArea > m_options.maxChartArea) return FLT_MAX; if (m_options.maxBoundaryLength > 0.0f && newBoundaryLength > m_options.maxBoundaryLength) return FLT_MAX; - if (dot(m_faceNormals[face], chart->averageNormal) < 0.5f) - return FLT_MAX; - // Penalize faces that cross seams, reward faces that close seams or reach boundaries. - // Make sure normal seams are fully respected: - const float N = evaluateNormalSeamMetric(chart, face); - if (m_options.normalSeamMetricWeight >= 1000.0f && N > 0.0f) - return FLT_MAX; - float cost = m_options.normalSeamMetricWeight * N; + float cost = 0.0f; + if (m_options.normalSeamMetricWeight > 0.0f) { + // Penalize faces that cross seams, reward faces that close seams or reach boundaries. + // Make sure normal seams are fully respected: + const float N = evaluateNormalSeamMetric(chart, face); + if (m_options.normalSeamMetricWeight >= 1000.0f && N > 0.0f) + return FLT_MAX; + cost += m_options.normalSeamMetricWeight * N; + } if (m_options.proxyFitMetricWeight > 0.0f) cost += m_options.proxyFitMetricWeight * evaluateProxyFitMetric(chart, face); if (m_options.roundnessMetricWeight > 0.0f) - cost += m_options.roundnessMetricWeight * evaluateRoundnessMetric(chart, face, newBoundaryLength, newChartArea); + cost += m_options.roundnessMetricWeight * evaluateRoundnessMetric(chart, newBoundaryLength, newChartArea); if (m_options.straightnessMetricWeight > 0.0f) cost += m_options.straightnessMetricWeight * evaluateStraightnessMetric(chart, face); if (m_options.textureSeamMetricWeight > 0.0f) @@ -4941,40 +5467,45 @@ private: } // Returns a value in [0-1]. - float evaluateProxyFitMetric(Chart *chart, uint32_t f) const + float evaluateProxyFitMetric(Chart *chart, uint32_t face) const { - const Vector3 faceNormal = m_faceNormals[f]; + // All faces in coplanar regions have the same normal, can use any face. + const Vector3 faceNormal = m_faceNormals[face]; // Use plane fitting metric for now: - return 1 - dot(faceNormal, chart->averageNormal); // @@ normal deviations should be weighted by face area + return 1 - dot(faceNormal, chart->basis.normal); // @@ normal deviations should be weighted by face area } - float evaluateRoundnessMetric(Chart *chart, uint32_t /*face*/, float newBoundaryLength, float newChartArea) const + float evaluateRoundnessMetric(Chart *chart, float newBoundaryLength, float newChartArea) const { - float roundness = square(chart->boundaryLength) / chart->area; - float newRoundness = square(newBoundaryLength) / newChartArea; - if (newRoundness > roundness) { - return square(newBoundaryLength) / (newChartArea * 4.0f * kPi); - } else { - // Offer no impedance to faces that improve roundness. - return 0; - } + const float roundness = square(chart->boundaryLength) / chart->area; + const float newBoundaryLengthSq = square(newBoundaryLength); + const float newRoundness = newBoundaryLengthSq / newChartArea; + if (newRoundness > roundness) + return newBoundaryLengthSq / (newChartArea * kPi4); + // Offer no impedance to faces that improve roundness. + return 0; } - float evaluateStraightnessMetric(Chart *chart, uint32_t f) const + float evaluateStraightnessMetric(Chart *chart, uint32_t firstFace) const { - float l_out = 0.0f; - float l_in = 0.0f; - for (Mesh::FaceEdgeIterator it(m_mesh, f); !it.isDone(); it.advance()) { - float l = m_edgeLengths[it.edge()]; - if (it.isBoundary() || m_ignoreFaces[it.oppositeFace()]) { - l_out += l; - } else { - if (m_faceChartArray[it.oppositeFace()] != chart->id) { + float l_out = 0.0f, l_in = 0.0f; + const uint32_t planarRegionId = m_facePlanarRegionId[firstFace]; + uint32_t face = firstFace; + for (;;) { + for (Mesh::FaceEdgeIterator it(m_mesh, face); !it.isDone(); it.advance()) { + const float l = m_edgeLengths[it.edge()]; + if (it.isBoundary()) { l_out += l; - } else { - l_in += l; + } else if (m_facePlanarRegionId[it.oppositeFace()] != planarRegionId) { + if (m_faceCharts[it.oppositeFace()] != chart->id) + l_out += l; + else + l_in += l; } } + face = m_nextPlanarRegionFace[face]; + if (face == firstFace) + break; } XA_DEBUG_ASSERT(l_in != 0.0f); // Candidate face must be adjacent to chart. @@ This is not true if the input mesh has zero-length edges. float ratio = (l_out - l_in) / (l_out + l_in); @@ -4991,128 +5522,184 @@ private: const uint32_t v1 = m_mesh->vertexAt(meshEdgeIndex1(edge)); const uint32_t ov0 = m_mesh->vertexAt(meshEdgeIndex0(oppositeEdge)); const uint32_t ov1 = m_mesh->vertexAt(meshEdgeIndex1(oppositeEdge)); - return m_mesh->normal(v0) != m_mesh->normal(ov1) || m_mesh->normal(v1) != m_mesh->normal(ov0); + if (v0 == ov1 && v1 == ov0) + return false; + return !equal(m_mesh->normal(v0), m_mesh->normal(ov1), kNormalEpsilon) || !equal(m_mesh->normal(v1), m_mesh->normal(ov0), kNormalEpsilon); } - return m_faceNormals[meshEdgeFace(edge)] != m_faceNormals[meshEdgeFace(oppositeEdge)]; + const uint32_t f0 = meshEdgeFace(edge); + const uint32_t f1 = meshEdgeFace(oppositeEdge); + if (m_facePlanarRegionId[f0] == m_facePlanarRegionId[f1]) + return false; + return !equal(m_faceNormals[f0], m_faceNormals[f1], kNormalEpsilon); } - float evaluateNormalSeamMetric(Chart *chart, uint32_t f) const + float evaluateNormalSeamMetric(Chart *chart, uint32_t firstFace) const { - float seamFactor = 0.0f; - float totalLength = 0.0f; - for (Mesh::FaceEdgeIterator it(m_mesh, f); !it.isDone(); it.advance()) { - if (it.isBoundary() || m_ignoreFaces[it.oppositeFace()]) - continue; - if (m_faceChartArray[it.oppositeFace()] != chart->id) - continue; - float l = m_edgeLengths[it.edge()]; - totalLength += l; - if (!it.isSeam()) - continue; - // Make sure it's a normal seam. - if (isNormalSeam(it.edge())) { - float d; - if (m_mesh->flags() & MeshFlags::HasNormals) { - const Vector3 &n0 = m_mesh->normal(it.vertex0()); - const Vector3 &n1 = m_mesh->normal(it.vertex1()); - const Vector3 &on0 = m_mesh->normal(m_mesh->vertexAt(meshEdgeIndex0(it.oppositeEdge()))); - const Vector3 &on1 = m_mesh->normal(m_mesh->vertexAt(meshEdgeIndex1(it.oppositeEdge()))); - const float d0 = clamp(dot(n0, on1), 0.0f, 1.0f); - const float d1 = clamp(dot(n1, on0), 0.0f, 1.0f); - d = (d0 + d1) * 0.5f; - } else { - d = clamp(dot(m_faceNormals[f], m_faceNormals[meshEdgeFace(it.oppositeEdge())]), 0.0f, 1.0f); + float seamFactor = 0.0f, totalLength = 0.0f; + uint32_t face = firstFace; + for (;;) { + for (Mesh::FaceEdgeIterator it(m_mesh, face); !it.isDone(); it.advance()) { + if (it.isBoundary()) + continue; + if (m_faceCharts[it.oppositeFace()] != chart->id) + continue; + float l = m_edgeLengths[it.edge()]; + totalLength += l; + if (!it.isSeam()) + continue; + // Make sure it's a normal seam. + if (isNormalSeam(it.edge())) { + float d; + if (m_mesh->flags() & MeshFlags::HasNormals) { + const Vector3 &n0 = m_mesh->normal(it.vertex0()); + const Vector3 &n1 = m_mesh->normal(it.vertex1()); + const Vector3 &on0 = m_mesh->normal(m_mesh->vertexAt(meshEdgeIndex0(it.oppositeEdge()))); + const Vector3 &on1 = m_mesh->normal(m_mesh->vertexAt(meshEdgeIndex1(it.oppositeEdge()))); + const float d0 = clamp(dot(n0, on1), 0.0f, 1.0f); + const float d1 = clamp(dot(n1, on0), 0.0f, 1.0f); + d = (d0 + d1) * 0.5f; + } else { + d = clamp(dot(m_faceNormals[face], m_faceNormals[meshEdgeFace(it.oppositeEdge())]), 0.0f, 1.0f); + } + l *= 1 - d; + seamFactor += l; } - l *= 1 - d; - seamFactor += l; } + face = m_nextPlanarRegionFace[face]; + if (face == firstFace) + break; } if (seamFactor <= 0.0f) return 0.0f; return seamFactor / totalLength; } - float evaluateTextureSeamMetric(Chart *chart, uint32_t f) const + float evaluateTextureSeamMetric(Chart *chart, uint32_t firstFace) const { - float seamLength = 0.0f; - float totalLength = 0.0f; - for (Mesh::FaceEdgeIterator it(m_mesh, f); !it.isDone(); it.advance()) { - if (it.isBoundary() || m_ignoreFaces[it.oppositeFace()]) - continue; - if (m_faceChartArray[it.oppositeFace()] != chart->id) - continue; - float l = m_edgeLengths[it.edge()]; - totalLength += l; - if (!it.isSeam()) - continue; - // Make sure it's a texture seam. - if (it.isTextureSeam()) - seamLength += l; + float seamLength = 0.0f, totalLength = 0.0f; + uint32_t face = firstFace; + for (;;) { + for (Mesh::FaceEdgeIterator it(m_mesh, face); !it.isDone(); it.advance()) { + if (it.isBoundary()) + continue; + if (m_faceCharts[it.oppositeFace()] != chart->id) + continue; + float l = m_edgeLengths[it.edge()]; + totalLength += l; + if (!it.isSeam()) + continue; + // Make sure it's a texture seam. + if (it.isTextureSeam()) + seamLength += l; + } + face = m_nextPlanarRegionFace[face]; + if (face == firstFace) + break; } - if (seamLength == 0.0f) + if (seamLength <= 0.0f) return 0.0f; // Avoid division by zero. return seamLength / totalLength; } - float computeBoundaryLength(Chart *chart, uint32_t f) const + float computeArea(Chart *chart, uint32_t firstFace) const + { + float area = chart->area; + uint32_t face = firstFace; + for (;;) { + area += m_faceAreas[face]; + face = m_nextPlanarRegionFace[face]; + if (face == firstFace) + break; + } + return area; + } + + float computeBoundaryLength(Chart *chart, uint32_t firstFace) const { float boundaryLength = chart->boundaryLength; // Add new edges, subtract edges shared with the chart. - for (Mesh::FaceEdgeIterator it(m_mesh, f); !it.isDone(); it.advance()) { - const float edgeLength = m_edgeLengths[it.edge()]; - if (it.isBoundary() || m_ignoreFaces[it.oppositeFace()]) { - boundaryLength += edgeLength; - } else { - if (m_faceChartArray[it.oppositeFace()] != chart->id) + const uint32_t planarRegionId = m_facePlanarRegionId[firstFace]; + uint32_t face = firstFace; + for (;;) { + for (Mesh::FaceEdgeIterator it(m_mesh, face); !it.isDone(); it.advance()) { + const float edgeLength = m_edgeLengths[it.edge()]; + if (it.isBoundary()) { boundaryLength += edgeLength; - else - boundaryLength -= edgeLength; + } else if (m_facePlanarRegionId[it.oppositeFace()] != planarRegionId) { + if (m_faceCharts[it.oppositeFace()] != chart->id) + boundaryLength += edgeLength; + else + boundaryLength -= edgeLength; + } } + face = m_nextPlanarRegionFace[face]; + if (face == firstFace) + break; } return max(0.0f, boundaryLength); // @@ Hack! } - void mergeChart(Chart *owner, Chart *chart, float sharedBoundaryLength) + bool mergeChart(Chart *owner, Chart *chart, float sharedBoundaryLength) { - const uint32_t faceCount = chart->faces.size(); - for (uint32_t i = 0; i < faceCount; i++) { - uint32_t f = chart->faces[i]; - XA_DEBUG_ASSERT(m_faceChartArray[f] == chart->id); - m_faceChartArray[f] = owner->id; - owner->faces.push_back(f); + const uint32_t oldOwnerFaceCount = owner->faces.size(); + const uint32_t chartFaceCount = chart->faces.size(); + owner->faces.push_back(chart->faces); + for (uint32_t i = 0; i < chartFaceCount; i++) { + XA_DEBUG_ASSERT(m_faceCharts[chart->faces[i]] == chart->id); + m_faceCharts[chart->faces[i]] = owner->id; + } + // Compute basis using best fit normal. + Basis basis; + if (!computeChartBasis(owner, &basis)) { + owner->faces.resize(oldOwnerFaceCount); + for (uint32_t i = 0; i < chartFaceCount; i++) + m_faceCharts[chart->faces[i]] = chart->id; + return false; + } + if (dot(basis.normal, m_faceNormals[owner->faces[0]]) < 0.0f) // Flip normal if oriented in the wrong direction. + basis.normal = -basis.normal; + // Compute orthogonal parameterization and check that it is valid. + parameterizeChart(owner); + if (!isChartParameterizationValid(owner)) { + owner->faces.resize(oldOwnerFaceCount); + for (uint32_t i = 0; i < chartFaceCount; i++) + m_faceCharts[chart->faces[i]] = chart->id; + return false; } + // Merge chart. + owner->basis = basis; + owner->failedPlanarRegions.push_back(chart->failedPlanarRegions); // Update adjacencies? owner->area += chart->area; owner->boundaryLength += chart->boundaryLength - sharedBoundaryLength; - owner->normalSum += chart->normalSum; - owner->averageNormal = normalizeSafe(owner->normalSum, Vector3(0), 0.0f); // Delete chart. - m_chartArray[chart->id] = nullptr; + m_charts[chart->id] = nullptr; chart->~Chart(); XA_FREE(chart); + return true; } const Mesh *m_mesh; - const Array<uint32_t> *m_meshFaces; - Array<bool> m_ignoreFaces; Array<float> m_edgeLengths; Array<float> m_faceAreas; Array<Vector3> m_faceNormals; - Array<Vector3> m_faceTangents; - Array<Vector3> m_faceBitangents; Array<Vector2> m_texcoords; uint32_t m_facesLeft; - Array<int> m_faceChartArray; - Array<Chart *> m_chartArray; - PriorityQueue m_bestTriangles; + Array<int> m_faceCharts; + Array<Chart *> m_charts; + CostQueue m_bestTriangles; KISSRng m_rand; ChartOptions m_options; - Array<Chart *> m_faceCandidateCharts; - Array<float> m_faceCandidateCosts; -#if XA_GROW_CHARTS_COPLANAR Array<uint32_t> m_nextPlanarRegionFace; + Array<uint32_t> m_facePlanarRegionId; + Array<Vector3> m_tempPoints; + UniformGrid2 m_boundaryGrid; +#if XA_MERGE_CHARTS + // mergeCharts + Array<float> m_sharedBoundaryLengths; + Array<float> m_sharedBoundaryLengthsNoSeams; + Array<uint32_t> m_sharedBoundaryEdgeCountNoSeams; #endif - Array<uint32_t> m_tempEdges1, m_tempEdges2; }; } // namespace segment @@ -5301,7 +5888,11 @@ private: // q = A·p sparse::mult(A, p, q); // alpha = delta_new / p·q - alpha = delta_new / sparse::dot(p, q); + const float pdotq = sparse::dot(p, q); + if (!isFinite(pdotq) || isNan(pdotq)) + alpha = 0.0f; + else + alpha = delta_new / pdotq; // x = alfa·p + x sparse::saxpy(alpha, p, x); if ((i & 31) == 0) { // recompute r after 32 steps @@ -5514,186 +6105,518 @@ static bool computeLeastSquaresConformalMap(Mesh *mesh) // Solve Solver::LeastSquaresSolver(A, b, x, lockedParameters, 4, 0.000001f); // Map x back to texcoords: - for (uint32_t v = 0; v < vertexCount; v++) + for (uint32_t v = 0; v < vertexCount; v++) { mesh->texcoord(v) = Vector2(x[2 * v + 0], x[2 * v + 1]); + XA_DEBUG_ASSERT(!isNan(mesh->texcoord(v).x)); + XA_DEBUG_ASSERT(!isNan(mesh->texcoord(v).y)); + } return true; } -static bool computeOrthogonalProjectionMap(Mesh *mesh) +#if XA_RECOMPUTE_CHARTS +struct PiecewiseParam { - uint32_t vertexCount = mesh->vertexCount(); - // Avoid redundant computations. - float matrix[6]; - Fit::computeCovariance(vertexCount, &mesh->position(0), matrix); - if (matrix[0] == 0 && matrix[3] == 0 && matrix[5] == 0) - return false; - float eigenValues[3]; - Vector3 eigenVectors[3]; - if (!Fit::eigenSolveSymmetric3(matrix, eigenValues, eigenVectors)) - return false; - Vector3 axis[2]; - axis[0] = normalize(eigenVectors[0], kEpsilon); - axis[1] = normalize(eigenVectors[1], kEpsilon); - // Project vertices to plane. - for (uint32_t i = 0; i < vertexCount; i++) - mesh->texcoord(i) = Vector2(dot(axis[0], mesh->position(i)), dot(axis[1], mesh->position(i))); - return true; -} + void reset(const Mesh *mesh, uint32_t faceCount) + { + m_mesh = mesh; + m_faceCount = faceCount; + const uint32_t vertexCount = m_mesh->vertexCount(); + m_texcoords.resize(vertexCount); + m_patch.reserve(m_faceCount); + m_faceAssigned.resize(m_faceCount); + m_faceAssigned.zeroOutMemory(); + m_faceInvalid.resize(m_faceCount); + m_faceInPatch.resize(m_faceCount); + m_vertexInPatch.resize(vertexCount); + m_faceInCandidates.resize(m_faceCount); + } + + ConstArrayView<uint32_t> chartFaces() const { return m_patch; } + const Vector2 *texcoords() const { return m_texcoords.data(); } + + bool computeChart() + { + m_patch.clear(); + m_faceInvalid.zeroOutMemory(); + m_faceInPatch.zeroOutMemory(); + m_vertexInPatch.zeroOutMemory(); + // Add the seed face (first unassigned face) to the patch. + uint32_t seed = UINT32_MAX; + for (uint32_t f = 0; f < m_faceCount; f++) { + if (m_faceAssigned.get(f)) + continue; + seed = f; + m_patch.push_back(seed); + m_faceInPatch.set(seed); + m_faceAssigned.set(seed); + Vector2 texcoords[3]; + orthoProjectFace(seed, texcoords); + for (uint32_t i = 0; i < 3; i++) { + const uint32_t vertex = m_mesh->vertexAt(seed * 3 + i); + m_vertexInPatch.set(vertex); + m_texcoords[vertex] = texcoords[i]; + } + break; + } + if (seed == UINT32_MAX) + return false; + for (;;) { + findCandidates(); + if (m_candidates.isEmpty()) + break; + for (;;) { + // Find the candidate with the lowest cost. + float lowestCost = FLT_MAX; + uint32_t bestCandidate = UINT32_MAX; + for (uint32_t i = 0; i < m_candidates.size(); i++) { + const Candidate &candidate = m_candidates[i]; + if (m_faceInvalid.get(candidate.face)) // A candidate face may be invalidated after is was added. + continue; + if (candidate.maxCost < lowestCost) { + lowestCost = candidate.maxCost; + bestCandidate = i; + } + } + if (bestCandidate == UINT32_MAX) + break; + // Compute the position by averaging linked candidates (candidates that share the same free vertex). + Vector2 position(0.0f); + uint32_t n = 0; + for (CandidateIterator it(m_candidates, bestCandidate); !it.isDone(); it.advance()) { + position += it.current().position; + n++; + } + position *= 1.0f / (float)n; + const uint32_t freeVertex = m_candidates[bestCandidate].vertex; + XA_DEBUG_ASSERT(!isNan(position.x)); + XA_DEBUG_ASSERT(!isNan(position.y)); + m_texcoords[freeVertex] = position; + // Check for flipped faces. This is also done when candidates are first added, but the averaged position of the free vertex is different now, so check again. + bool invalid = false; + for (CandidateIterator it(m_candidates, bestCandidate); !it.isDone(); it.advance()) { + const uint32_t vertex0 = m_mesh->vertexAt(meshEdgeIndex0(it.current().patchEdge)); + const uint32_t vertex1 = m_mesh->vertexAt(meshEdgeIndex1(it.current().patchEdge)); + const float freeVertexOrient = orientToEdge(m_texcoords[vertex0], m_texcoords[vertex1], position); + if ((it.current().patchVertexOrient < 0.0f && freeVertexOrient < 0.0f) || (it.current().patchVertexOrient > 0.0f && freeVertexOrient > 0.0f)) { + invalid = true; + break; + } + } + // Check for boundary intersection. + if (!invalid) { + m_boundaryGrid.reset(m_texcoords.data(), m_mesh->indices()); + // Add edges on the patch boundary to the grid. + // Temporarily adding candidate faces to the patch makes it simpler to detect which edges are on the boundary. + const uint32_t oldPatchSize = m_patch.size(); + for (CandidateIterator it(m_candidates, bestCandidate); !it.isDone(); it.advance()) + m_patch.push_back(it.current().face); + for (uint32_t i = 0; i < m_patch.size(); i++) { + for (Mesh::FaceEdgeIterator it(m_mesh, m_patch[i]); !it.isDone(); it.advance()) { + const uint32_t oface = it.oppositeFace(); + if (oface == UINT32_MAX || oface >= m_faceCount || !m_faceInPatch.get(oface)) + m_boundaryGrid.append(it.edge()); + } + } + invalid = m_boundaryGrid.intersectSelf(m_mesh->epsilon()); + m_patch.resize(oldPatchSize); + } + if (invalid) { + // Mark all faces of linked candidates as invalid. + for (CandidateIterator it(m_candidates, bestCandidate); !it.isDone(); it.advance()) + m_faceInvalid.set(it.current().face); + continue; + } + // Add faces to the patch. + for (CandidateIterator it(m_candidates, bestCandidate); !it.isDone(); it.advance()) { + m_patch.push_back(it.current().face); + m_faceInPatch.set(it.current().face); + m_faceAssigned.set(it.current().face); + } + // Add vertex to the patch. + m_vertexInPatch.set(freeVertex); + // Successfully added candidate face(s) to patch. + break; + } + } + return true; + } + +private: + struct Candidate + { + uint32_t face, vertex; + uint32_t next; // The next candidate with the same vertex. + Vector2 position; + float cost; + float maxCost; // Of all linked candidates. + uint32_t patchEdge; + float patchVertexOrient; + }; + + struct CandidateIterator + { + CandidateIterator(Array<Candidate> &candidates, uint32_t first) : m_candidates(candidates), m_current(first) {} + void advance() { if (m_current != UINT32_MAX) m_current = m_candidates[m_current].next; } + bool isDone() const { return m_current == UINT32_MAX; } + Candidate ¤t() { return m_candidates[m_current]; } + + private: + Array<Candidate> &m_candidates; + uint32_t m_current; + }; + + const Mesh *m_mesh; + uint32_t m_faceCount; + Array<Vector2> m_texcoords; + Array<Candidate> m_candidates; + BitArray m_faceInCandidates; + Array<uint32_t> m_patch; + BitArray m_faceAssigned; // Face is assigned to a previous chart or the current patch. + BitArray m_faceInPatch, m_vertexInPatch; + BitArray m_faceInvalid; // Face cannot be added to the patch - flipped, cost too high or causes boundary intersection. + UniformGrid2 m_boundaryGrid; + + // Find candidate faces on the patch front. + void findCandidates() + { + m_candidates.clear(); + m_faceInCandidates.zeroOutMemory(); + for (uint32_t i = 0; i < m_patch.size(); i++) { + for (Mesh::FaceEdgeIterator it(m_mesh, m_patch[i]); !it.isDone(); it.advance()) { + const uint32_t oface = it.oppositeFace(); + if (oface == UINT32_MAX || oface >= m_faceCount || m_faceAssigned.get(oface) || m_faceInCandidates.get(oface)) + continue; + // Found an active edge on the patch front. + // Find the free vertex (the vertex that isn't on the active edge). + // Compute the orientation of the other patch face vertex to the active edge. + uint32_t freeVertex = UINT32_MAX; + float orient = 0.0f; + for (uint32_t j = 0; j < 3; j++) { + const uint32_t vertex = m_mesh->vertexAt(oface * 3 + j); + if (vertex != it.vertex0() && vertex != it.vertex1()) { + freeVertex = vertex; + orient = orientToEdge(m_texcoords[it.vertex0()], m_texcoords[it.vertex1()], m_texcoords[m_mesh->vertexAt(m_patch[i] * 3 + j)]); + break; + } + } + XA_DEBUG_ASSERT(freeVertex != UINT32_MAX); + // If the free vertex is already in the patch, the face is enclosed by the patch. Add the face to the patch - don't need to assign texcoords. + if (m_vertexInPatch.get(freeVertex)) { + freeVertex = UINT32_MAX; + m_patch.push_back(oface); + m_faceAssigned.set(oface); + continue; + } + // Check this here rather than above so faces enclosed by the patch are always added. + if (m_faceInvalid.get(oface)) + continue; + addCandidateFace(it.edge(), orient, oface, it.oppositeEdge(), freeVertex); + } + } + // Link candidates that share the same vertex. + for (uint32_t i = 0; i < m_candidates.size(); i++) { + if (m_candidates[i].next != UINT32_MAX) + continue; + uint32_t current = i; + for (uint32_t j = i + 1; j < m_candidates.size(); j++) { + if (m_candidates[j].vertex == m_candidates[current].vertex) { + m_candidates[current].next = j; + current = j; + } + } + } + // Set max cost for linked candidates. + for (uint32_t i = 0; i < m_candidates.size(); i++) { + float maxCost = 0.0f; + for (CandidateIterator it(m_candidates, i); !it.isDone(); it.advance()) + maxCost = max(maxCost, it.current().cost); + for (CandidateIterator it(m_candidates, i); !it.isDone(); it.advance()) + it.current().maxCost = maxCost; + } + } + + void addCandidateFace(uint32_t patchEdge, float patchVertexOrient, uint32_t face, uint32_t edge, uint32_t freeVertex) + { + Vector2 texcoords[3]; + orthoProjectFace(face, texcoords); + // Find corresponding vertices between the patch edge and candidate edge. + const uint32_t vertex0 = m_mesh->vertexAt(meshEdgeIndex0(patchEdge)); + const uint32_t vertex1 = m_mesh->vertexAt(meshEdgeIndex1(patchEdge)); + uint32_t localVertex0 = UINT32_MAX, localVertex1 = UINT32_MAX, localFreeVertex = UINT32_MAX; + for (uint32_t i = 0; i < 3; i++) { + const uint32_t vertex = m_mesh->vertexAt(face * 3 + i); + if (vertex == m_mesh->vertexAt(meshEdgeIndex1(edge))) + localVertex0 = i; + else if (vertex == m_mesh->vertexAt(meshEdgeIndex0(edge))) + localVertex1 = i; + else + localFreeVertex = i; + } + // Scale orthogonal projection to match the patch edge. + const Vector2 patchEdgeVec = m_texcoords[vertex1] - m_texcoords[vertex0]; + const Vector2 localEdgeVec = texcoords[localVertex1] - texcoords[localVertex0]; + const float len1 = length(patchEdgeVec); + const float len2 = length(localEdgeVec); + const float scale = len1 / len2; + XA_ASSERT(scale > 0.0f); + for (uint32_t i = 0; i < 3; i++) + texcoords[i] *= scale; + // Translate to the first vertex on the patch edge. + const Vector2 translate = m_texcoords[vertex0] - texcoords[localVertex0]; + for (uint32_t i = 0; i < 3; i++) + texcoords[i] += translate; + // Compute the angle between the patch edge and the corresponding local edge. + const float angle = atan2f(patchEdgeVec.y, patchEdgeVec.x) - atan2f(localEdgeVec.y, localEdgeVec.x); + // Rotate so the patch edge and the corresponding local edge occupy the same space. + for (uint32_t i = 0; i < 3; i++) { + if (i == localVertex0) + continue; + Vector2 &uv = texcoords[i]; + uv -= texcoords[localVertex0]; // Rotate around the first vertex. + const float c = cosf(angle); + const float s = sinf(angle); + const float x = uv.x * c - uv.y * s; + const float y = uv.y * c + uv.x * s; + uv.x = x + texcoords[localVertex0].x; + uv.y = y + texcoords[localVertex0].y; + } + // Check for local overlap (flipped triangle). + // The patch face vertex that isn't on the active edge and the free vertex should be oriented on opposite sides to the active edge. + const float freeVertexOrient = orientToEdge(m_texcoords[vertex0], m_texcoords[vertex1], texcoords[localFreeVertex]); + if ((patchVertexOrient < 0.0f && freeVertexOrient < 0.0f) || (patchVertexOrient > 0.0f && freeVertexOrient > 0.0f)) { + m_faceInvalid.set(face); + return; + } + const float stretch = computeStretch(m_mesh->position(vertex0), m_mesh->position(vertex1), m_mesh->position(freeVertex), texcoords[0], texcoords[1], texcoords[2]); + if (stretch >= FLT_MAX) { + m_faceInvalid.set(face); + return; + } + const float cost = fabsf(stretch - 1.0f); +#if 0 + if (cost > 0.25f) { + m_faceInvalid.set(face); + return; + } +#endif + // Add the candidate. + Candidate candidate; + candidate.face = face; + candidate.vertex = freeVertex; + candidate.position = texcoords[localFreeVertex]; + candidate.next = UINT32_MAX; + candidate.cost = cost; + candidate.patchEdge = patchEdge; + candidate.patchVertexOrient = patchVertexOrient; + m_candidates.push_back(candidate); + m_faceInCandidates.set(face); + } + + void orthoProjectFace(uint32_t face, Vector2 *texcoords) const + { + const Vector3 normal = m_mesh->computeFaceNormal(face); + const Vector3 tangent = normalize(m_mesh->position(m_mesh->vertexAt(face * 3 + 1)) - m_mesh->position(m_mesh->vertexAt(face * 3 + 0)), kEpsilon); + const Vector3 bitangent = cross(normal, tangent); + for (uint32_t i = 0; i < 3; i++) { + const Vector3 &pos = m_mesh->position(m_mesh->vertexAt(face * 3 + i)); + texcoords[i] = Vector2(dot(tangent, pos), dot(bitangent, pos)); + } + } + + float parametricArea(const Vector2 *texcoords) const + { + const Vector2 &v1 = texcoords[0]; + const Vector2 &v2 = texcoords[1]; + const Vector2 &v3 = texcoords[2]; + return ((v2.x - v1.x) * (v3.y - v1.y) - (v3.x - v1.x) * (v2.y - v1.y)) * 0.5f; + } + + float computeStretch(Vector3 p1, Vector3 p2, Vector3 p3, Vector2 t1, Vector2 t2, Vector2 t3) const + { + float parametricArea = ((t2.y - t1.y) * (t3.x - t1.x) - (t3.y - t1.y) * (t2.x - t1.x)) * 0.5f; + if (isZero(parametricArea, kAreaEpsilon)) + return FLT_MAX; + if (parametricArea < 0.0f) + parametricArea = fabsf(parametricArea); + const float geometricArea = length(cross(p2 - p1, p3 - p1)) * 0.5f; + if (parametricArea <= geometricArea) + return parametricArea / geometricArea; + else + return geometricArea / parametricArea; + } + + // Return value is positive if the point is one side of the edge, negative if on the other side. + float orientToEdge(Vector2 edgeVertex0, Vector2 edgeVertex1, Vector2 point) const + { + return (edgeVertex0.x - point.x) * (edgeVertex1.y - point.y) - (edgeVertex0.y - point.y) * (edgeVertex1.x - point.x); + } +}; +#endif // Estimate quality of existing parameterization. -struct ParameterizationQuality +struct Quality { + // computeBoundaryIntersection + bool boundaryIntersection = false; + + // computeFlippedFaces uint32_t totalTriangleCount = 0; uint32_t flippedTriangleCount = 0; uint32_t zeroAreaTriangleCount = 0; - float parametricArea = 0.0f; - float geometricArea = 0.0f; + + // computeMetrics + float totalParametricArea = 0.0f; + float totalGeometricArea = 0.0f; float stretchMetric = 0.0f; float maxStretchMetric = 0.0f; float conformalMetric = 0.0f; float authalicMetric = 0.0f; - bool boundaryIntersection = false; -}; -static ParameterizationQuality calculateParameterizationQuality(const Mesh *mesh, uint32_t faceCount, Array<uint32_t> *flippedFaces) -{ - XA_DEBUG_ASSERT(mesh != nullptr); - ParameterizationQuality quality; - uint32_t firstBoundaryEdge = UINT32_MAX; - for (uint32_t e = 0; e < mesh->edgeCount(); e++) { - if (mesh->isBoundaryEdge(e)) { - firstBoundaryEdge = e; - break; - } + void computeBoundaryIntersection(const Mesh *mesh, UniformGrid2 &boundaryGrid) + { + const Array<uint32_t> &boundaryEdges = mesh->boundaryEdges(); + const uint32_t boundaryEdgeCount = boundaryEdges.size(); + boundaryGrid.reset(mesh->texcoords(), mesh->indices(), boundaryEdgeCount); + for (uint32_t i = 0; i < boundaryEdgeCount; i++) + boundaryGrid.append(boundaryEdges[i]); + boundaryIntersection = boundaryGrid.intersectSelf(mesh->epsilon()); +#if XA_DEBUG_EXPORT_BOUNDARY_GRID + static int exportIndex = 0; + char filename[256]; + XA_SPRINTF(filename, sizeof(filename), "debug_boundary_grid_%03d.tga", exportIndex); + boundaryGrid.debugExport(filename); + exportIndex++; +#endif } - XA_DEBUG_ASSERT(firstBoundaryEdge != UINT32_MAX); - for (Mesh::BoundaryEdgeIterator it1(mesh, firstBoundaryEdge); !it1.isDone(); it1.advance()) { - const uint32_t edge1 = it1.edge(); - for (Mesh::BoundaryEdgeIterator it2(mesh, firstBoundaryEdge); !it2.isDone(); it2.advance()) { - const uint32_t edge2 = it2.edge(); - // Skip self and edges directly connected to edge1. - if (edge1 == edge2 || it1.nextEdge() == edge2 || it2.nextEdge() == edge1) + + void computeFlippedFaces(const Mesh *mesh, uint32_t faceCount, Array<uint32_t> *flippedFaces) + { + totalTriangleCount = flippedTriangleCount = zeroAreaTriangleCount = 0; + if (flippedFaces) + flippedFaces->clear(); + for (uint32_t f = 0; f < faceCount; f++) { + Vector2 texcoord[3]; + for (int i = 0; i < 3; i++) { + const uint32_t v = mesh->vertexAt(f * 3 + i); + texcoord[i] = mesh->texcoord(v); + } + totalTriangleCount++; + const float t1 = texcoord[0].x; + const float s1 = texcoord[0].y; + const float t2 = texcoord[1].x; + const float s2 = texcoord[1].y; + const float t3 = texcoord[2].x; + const float s3 = texcoord[2].y; + const float parametricArea = ((s2 - s1) * (t3 - t1) - (s3 - s1) * (t2 - t1)) * 0.5f; + if (isZero(parametricArea, kAreaEpsilon)) { + zeroAreaTriangleCount++; continue; - const Vector2 &a1 = mesh->texcoord(mesh->vertexAt(meshEdgeIndex0(edge1))); - const Vector2 &a2 = mesh->texcoord(mesh->vertexAt(meshEdgeIndex1(edge1))); - const Vector2 &b1 = mesh->texcoord(mesh->vertexAt(meshEdgeIndex0(edge2))); - const Vector2 &b2 = mesh->texcoord(mesh->vertexAt(meshEdgeIndex1(edge2))); - if (linesIntersect(a1, a2, b1, b2, mesh->epsilon())) { - quality.boundaryIntersection = true; - break; + } + if (parametricArea < 0.0f) { + // Count flipped triangles. + flippedTriangleCount++; + if (flippedFaces) + flippedFaces->push_back(f); } } - if (quality.boundaryIntersection) - break; - } - if (flippedFaces) - flippedFaces->clear(); - for (uint32_t f = 0; f < faceCount; f++) { - Vector3 pos[3]; - Vector2 texcoord[3]; - for (int i = 0; i < 3; i++) { - const uint32_t v = mesh->vertexAt(f * 3 + i); - pos[i] = mesh->position(v); - texcoord[i] = mesh->texcoord(v); - } - quality.totalTriangleCount++; - // Evaluate texture stretch metric. See: - // - "Texture Mapping Progressive Meshes", Sander, Snyder, Gortler & Hoppe - // - "Mesh Parameterization: Theory and Practice", Siggraph'07 Course Notes, Hormann, Levy & Sheffer. - const float t1 = texcoord[0].x; - const float s1 = texcoord[0].y; - const float t2 = texcoord[1].x; - const float s2 = texcoord[1].y; - const float t3 = texcoord[2].x; - const float s3 = texcoord[2].y; - float parametricArea = ((s2 - s1) * (t3 - t1) - (s3 - s1) * (t2 - t1)) / 2; - if (isZero(parametricArea, kAreaEpsilon)) { - quality.zeroAreaTriangleCount++; - continue; - } - if (parametricArea < 0.0f) { - // Count flipped triangles. - quality.flippedTriangleCount++; + if (flippedTriangleCount + zeroAreaTriangleCount == totalTriangleCount) { + // If all triangles are flipped, then none are. if (flippedFaces) - flippedFaces->push_back(f); - parametricArea = fabsf(parametricArea); + flippedFaces->clear(); + flippedTriangleCount = 0; } - const float geometricArea = length(cross(pos[1] - pos[0], pos[2] - pos[0])) / 2; - const Vector3 Ss = (pos[0] * (t2 - t3) + pos[1] * (t3 - t1) + pos[2] * (t1 - t2)) / (2 * parametricArea); - const Vector3 St = (pos[0] * (s3 - s2) + pos[1] * (s1 - s3) + pos[2] * (s2 - s1)) / (2 * parametricArea); - const float a = dot(Ss, Ss); // E - const float b = dot(Ss, St); // F - const float c = dot(St, St); // G - // Compute eigen-values of the first fundamental form: - const float sigma1 = sqrtf(0.5f * max(0.0f, a + c - sqrtf(square(a - c) + 4 * square(b)))); // gamma uppercase, min eigenvalue. - const float sigma2 = sqrtf(0.5f * max(0.0f, a + c + sqrtf(square(a - c) + 4 * square(b)))); // gamma lowercase, max eigenvalue. - XA_ASSERT(sigma2 > sigma1 || equal(sigma1, sigma2, kEpsilon)); - // isometric: sigma1 = sigma2 = 1 - // conformal: sigma1 / sigma2 = 1 - // authalic: sigma1 * sigma2 = 1 - const float rmsStretch = sqrtf((a + c) * 0.5f); - const float rmsStretch2 = sqrtf((square(sigma1) + square(sigma2)) * 0.5f); - XA_DEBUG_ASSERT(equal(rmsStretch, rmsStretch2, 0.01f)); - XA_UNUSED(rmsStretch2); - quality.stretchMetric += square(rmsStretch) * geometricArea; - quality.maxStretchMetric = max(quality.maxStretchMetric, sigma2); - if (!isZero(sigma1, 0.000001f)) { - // sigma1 is zero when geometricArea is zero. - quality.conformalMetric += (sigma2 / sigma1) * geometricArea; - } - quality.authalicMetric += (sigma1 * sigma2) * geometricArea; - // Accumulate total areas. - quality.geometricArea += geometricArea; - quality.parametricArea += parametricArea; - //triangleConformalEnergy(q, p); - } - if (quality.flippedTriangleCount + quality.zeroAreaTriangleCount == quality.totalTriangleCount) { - // If all triangles are flipped, then none are. - if (flippedFaces) - flippedFaces->clear(); - quality.flippedTriangleCount = 0; - } - if (quality.flippedTriangleCount > quality.totalTriangleCount / 2) - { - // If more than half the triangles are flipped, reverse the flipped / not flipped classification. - quality.flippedTriangleCount = quality.totalTriangleCount - quality.flippedTriangleCount; - if (flippedFaces) { - Array<uint32_t> temp; - flippedFaces->copyTo(temp); - flippedFaces->clear(); - for (uint32_t f = 0; f < faceCount; f++) { - bool match = false; - for (uint32_t ff = 0; ff < temp.size(); ff++) { - if (temp[ff] == f) { - match = true; - break; + if (flippedTriangleCount > totalTriangleCount / 2) + { + // If more than half the triangles are flipped, reverse the flipped / not flipped classification. + flippedTriangleCount = totalTriangleCount - flippedTriangleCount; + if (flippedFaces) { + Array<uint32_t> temp; + flippedFaces->copyTo(temp); + flippedFaces->clear(); + for (uint32_t f = 0; f < faceCount; f++) { + bool match = false; + for (uint32_t ff = 0; ff < temp.size(); ff++) { + if (temp[ff] == f) { + match = true; + break; + } } + if (!match) + flippedFaces->push_back(f); } - if (!match) - flippedFaces->push_back(f); } } } - XA_DEBUG_ASSERT(isFinite(quality.parametricArea) && quality.parametricArea >= 0); - XA_DEBUG_ASSERT(isFinite(quality.geometricArea) && quality.geometricArea >= 0); - XA_DEBUG_ASSERT(isFinite(quality.stretchMetric)); - XA_DEBUG_ASSERT(isFinite(quality.maxStretchMetric)); - XA_DEBUG_ASSERT(isFinite(quality.conformalMetric)); - XA_DEBUG_ASSERT(isFinite(quality.authalicMetric)); - if (quality.geometricArea <= 0.0f) { - quality.stretchMetric = 0.0f; - quality.maxStretchMetric = 0.0f; - quality.conformalMetric = 0.0f; - quality.authalicMetric = 0.0f; - } else { - const float normFactor = sqrtf(quality.parametricArea / quality.geometricArea); - quality.stretchMetric = sqrtf(quality.stretchMetric / quality.geometricArea) * normFactor; - quality.maxStretchMetric *= normFactor; - quality.conformalMetric = sqrtf(quality.conformalMetric / quality.geometricArea); - quality.authalicMetric = sqrtf(quality.authalicMetric / quality.geometricArea); + + void computeMetrics(const Mesh *mesh, uint32_t faceCount) + { + totalGeometricArea = totalParametricArea = 0.0f; + stretchMetric = maxStretchMetric = conformalMetric = authalicMetric = 0.0f; + for (uint32_t f = 0; f < faceCount; f++) { + Vector3 pos[3]; + Vector2 texcoord[3]; + for (int i = 0; i < 3; i++) { + const uint32_t v = mesh->vertexAt(f * 3 + i); + pos[i] = mesh->position(v); + texcoord[i] = mesh->texcoord(v); + } + // Evaluate texture stretch metric. See: + // - "Texture Mapping Progressive Meshes", Sander, Snyder, Gortler & Hoppe + // - "Mesh Parameterization: Theory and Practice", Siggraph'07 Course Notes, Hormann, Levy & Sheffer. + const float t1 = texcoord[0].x; + const float s1 = texcoord[0].y; + const float t2 = texcoord[1].x; + const float s2 = texcoord[1].y; + const float t3 = texcoord[2].x; + const float s3 = texcoord[2].y; + float parametricArea = ((s2 - s1) * (t3 - t1) - (s3 - s1) * (t2 - t1)) * 0.5f; + if (isZero(parametricArea, kAreaEpsilon)) + continue; + if (parametricArea < 0.0f) + parametricArea = fabsf(parametricArea); + const float geometricArea = length(cross(pos[1] - pos[0], pos[2] - pos[0])) / 2; + const Vector3 Ss = (pos[0] * (t2 - t3) + pos[1] * (t3 - t1) + pos[2] * (t1 - t2)) / (2 * parametricArea); + const Vector3 St = (pos[0] * (s3 - s2) + pos[1] * (s1 - s3) + pos[2] * (s2 - s1)) / (2 * parametricArea); + const float a = dot(Ss, Ss); // E + const float b = dot(Ss, St); // F + const float c = dot(St, St); // G + // Compute eigen-values of the first fundamental form: + const float sigma1 = sqrtf(0.5f * max(0.0f, a + c - sqrtf(square(a - c) + 4 * square(b)))); // gamma uppercase, min eigenvalue. + const float sigma2 = sqrtf(0.5f * max(0.0f, a + c + sqrtf(square(a - c) + 4 * square(b)))); // gamma lowercase, max eigenvalue. + XA_ASSERT(sigma2 > sigma1 || equal(sigma1, sigma2, kEpsilon)); + // isometric: sigma1 = sigma2 = 1 + // conformal: sigma1 / sigma2 = 1 + // authalic: sigma1 * sigma2 = 1 + const float rmsStretch = sqrtf((a + c) * 0.5f); + const float rmsStretch2 = sqrtf((square(sigma1) + square(sigma2)) * 0.5f); + XA_DEBUG_ASSERT(equal(rmsStretch, rmsStretch2, 0.01f)); + XA_UNUSED(rmsStretch2); + stretchMetric += square(rmsStretch) * geometricArea; + maxStretchMetric = max(maxStretchMetric, sigma2); + if (!isZero(sigma1, 0.000001f)) { + // sigma1 is zero when geometricArea is zero. + conformalMetric += (sigma2 / sigma1) * geometricArea; + } + authalicMetric += (sigma1 * sigma2) * geometricArea; + // Accumulate total areas. + totalGeometricArea += geometricArea; + totalParametricArea += parametricArea; + } + XA_DEBUG_ASSERT(isFinite(totalParametricArea) && totalParametricArea >= 0); + XA_DEBUG_ASSERT(isFinite(totalGeometricArea) && totalGeometricArea >= 0); + XA_DEBUG_ASSERT(isFinite(stretchMetric)); + XA_DEBUG_ASSERT(isFinite(maxStretchMetric)); + XA_DEBUG_ASSERT(isFinite(conformalMetric)); + XA_DEBUG_ASSERT(isFinite(authalicMetric)); + if (totalGeometricArea > 0.0f) { + const float normFactor = sqrtf(totalParametricArea / totalGeometricArea); + stretchMetric = sqrtf(stretchMetric / totalGeometricArea) * normFactor; + maxStretchMetric *= normFactor; + conformalMetric = sqrtf(conformalMetric / totalGeometricArea); + authalicMetric = sqrtf(authalicMetric / totalGeometricArea); + } } - return quality; -} +}; struct ChartWarningFlags { @@ -5706,24 +6629,30 @@ struct ChartWarningFlags }; }; +struct ChartCtorBuffers +{ + Array<uint32_t> chartMeshIndices; + Array<uint32_t> unifiedMeshIndices; + Array<uint32_t> boundaryLoops; +}; + /// A chart is a connected set of faces with a certain topology (usually a disk). class Chart { public: - Chart(const segment::Atlas *atlas, const Mesh *originalMesh, uint32_t chartIndex, uint32_t meshId, uint32_t chartGroupId, uint32_t chartId) : m_mesh(nullptr), m_unifiedMesh(nullptr), m_isDisk(false), m_isOrtho(false), m_isPlanar(false), m_warningFlags(0), m_closedHolesCount(0), m_fixedTJunctionsCount(0) + Chart(ChartCtorBuffers &buffers, const Basis &basis, ConstArrayView<uint32_t> faces, const Mesh *originalMesh, uint32_t meshId, uint32_t chartGroupId, uint32_t chartId) : m_basis(basis), m_mesh(nullptr), m_unifiedMesh(nullptr), m_unmodifiedUnifiedMesh(nullptr), m_type(ChartType::LSCM), m_warningFlags(0), m_closedHolesCount(0), m_fixedTJunctionsCount(0) { XA_UNUSED(meshId); XA_UNUSED(chartGroupId); XA_UNUSED(chartId); - m_basis = atlas->chartBasis(chartIndex); - atlas->chartFaces(chartIndex).copyTo(m_faceArray); + m_faceArray.copyFrom(faces.data, faces.length); // Copy face indices. m_mesh = XA_NEW_ARGS(MemTag::Mesh, Mesh, originalMesh->epsilon(), m_faceArray.size() * 3, m_faceArray.size()); m_unifiedMesh = XA_NEW_ARGS(MemTag::Mesh, Mesh, originalMesh->epsilon(), m_faceArray.size() * 3, m_faceArray.size()); - Array<uint32_t> chartMeshIndices; + Array<uint32_t> &chartMeshIndices = buffers.chartMeshIndices; chartMeshIndices.resize(originalMesh->vertexCount()); chartMeshIndices.setAll(UINT32_MAX); - Array<uint32_t> unifiedMeshIndices; + Array<uint32_t> &unifiedMeshIndices = buffers.unifiedMeshIndices; unifiedMeshIndices.resize(originalMesh->vertexCount()); unifiedMeshIndices.setAll(UINT32_MAX); // Add vertices. @@ -5735,11 +6664,7 @@ public: if (unifiedMeshIndices[unifiedVertex] == (uint32_t)~0) { unifiedMeshIndices[unifiedVertex] = m_unifiedMesh->vertexCount(); XA_DEBUG_ASSERT(equal(originalMesh->position(vertex), originalMesh->position(unifiedVertex), originalMesh->epsilon())); -#if XA_SKIP_PARAMETERIZATION - m_unifiedMesh->addVertex(originalMesh->position(vertex), Vector3(0.0f), atlas->faceTexcoords(m_faceArray[f])[i]); -#else m_unifiedMesh->addVertex(originalMesh->position(vertex)); -#endif } if (chartMeshIndices[vertex] == (uint32_t)~0) { chartMeshIndices[vertex] = m_mesh->vertexCount(); @@ -5774,11 +6699,10 @@ public: } m_mesh->createBoundaries(); // For AtlasPacker::computeBoundingBox m_unifiedMesh->createBoundaries(); - m_unifiedMesh->linkBoundaries(); - m_isPlanar = meshIsPlanar(*m_unifiedMesh); - if (m_isPlanar) { - m_isDisk = true; - } else { + if (meshIsPlanar(*m_unifiedMesh)) + m_type = ChartType::Planar; + else { + m_unifiedMesh->linkBoundaries(); #if XA_DEBUG_EXPORT_OBJ_BEFORE_FIX_TJUNCTION m_unifiedMesh->writeObjFile("debug_before_fix_tjunction.obj"); #endif @@ -5791,15 +6715,14 @@ public: m_warningFlags |= ChartWarningFlags::FixTJunctionsDuplicatedEdge; if (failed) m_warningFlags |= ChartWarningFlags::FixTJunctionsFailed; - m_unifiedMesh->~Mesh(); - XA_FREE(m_unifiedMesh); + m_unmodifiedUnifiedMesh = m_unifiedMesh; m_unifiedMesh = fixedUnifiedMesh; m_unifiedMesh->createBoundaries(); m_unifiedMesh->linkBoundaries(); m_initialFaceCount = m_unifiedMesh->faceCount(); // Fixing t-junctions rewrites faces. } // See if there are any holes that need closing. - Array<uint32_t> boundaryLoops; + Array<uint32_t> &boundaryLoops = buffers.boundaryLoops; meshGetBoundaryLoops(*m_unifiedMesh, boundaryLoops); if (boundaryLoops.size() > 1) { #if XA_DEBUG_EXPORT_OBJ_CLOSE_HOLES_ERROR @@ -5810,16 +6733,21 @@ public: // - Find cuts that reduce genus. // - Find cuts to connect holes. // - Use minimal spanning trees or seamster. - Array<uint32_t> holeFaceCounts; XA_PROFILE_START(closeChartMeshHoles) - failed = !meshCloseHoles(m_unifiedMesh, boundaryLoops, m_basis.normal, holeFaceCounts); + uint32_t holeCount = 0; +#if XA_DEBUG_EXPORT_OBJ_CLOSE_HOLES_ERROR + Array<uint32_t> holeFaceCounts; + failed = !meshCloseHoles(m_unifiedMesh, boundaryLoops, m_basis.normal, &holeFaceCounts); +#else + failed = !meshCloseHoles(m_unifiedMesh, boundaryLoops, m_basis.normal, &holeCount, nullptr); +#endif XA_PROFILE_END(closeChartMeshHoles) m_unifiedMesh->createBoundaries(); m_unifiedMesh->linkBoundaries(); meshGetBoundaryLoops(*m_unifiedMesh, boundaryLoops); if (failed || boundaryLoops.size() > 1) m_warningFlags |= ChartWarningFlags::CloseHolesFailed; - m_closedHolesCount = holeFaceCounts.size(); + m_closedHolesCount = holeCount; #if XA_DEBUG_EXPORT_OBJ_CLOSE_HOLES_ERROR if (m_warningFlags & ChartWarningFlags::CloseHolesFailed) { char filename[256]; @@ -5848,18 +6776,75 @@ public: } #endif } - // Note: MeshTopology needs linked boundaries. - MeshTopology topology(m_unifiedMesh); - m_isDisk = topology.isDisk(); -#if XA_DEBUG_EXPORT_OBJ_NOT_DISK - if (!m_isDisk) { - char filename[256]; - XA_SPRINTF(filename, sizeof(filename), "debug_mesh_%03u_chartgroup_%03u_chart_%03u_not_disk.obj", meshId, chartGroupId, chartId); - m_unifiedMesh->writeObjFile(filename); + } + } + +#if XA_RECOMPUTE_CHARTS + Chart(ChartCtorBuffers &buffers, const Chart *parent, const Mesh *parentMesh, ConstArrayView<uint32_t> faces, const Vector2 *texcoords, const Mesh *originalMesh, uint32_t meshId, uint32_t chartGroupId, uint32_t chartId) : m_mesh(nullptr), m_unifiedMesh(nullptr), m_unmodifiedUnifiedMesh(nullptr), m_type(ChartType::Piecewise), m_warningFlags(0), m_closedHolesCount(0), m_fixedTJunctionsCount(0) + { + XA_UNUSED(meshId); + XA_UNUSED(chartGroupId); + XA_UNUSED(chartId); + const uint32_t faceCount = m_initialFaceCount = faces.length; + m_faceArray.resize(faceCount); + for (uint32_t i = 0; i < faceCount; i++) + m_faceArray[i] = parent->m_faceArray[faces[i]]; // Map faces to parent chart original mesh. + // Copy face indices. + m_mesh = XA_NEW_ARGS(MemTag::Mesh, Mesh, originalMesh->epsilon(), m_faceArray.size() * 3, m_faceArray.size()); + m_unifiedMesh = XA_NEW_ARGS(MemTag::Mesh, Mesh, originalMesh->epsilon(), m_faceArray.size() * 3, m_faceArray.size()); + Array<uint32_t> &chartMeshIndices = buffers.chartMeshIndices; + chartMeshIndices.resize(originalMesh->vertexCount()); + chartMeshIndices.setAll(UINT32_MAX); + Array<uint32_t> &unifiedMeshIndices = buffers.unifiedMeshIndices; + unifiedMeshIndices.resize(originalMesh->vertexCount()); + unifiedMeshIndices.setAll(UINT32_MAX); + // Add vertices. + for (uint32_t f = 0; f < faceCount; f++) { + for (uint32_t i = 0; i < 3; i++) { + const uint32_t vertex = originalMesh->vertexAt(m_faceArray[f] * 3 + i); + const uint32_t unifiedVertex = originalMesh->firstColocal(vertex); + const uint32_t parentVertex = parentMesh->vertexAt(faces[f] * 3 + i); + if (unifiedMeshIndices[unifiedVertex] == (uint32_t)~0) { + unifiedMeshIndices[unifiedVertex] = m_unifiedMesh->vertexCount(); + XA_DEBUG_ASSERT(equal(originalMesh->position(vertex), originalMesh->position(unifiedVertex), originalMesh->epsilon())); + m_unifiedMesh->addVertex(originalMesh->position(vertex), Vector3(0.0f), texcoords[parentVertex]); + } + if (chartMeshIndices[vertex] == (uint32_t)~0) { + chartMeshIndices[vertex] = m_mesh->vertexCount(); + m_chartToOriginalMap.push_back(vertex); + m_chartToUnifiedMap.push_back(unifiedMeshIndices[unifiedVertex]); + m_mesh->addVertex(originalMesh->position(vertex), Vector3(0.0f), texcoords[parentVertex]); + } + } + } + // Add faces. + for (uint32_t f = 0; f < faceCount; f++) { + uint32_t indices[3], unifiedIndices[3]; + for (uint32_t i = 0; i < 3; i++) { + const uint32_t vertex = originalMesh->vertexAt(m_faceArray[f] * 3 + i); + indices[i] = chartMeshIndices[vertex]; + unifiedIndices[i] = unifiedMeshIndices[originalMesh->firstColocal(vertex)]; + } + Mesh::AddFaceResult::Enum result = m_mesh->addFace(indices); + XA_UNUSED(result); + XA_DEBUG_ASSERT(result == Mesh::AddFaceResult::OK); +#if XA_DEBUG + // Unifying colocals may create degenerate edges. e.g. if two triangle vertices are colocal. + for (int i = 0; i < 3; i++) { + const uint32_t index1 = unifiedIndices[i]; + const uint32_t index2 = unifiedIndices[(i + 1) % 3]; + XA_DEBUG_ASSERT(index1 != index2); } #endif + result = m_unifiedMesh->addFace(unifiedIndices); + XA_UNUSED(result); + XA_DEBUG_ASSERT(result == Mesh::AddFaceResult::OK); } + m_mesh->createBoundaries(); // For AtlasPacker::computeBoundingBox + m_unifiedMesh->createBoundaries(); + m_unifiedMesh->linkBoundaries(); } +#endif ~Chart() { @@ -5871,16 +6856,19 @@ public: m_unifiedMesh->~Mesh(); XA_FREE(m_unifiedMesh); } + if (m_unmodifiedUnifiedMesh) { + m_unmodifiedUnifiedMesh->~Mesh(); + XA_FREE(m_unmodifiedUnifiedMesh); + } } const Basis &basis() const { return m_basis; } - bool isDisk() const { return m_isDisk; } - bool isOrtho() const { return m_isOrtho; } - bool isPlanar() const { return m_isPlanar; } + ChartType::Enum type() const { return m_type; } uint32_t warningFlags() const { return m_warningFlags; } uint32_t closedHolesCount() const { return m_closedHolesCount; } uint32_t fixedTJunctionsCount() const { return m_fixedTJunctionsCount; } - const ParameterizationQuality ¶mQuality() const { return m_paramQuality; } + const Quality &quality() const { return m_quality; } + uint32_t initialFaceCount() const { return m_initialFaceCount; } #if XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION const Array<uint32_t> ¶mFlippedFaces() const { return m_paramFlippedFaces; } #endif @@ -5889,26 +6877,31 @@ public: Mesh *mesh() { return m_mesh; } const Mesh *unifiedMesh() const { return m_unifiedMesh; } Mesh *unifiedMesh() { return m_unifiedMesh; } + const Mesh *unmodifiedUnifiedMesh() const { return m_unmodifiedUnifiedMesh; } uint32_t mapChartVertexToOriginalVertex(uint32_t i) const { return m_chartToOriginalMap[i]; } - void evaluateOrthoParameterizationQuality() + void evaluateOrthoQuality(UniformGrid2 &boundaryGrid) { XA_PROFILE_START(parameterizeChartsEvaluateQuality) - m_paramQuality = calculateParameterizationQuality(m_unifiedMesh, m_initialFaceCount, nullptr); + m_quality.computeBoundaryIntersection(m_unifiedMesh, boundaryGrid); + m_quality.computeFlippedFaces(m_unifiedMesh, m_initialFaceCount, nullptr); + m_quality.computeMetrics(m_unifiedMesh, m_initialFaceCount); XA_PROFILE_END(parameterizeChartsEvaluateQuality) // Use orthogonal parameterization if quality is acceptable. - if (!m_paramQuality.boundaryIntersection && m_paramQuality.geometricArea > 0.0f && m_paramQuality.stretchMetric <= 1.1f && m_paramQuality.maxStretchMetric <= 1.25f) - m_isOrtho = true; + if (!m_quality.boundaryIntersection && m_quality.totalGeometricArea > 0.0f && m_quality.stretchMetric <= 1.1f && m_quality.maxStretchMetric <= 1.25f) + m_type = ChartType::Ortho; } - void evaluateParameterizationQuality() + void evaluateQuality(UniformGrid2 &boundaryGrid) { XA_PROFILE_START(parameterizeChartsEvaluateQuality) + m_quality.computeBoundaryIntersection(m_unifiedMesh, boundaryGrid); #if XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION - m_paramQuality = calculateParameterizationQuality(m_unifiedMesh, m_initialFaceCount, &m_paramFlippedFaces); + m_quality.computeFlippedFaces(m_unifiedMesh, m_initialFaceCount, &m_paramFlippedFaces); #else - m_paramQuality = calculateParameterizationQuality(m_unifiedMesh, m_initialFaceCount, nullptr); + m_quality.computeFlippedFaces(m_unifiedMesh, m_initialFaceCount, nullptr); #endif + // Don't need to call computeMetrics here, that's only used in evaluateOrthoQuality to determine if quality is acceptable enough to use ortho projection. XA_PROFILE_END(parameterizeChartsEvaluateQuality) } @@ -5920,16 +6913,6 @@ public: m_mesh->texcoord(v) = m_unifiedMesh->texcoord(m_chartToUnifiedMap[v]); } - float computeSurfaceArea() const - { - return m_mesh->computeSurfaceArea(); - } - - float computeParametricArea() const - { - return m_mesh->computeParametricArea(); - } - Vector2 computeParametricBounds() const { Vector2 minCorner(FLT_MAX, FLT_MAX); @@ -5946,7 +6929,8 @@ private: Basis m_basis; Mesh *m_mesh; Mesh *m_unifiedMesh; - bool m_isDisk, m_isOrtho, m_isPlanar; + Mesh *m_unmodifiedUnifiedMesh; // Unified mesh before fixing t-junctions. Null if no t-junctions were fixed + ChartType::Enum m_type; uint32_t m_warningFlags; uint32_t m_initialFaceCount; // Before fixing T-junctions and/or closing holes. uint32_t m_closedHolesCount, m_fixedTJunctionsCount; @@ -5959,7 +6943,7 @@ private: Array<uint32_t> m_chartToUnifiedMap; - ParameterizationQuality m_paramQuality; + Quality m_quality; #if XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION Array<uint32_t> m_paramFlippedFaces; #endif @@ -5967,12 +6951,13 @@ private: struct CreateChartTaskArgs { - const segment::Atlas *atlas; const Mesh *mesh; - uint32_t chartIndex; // In the atlas. + const Basis *basis; + ConstArrayView<uint32_t> faces; uint32_t meshId; uint32_t chartGroupId; uint32_t chartId; + ThreadLocal<ChartCtorBuffers> *chartBuffers; Chart **chart; }; @@ -5980,7 +6965,7 @@ static void runCreateChartTask(void *userData) { XA_PROFILE_START(createChartMeshesThread) auto args = (CreateChartTaskArgs *)userData; - *(args->chart) = XA_NEW_ARGS(MemTag::Default, Chart, args->atlas, args->mesh, args->chartIndex, args->meshId, args->chartGroupId, args->chartId); + *(args->chart) = XA_NEW_ARGS(MemTag::Default, Chart, args->chartBuffers->get(), *(args->basis), args->faces, args->mesh, args->meshId, args->chartGroupId, args->chartId); XA_PROFILE_END(createChartMeshesThread) } @@ -5988,6 +6973,7 @@ struct ParameterizeChartTaskArgs { Chart *chart; ParameterizeFunc func; + ThreadLocal<UniformGrid2> *boundaryGrid; }; static void runParameterizeChartTask(void *userData) @@ -5995,24 +6981,26 @@ static void runParameterizeChartTask(void *userData) auto args = (ParameterizeChartTaskArgs *)userData; Mesh *mesh = args->chart->unifiedMesh(); XA_PROFILE_START(parameterizeChartsOrthogonal) -#if 1 - computeOrthogonalProjectionMap(mesh); -#else - for (uint32_t i = 0; i < vertexCount; i++) - mesh->texcoord(i) = Vector2(dot(args->chart->basis().tangent, mesh->position(i)), dot(args->chart->basis().bitangent, mesh->position(i))); -#endif + { + // Project vertices to plane. + const uint32_t vertexCount = mesh->vertexCount(); + const Basis &basis = args->chart->basis(); + for (uint32_t i = 0; i < vertexCount; i++) + mesh->texcoord(i) = Vector2(dot(basis.tangent, mesh->position(i)), dot(basis.bitangent, mesh->position(i))); + } XA_PROFILE_END(parameterizeChartsOrthogonal) - args->chart->evaluateOrthoParameterizationQuality(); - if (!args->chart->isOrtho() && !args->chart->isPlanar()) { + // Computing charts checks for flipped triangles and boundary intersection. Don't need to do that again here if chart is planar. + if (args->chart->type() != ChartType::Planar) + args->chart->evaluateOrthoQuality(args->boundaryGrid->get()); + if (args->chart->type() == ChartType::LSCM) { XA_PROFILE_START(parameterizeChartsLSCM) if (args->func) args->func(&mesh->position(0).x, &mesh->texcoord(0).x, mesh->vertexCount(), mesh->indices(), mesh->indexCount()); - else if (args->chart->isDisk()) + else computeLeastSquaresConformalMap(mesh); XA_PROFILE_END(parameterizeChartsLSCM) - args->chart->evaluateParameterizationQuality(); + args->chart->evaluateQuality(args->boundaryGrid->get()); } - // @@ Check that parameterization quality is above a certain threshold. // Transfer parameterization from unified mesh to chart mesh. args->chart->transferParameterization(); } @@ -6021,27 +7009,33 @@ static void runParameterizeChartTask(void *userData) class ChartGroup { public: - ChartGroup(uint32_t id, const Mesh *sourceMesh, uint32_t faceGroup) : m_sourceId(sourceMesh->id()), m_id(id), m_isVertexMap(faceGroup == UINT32_MAX), m_paramAddedChartsCount(0), m_paramDeletedChartsCount(0) + ChartGroup(uint32_t id, const Mesh *sourceMesh, uint16_t faceGroup) : m_sourceId(sourceMesh->id()), m_id(id), m_isVertexMap(faceGroup == Mesh::kInvalidFaceGroup), m_paramAddedChartsCount(0), m_paramDeletedChartsCount(0) { // Create new mesh from the source mesh, using faces that belong to this group. const uint32_t sourceFaceCount = sourceMesh->faceCount(); - for (uint32_t f = 0; f < sourceFaceCount; f++) { - if (sourceMesh->faceGroupAt(f) == faceGroup) - m_faceToSourceFaceMap.push_back(f); + if (!m_isVertexMap) { + m_faceToSourceFaceMap.reserve(sourceMesh->faceGroupFaceCount(faceGroup)); + for (Mesh::GroupFaceIterator it(sourceMesh, faceGroup); !it.isDone(); it.advance()) + m_faceToSourceFaceMap.push_back(it.face()); + } else { + for (uint32_t f = 0; f < sourceFaceCount; f++) { + if (sourceMesh->faceGroupAt(f) == faceGroup) + m_faceToSourceFaceMap.push_back(f); + } } // Only initial meshes have face groups and ignored faces. The only flag we care about is HasNormals. const uint32_t faceCount = m_faceToSourceFaceMap.size(); - m_mesh = XA_NEW_ARGS(MemTag::Mesh, Mesh, sourceMesh->epsilon(), faceCount * 3, faceCount, sourceMesh->flags() & MeshFlags::HasNormals); XA_DEBUG_ASSERT(faceCount > 0); - Array<uint32_t> meshIndices; - meshIndices.resize(sourceMesh->vertexCount()); - meshIndices.setAll((uint32_t)~0); + const uint32_t approxVertexCount = faceCount * 3; + m_mesh = XA_NEW_ARGS(MemTag::Mesh, Mesh, sourceMesh->epsilon(), approxVertexCount, faceCount, sourceMesh->flags() & MeshFlags::HasNormals); + m_vertexToSourceVertexMap.reserve(approxVertexCount); + HashMap<uint32_t> sourceVertexToVertexMap(MemTag::Mesh, approxVertexCount); for (uint32_t f = 0; f < faceCount; f++) { const uint32_t face = m_faceToSourceFaceMap[f]; for (uint32_t i = 0; i < 3; i++) { const uint32_t vertex = sourceMesh->vertexAt(face * 3 + i); - if (meshIndices[vertex] == (uint32_t)~0) { - meshIndices[vertex] = m_mesh->vertexCount(); + if (sourceVertexToVertexMap.get(vertex) == UINT32_MAX) { + sourceVertexToVertexMap.add(vertex); m_vertexToSourceVertexMap.push_back(vertex); Vector3 normal(0.0f); if (sourceMesh->flags() & MeshFlags::HasNormals) @@ -6056,8 +7050,8 @@ public: uint32_t indices[3]; for (uint32_t i = 0; i < 3; i++) { const uint32_t vertex = sourceMesh->vertexAt(face * 3 + i); - XA_DEBUG_ASSERT(meshIndices[vertex] != (uint32_t)~0); - indices[i] = meshIndices[vertex]; + indices[i] = sourceVertexToVertexMap.get(vertex); + XA_DEBUG_ASSERT(indices[i] != UINT32_MAX); } // Don't copy flags, it doesn't matter if a face is ignored after this point. All ignored faces get their own vertex map (m_isVertexMap) ChartGroup. // Don't hash edges if m_isVertexMap, they may be degenerate. @@ -6068,7 +7062,6 @@ public: if (!m_isVertexMap) { m_mesh->createColocals(); m_mesh->createBoundaries(); - m_mesh->linkBoundaries(); } #if XA_DEBUG_EXPORT_OBJ_CHART_GROUPS char filename[256]; @@ -6083,14 +7076,14 @@ public: { m_mesh->~Mesh(); XA_FREE(m_mesh); - for (uint32_t i = 0; i < m_chartArray.size(); i++) { - m_chartArray[i]->~Chart(); - XA_FREE(m_chartArray[i]); + for (uint32_t i = 0; i < m_charts.size(); i++) { + m_charts[i]->~Chart(); + XA_FREE(m_charts[i]); } } - uint32_t chartCount() const { return m_chartArray.size(); } - Chart *chartAt(uint32_t i) const { return m_chartArray[i]; } + uint32_t chartCount() const { return m_charts.size(); } + Chart *chartAt(uint32_t i) const { return m_charts[i]; } uint32_t paramAddedChartsCount() const { return m_paramAddedChartsCount; } uint32_t paramDeletedChartsCount() const { return m_paramDeletedChartsCount; } bool isVertexMap() const { return m_isVertexMap; } @@ -6158,40 +7151,41 @@ public: - emphasize roundness metrics to prevent those cases. - If interior self-overlaps: preserve boundary parameterization and use mean-value map. */ - void computeCharts(TaskScheduler *taskScheduler, const ChartOptions &options) + void computeCharts(TaskScheduler *taskScheduler, const ChartOptions &options, segment::Atlas &atlas, ThreadLocal<ChartCtorBuffers> *chartBuffers) { m_chartOptions = options; // This function may be called multiple times, so destroy existing charts. - for (uint32_t i = 0; i < m_chartArray.size(); i++) { - m_chartArray[i]->~Chart(); - XA_FREE(m_chartArray[i]); + for (uint32_t i = 0; i < m_charts.size(); i++) { + m_charts[i]->~Chart(); + XA_FREE(m_charts[i]); } - m_chartArray.clear(); + m_charts.clear(); #if XA_DEBUG_SINGLE_CHART Array<uint32_t> chartFaces; chartFaces.resize(m_mesh->faceCount()); for (uint32_t i = 0; i < chartFaces.size(); i++) chartFaces[i] = i; Chart *chart = XA_NEW_ARGS(MemTag::Default, Chart, m_mesh, chartFaces, m_sourceId, m_id, 0); - m_chartArray.push_back(chart); + m_charts.push_back(chart); #else XA_PROFILE_START(buildAtlas) - segment::Atlas atlas(m_mesh, nullptr, options); + atlas.reset(m_sourceId, m_id, m_mesh, options); buildAtlas(atlas, options); XA_PROFILE_END(buildAtlas) const uint32_t chartCount = atlas.chartCount(); - m_chartArray.resize(chartCount); + m_charts.resize(chartCount); Array<CreateChartTaskArgs> taskArgs; taskArgs.resize(chartCount); for (uint32_t i = 0; i < chartCount; i++) { CreateChartTaskArgs &args = taskArgs[i]; - args.atlas = &atlas; + args.basis = &atlas.chartBasis(i); + args.faces = atlas.chartFaces(i); args.mesh = m_mesh; - args.chartIndex = i; args.meshId = m_sourceId; args.chartGroupId = m_id; args.chartId = i; - args.chart = &m_chartArray[i]; + args.chartBuffers = chartBuffers; + args.chart = &m_charts[i]; } XA_PROFILE_START(createChartMeshesReal) TaskGroupHandle taskGroup = taskScheduler->createTaskGroup(chartCount); @@ -6225,26 +7219,22 @@ public: #endif } - void parameterizeCharts(TaskScheduler *taskScheduler, ParameterizeFunc func) - { - const uint32_t chartCount = m_chartArray.size(); -#if XA_SKIP_PARAMETERIZATION - XA_UNUSED(taskScheduler); - XA_UNUSED(func); - for (uint32_t i = 0; i < chartCount; i++) { - Chart *chart = m_chartArray[i]; - chart->evaluateOrthoParameterizationQuality(); - chart->evaluateParameterizationQuality(); - chart->transferParameterization(); - } +#if XA_RECOMPUTE_CHARTS + void parameterizeCharts(TaskScheduler *taskScheduler, ParameterizeFunc func, ThreadLocal<UniformGrid2> *boundaryGrid, ThreadLocal<ChartCtorBuffers> *chartBuffers, ThreadLocal<PiecewiseParam> *piecewiseParam) #else + void parameterizeCharts(TaskScheduler* taskScheduler, ParameterizeFunc func, ThreadLocal<UniformGrid2>* boundaryGrid, ThreadLocal<ChartCtorBuffers>* /*chartBuffers*/) +#endif + { + m_paramAddedChartsCount = 0; + const uint32_t chartCount = m_charts.size(); Array<ParameterizeChartTaskArgs> taskArgs; taskArgs.resize(chartCount); TaskGroupHandle taskGroup = taskScheduler->createTaskGroup(chartCount); for (uint32_t i = 0; i < chartCount; i++) { ParameterizeChartTaskArgs &args = taskArgs[i]; - args.chart = m_chartArray[i]; + args.chart = m_charts[i]; args.func = func; + args.boundaryGrid = boundaryGrid; Task task; task.userData = &args; task.func = runParameterizeChartTask; @@ -6255,67 +7245,65 @@ public: // Find charts with invalid parameterizations. Array<Chart *> invalidCharts; for (uint32_t i = 0; i < chartCount; i++) { - Chart *chart = m_chartArray[i]; - const ParameterizationQuality &quality = chart->paramQuality(); + Chart *chart = m_charts[i]; + const Quality &quality = chart->quality(); if (quality.boundaryIntersection || quality.flippedTriangleCount > 0) invalidCharts.push_back(chart); } if (invalidCharts.isEmpty()) return; // Recompute charts with invalid parameterizations. - Array<uint32_t> meshFaces; + PiecewiseParam &pp = piecewiseParam->get(); for (uint32_t i = 0; i < invalidCharts.size(); i++) { Chart *invalidChart = invalidCharts[i]; - const Mesh *invalidMesh = invalidChart->mesh(); - const uint32_t faceCount = invalidMesh->faceCount(); - meshFaces.resize(faceCount); - float invalidChartArea = 0.0f; - for (uint32_t j = 0; j < faceCount; j++) { - meshFaces[j] = invalidChart->mapFaceToSourceFace(j); - invalidChartArea += invalidMesh->faceArea(j); - } - ChartOptions options = m_chartOptions; - options.maxChartArea = invalidChartArea * 0.2f; - options.maxThreshold = 0.25f; - options.maxIterations = 3; - segment::Atlas atlas(m_mesh, &meshFaces, options); - buildAtlas(atlas, options); - for (uint32_t j = 0; j < atlas.chartCount(); j++) { - Chart *chart = XA_NEW_ARGS(MemTag::Default, Chart, &atlas, m_mesh, j, m_sourceId, m_id, m_chartArray.size()); - m_chartArray.push_back(chart); - m_paramAddedChartsCount++; + // Fixing t-junctions rewrites unified mesh faces, and we need to map faces back to input mesh. So use the unmodified unified mesh. + const Mesh *invalidMesh = invalidChart->unmodifiedUnifiedMesh(); + uint32_t faceCount = 0; + if (invalidMesh) { + faceCount = invalidMesh->faceCount(); + } else { + invalidMesh = invalidChart->unifiedMesh(); + faceCount = invalidChart->initialFaceCount(); // Not invalidMesh->faceCount(). Don't want faces added by hole closing. } + pp.reset(invalidMesh, faceCount); #if XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS char filename[256]; - XA_SPRINTF(filename, sizeof(filename), "debug_mesh_%03u_chartgroup_%03u_recomputed_chart_%u.obj", m_sourceId, m_id, i); + XA_SPRINTF(filename, sizeof(filename), "debug_mesh_%03u_chartgroup_%03u_recomputed_chart_%03u.obj", m_sourceId, m_id, m_paramAddedChartsCount); FILE *file; XA_FOPEN(file, filename, "w"); - if (file) { - m_mesh->writeObjVertices(file); - for (uint32_t j = 0; j < builder.chartCount(); j++) { - fprintf(file, "o chart_%04d\n", j); + uint32_t subChartIndex = 0; +#endif + for (;;) { + if (!pp.computeChart()) + break; + Chart *chart = XA_NEW_ARGS(MemTag::Default, Chart, chartBuffers->get(), invalidChart, invalidMesh, pp.chartFaces(), pp.texcoords(), m_mesh, m_sourceId, m_id, m_charts.size()); + m_charts.push_back(chart); +#if XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS + if (file) { + for (uint32_t j = 0; j < invalidMesh->vertexCount(); j++) { + fprintf(file, "v %g %g %g\n", invalidMesh->position(j).x, invalidMesh->position(j).y, invalidMesh->position(j).z); + fprintf(file, "vt %g %g\n", pp.texcoords()[j].x, pp.texcoords()[j].y); + } + fprintf(file, "o chart%03u\n", subChartIndex); fprintf(file, "s off\n"); - const Array<uint32_t> &faces = builder.chartFaces(j); - for (uint32_t f = 0; f < faces.size(); f++) - m_mesh->writeObjFace(file, faces[f]); + for (uint32_t f = 0; f < pp.chartFaces().length; f++) { + fprintf(file, "f "); + const uint32_t face = pp.chartFaces()[f]; + for (uint32_t j = 0; j < 3; j++) { + const uint32_t index = invalidMesh->vertexCount() * subChartIndex + invalidMesh->vertexAt(face * 3 + j) + 1; // 1-indexed + fprintf(file, "%d/%d/%c", index, index, j == 2 ? '\n' : ' '); + } + } } - fclose(file); + subChartIndex++; +#endif + m_paramAddedChartsCount++; } +#if XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS + if (file) + fclose(file); #endif } - // Parameterize the new charts. - taskGroup = taskScheduler->createTaskGroup(m_chartArray.size() - chartCount); - taskArgs.resize(m_chartArray.size() - chartCount); - for (uint32_t i = chartCount; i < m_chartArray.size(); i++) { - ParameterizeChartTaskArgs &args = taskArgs[i - chartCount]; - args.chart = m_chartArray[i]; - args.func = func; - Task task; - task.userData = &args; - task.func = runParameterizeChartTask; - taskScheduler->run(taskGroup, task); - } - taskScheduler->wait(&taskGroup); // Remove and delete the invalid charts. for (uint32_t i = 0; i < invalidCharts.size(); i++) { Chart *chart = invalidCharts[i]; @@ -6325,7 +7313,6 @@ public: m_paramDeletedChartsCount++; } #endif // XA_RECOMPUTE_CHARTS -#endif // XA_SKIP_PARAMETERIZATION } private: @@ -6343,19 +7330,18 @@ private: atlas.resetCharts(); // Restart process growing charts in parallel. uint32_t iteration = 0; - while (true) { - if (!atlas.growCharts(options.maxThreshold)) { - // If charts cannot grow more: fill holes, merge charts, relocate seeds and start new iteration. - atlas.fillHoles(options.maxThreshold * 0.5f); + for (;;) { + atlas.growCharts(options.maxThreshold); + // When charts cannot grow more: fill holes, merge charts, relocate seeds and start new iteration. + atlas.fillHoles(options.maxThreshold * 0.5f); #if XA_MERGE_CHARTS - atlas.mergeCharts(); + atlas.mergeCharts(); #endif - if (++iteration == options.maxIterations) - break; - if (!atlas.relocateSeeds()) - break; - atlas.resetCharts(); - } + if (++iteration == options.maxIterations) + break; + if (!atlas.relocateSeeds()) + break; + atlas.resetCharts(); } // Make sure no holes are left! XA_DEBUG_ASSERT(atlas.facesLeft() == 0); @@ -6363,9 +7349,9 @@ private: void removeChart(const Chart *chart) { - for (uint32_t i = 0; i < m_chartArray.size(); i++) { - if (m_chartArray[i] == chart) { - m_chartArray.removeAt(i); + for (uint32_t i = 0; i < m_charts.size(); i++) { + if (m_charts[i] == chart) { + m_charts.removeAt(i); return; } } @@ -6376,7 +7362,7 @@ private: Mesh *m_mesh; Array<uint32_t> m_faceToSourceFaceMap; // List of faces of the source mesh that belong to this chart group. Array<uint32_t> m_vertexToSourceVertexMap; // Map vertices of the mesh to vertices of the source mesh. - Array<Chart *> m_chartArray; + Array<Chart *> m_charts; ChartOptions m_chartOptions; uint32_t m_paramAddedChartsCount; // Number of new charts added by recomputing charts with invalid parameterizations. uint32_t m_paramDeletedChartsCount; // Number of charts with invalid parameterizations that were deleted, after charts were recomputed. @@ -6384,7 +7370,7 @@ private: struct CreateChartGroupTaskArgs { - uint32_t faceGroup; + uint16_t faceGroup; uint32_t groupId; const Mesh *mesh; ChartGroup **chartGroup; @@ -6402,6 +7388,8 @@ struct ComputeChartsTaskArgs { TaskScheduler *taskScheduler; ChartGroup *chartGroup; + ThreadLocal<segment::Atlas> *atlas; + ThreadLocal<ChartCtorBuffers> *chartBuffers; const ChartOptions *options; Progress *progress; }; @@ -6412,7 +7400,7 @@ static void runComputeChartsJob(void *userData) if (args->progress->cancel) return; XA_PROFILE_START(computeChartsThread) - args->chartGroup->computeCharts(args->taskScheduler, *args->options); + args->chartGroup->computeCharts(args->taskScheduler, *args->options, args->atlas->get(), args->chartBuffers); XA_PROFILE_END(computeChartsThread) args->progress->value++; args->progress->update(); @@ -6423,6 +7411,11 @@ struct ParameterizeChartsTaskArgs TaskScheduler *taskScheduler; ChartGroup *chartGroup; ParameterizeFunc func; + ThreadLocal<UniformGrid2> *boundaryGrid; + ThreadLocal<ChartCtorBuffers> *chartBuffers; +#if XA_RECOMPUTE_CHARTS + ThreadLocal<PiecewiseParam> *piecewiseParam; +#endif Progress *progress; }; @@ -6432,7 +7425,11 @@ static void runParameterizeChartsJob(void *userData) if (args->progress->cancel) return; XA_PROFILE_START(parameterizeChartsThread) - args->chartGroup->parameterizeCharts(args->taskScheduler, args->func); +#if XA_RECOMPUTE_CHARTS + args->chartGroup->parameterizeCharts(args->taskScheduler, args->func, args->boundaryGrid, args->chartBuffers, args->piecewiseParam); +#else + args->chartGroup->parameterizeCharts(args->taskScheduler, args->func, args->boundaryGrid, args->chartBuffers); +#endif XA_PROFILE_END(parameterizeChartsThread) args->progress->value++; args->progress->update(); @@ -6482,31 +7479,17 @@ public: // This function is thread safe. void addMesh(TaskScheduler *taskScheduler, const Mesh *mesh) { - // Get list of face groups. - const uint32_t faceCount = mesh->faceCount(); - Array<uint32_t> faceGroups; - for (uint32_t f = 0; f < faceCount; f++) { - const uint32_t group = mesh->faceGroupAt(f); - bool exists = false; - for (uint32_t g = 0; g < faceGroups.size(); g++) { - if (faceGroups[g] == group) { - exists = true; - break; - } - } - if (!exists) - faceGroups.push_back(group); - } // Create one chart group per face group. + // If there's any ignored faces in the mesh, create an extra face group for that (vertex map). // Chart group creation is slow since it copies a chunk of the source mesh, so use tasks. Array<ChartGroup *> chartGroups; - chartGroups.resize(faceGroups.size()); + chartGroups.resize(mesh->faceGroupCount() + (mesh->ignoredFaceCount() > 0 ? 1 : 0)); Array<CreateChartGroupTaskArgs> taskArgs; taskArgs.resize(chartGroups.size()); for (uint32_t g = 0; g < chartGroups.size(); g++) { CreateChartGroupTaskArgs &args = taskArgs[g]; args.chartGroup = &chartGroups[g]; - args.faceGroup = faceGroups[g]; + args.faceGroup = uint16_t(g < mesh->faceGroupCount() ? g : Mesh::kInvalidFaceGroup); args.groupId = g; args.mesh = mesh; } @@ -6561,6 +7544,8 @@ public: chartGroupCount++; } Progress progress(ProgressCategory::ComputeCharts, progressFunc, progressUserData, chartGroupCount); + ThreadLocal<segment::Atlas> atlas; + ThreadLocal<ChartCtorBuffers> chartBuffers; Array<ComputeChartsTaskArgs> taskArgs; taskArgs.reserve(chartGroupCount); for (uint32_t i = 0; i < m_chartGroups.size(); i++) { @@ -6568,6 +7553,8 @@ public: ComputeChartsTaskArgs args; args.taskScheduler = taskScheduler; args.chartGroup = m_chartGroups[i]; + args.atlas = &atlas; + args.chartBuffers = &chartBuffers; args.options = &options; args.progress = &progress; taskArgs.push_back(args); @@ -6605,6 +7592,11 @@ public: chartGroupCount++; } Progress progress(ProgressCategory::ParameterizeCharts, progressFunc, progressUserData, chartGroupCount); + ThreadLocal<UniformGrid2> boundaryGrid; // For Quality boundary intersection. + ThreadLocal<ChartCtorBuffers> chartBuffers; +#if XA_RECOMPUTE_CHARTS + ThreadLocal<PiecewiseParam> piecewiseParam; +#endif Array<ParameterizeChartsTaskArgs> taskArgs; taskArgs.reserve(chartGroupCount); for (uint32_t i = 0; i < m_chartGroups.size(); i++) { @@ -6613,6 +7605,11 @@ public: args.taskScheduler = taskScheduler; args.chartGroup = m_chartGroups[i]; args.func = func; + args.boundaryGrid = &boundaryGrid; + args.chartBuffers = &chartBuffers; +#if XA_RECOMPUTE_CHARTS + args.piecewiseParam = &piecewiseParam; +#endif args.progress = &progress; taskArgs.push_back(args); } @@ -6646,55 +7643,6 @@ private: namespace pack { -#if XA_DEBUG_EXPORT_ATLAS_IMAGES -const uint8_t TGA_TYPE_RGB = 2; -const uint8_t TGA_ORIGIN_UPPER = 0x20; - -#pragma pack(push, 1) -struct TgaHeader -{ - uint8_t id_length; - uint8_t colormap_type; - uint8_t image_type; - uint16_t colormap_index; - uint16_t colormap_length; - uint8_t colormap_size; - uint16_t x_origin; - uint16_t y_origin; - uint16_t width; - uint16_t height; - uint8_t pixel_size; - uint8_t flags; - enum { Size = 18 }; -}; -#pragma pack(pop) - -static void WriteTga(const char *filename, const uint8_t *data, uint32_t width, uint32_t height) -{ - XA_DEBUG_ASSERT(sizeof(TgaHeader) == TgaHeader::Size); - FILE *f; - XA_FOPEN(f, filename, "wb"); - if (!f) - return; - TgaHeader tga; - tga.id_length = 0; - tga.colormap_type = 0; - tga.image_type = TGA_TYPE_RGB; - tga.colormap_index = 0; - tga.colormap_length = 0; - tga.colormap_size = 0; - tga.x_origin = 0; - tga.y_origin = 0; - tga.width = (uint16_t)width; - tga.height = (uint16_t)height; - tga.pixel_size = 24; - tga.flags = TGA_ORIGIN_UPPER; - fwrite(&tga, sizeof(TgaHeader), 1, f); - fwrite(data, sizeof(uint8_t), width * height * 3, f); - fclose(f); -} -#endif - class AtlasImage { public: @@ -6728,13 +7676,13 @@ public: const int xx = x + offset_x; if (xx >= 0 && xx < atlas_w && yy < atlas_h) { const uint32_t dataOffset = xx + yy * m_width; - if (image->bitAt(x, y)) { + if (image->get(x, y)) { XA_DEBUG_ASSERT(m_data[dataOffset] == 0); m_data[dataOffset] = chartIndex | kImageHasChartIndexBit; - } else if (imageBilinear && imageBilinear->bitAt(x, y)) { + } else if (imageBilinear && imageBilinear->get(x, y)) { XA_DEBUG_ASSERT(m_data[dataOffset] == 0); m_data[dataOffset] = chartIndex | kImageHasChartIndexBit | kImageIsBilinearBit; - } else if (imagePadding && imagePadding->bitAt(x, y)) { + } else if (imagePadding && imagePadding->get(x, y)) { XA_DEBUG_ASSERT(m_data[dataOffset] == 0); m_data[dataOffset] = chartIndex | kImageHasChartIndexBit | kImageIsPaddingBit; } @@ -6807,6 +7755,8 @@ struct Chart bool allowRotate; // bounding box Vector2 majorAxis, minorAxis, minCorner, maxCorner; + // Mesh only + const Array<uint32_t> *boundaryEdges; // UvMeshChart only Array<uint32_t> faces; @@ -6816,6 +7766,7 @@ struct Chart struct AddChartTaskArgs { + ThreadLocal<BoundingBox2D> *boundingBox; param::Chart *paramChart; Chart *chart; // out }; @@ -6834,102 +7785,32 @@ static void runAddChartTask(void *userData) chart->material = 0; chart->indexCount = mesh->indexCount(); chart->indices = mesh->indices(); - chart->parametricArea = paramChart->computeParametricArea(); + chart->parametricArea = mesh->computeParametricArea(); if (chart->parametricArea < kAreaEpsilon) { // When the parametric area is too small we use a rough approximation to prevent divisions by very small numbers. const Vector2 bounds = paramChart->computeParametricBounds(); chart->parametricArea = bounds.x * bounds.y; } - chart->surfaceArea = paramChart->computeSurfaceArea(); + chart->surfaceArea = mesh->computeSurfaceArea(); chart->vertices = mesh->texcoords(); chart->vertexCount = mesh->vertexCount(); chart->allowRotate = true; - // Compute list of boundary vertices. - Array<Vector2> boundary; - boundary.reserve(16); + chart->boundaryEdges = &mesh->boundaryEdges(); + // Compute bounding box of chart. + BoundingBox2D &bb = args->boundingBox->get(); + bb.clear(); for (uint32_t v = 0; v < chart->vertexCount; v++) { if (mesh->isBoundaryVertex(v)) - boundary.push_back(mesh->texcoord(v)); + bb.appendBoundaryVertex(mesh->texcoord(v)); } - XA_DEBUG_ASSERT(boundary.size() > 0); - // Compute bounding box of chart. - static thread_local BoundingBox2D boundingBox; - boundingBox.compute(boundary.data(), boundary.size(), mesh->texcoords(), mesh->vertexCount()); - chart->majorAxis = boundingBox.majorAxis(); - chart->minorAxis = boundingBox.minorAxis(); - chart->minCorner = boundingBox.minCorner(); - chart->maxCorner = boundingBox.maxCorner(); + bb.compute(mesh->texcoords(), mesh->vertexCount()); + chart->majorAxis = bb.majorAxis; + chart->minorAxis = bb.minorAxis; + chart->minCorner = bb.minCorner; + chart->maxCorner = bb.maxCorner; XA_PROFILE_END(packChartsAddChartsThread) } -struct FindChartLocationBruteForceTaskArgs -{ - std::atomic<bool> *finished; // One of the tasks found a location that doesn't expand the atlas. - Vector2i startPosition; - const BitImage *atlasBitImage; - const BitImage *chartBitImage; - const BitImage *chartBitImageRotated; - int w, h; - bool blockAligned, allowRotate; - uint32_t maxResolution; - // out - bool best_insideAtlas; - int best_metric, best_x, best_y, best_w, best_h, best_r; -}; - -static void runFindChartLocationBruteForceTask(void *userData) -{ - XA_PROFILE_START(packChartsFindLocationThread) - auto args = (FindChartLocationBruteForceTaskArgs *)userData; - args->best_metric = INT_MAX; - if (args->finished->load()) - return; - // Try two different orientations. - for (int r = 0; r < 2; r++) { - if (args->finished->load()) - break; - int cw = args->chartBitImage->width(); - int ch = args->chartBitImage->height(); - if (r == 1) { - if (args->allowRotate) - swap(cw, ch); - else - break; - } - const int y = args->startPosition.y; - const int stepSize = args->blockAligned ? 4 : 1; - for (int x = args->startPosition.x; x <= args->w + stepSize; x += stepSize) { - if (args->maxResolution > 0 && (x > (int)args->maxResolution - cw || y > (int)args->maxResolution - ch)) - continue; - if (args->finished->load()) - break; - // Early out if metric not better. - const int area = max(args->w, x + cw) * max(args->h, y + ch); - const int extents = max(max(args->w, x + cw), max(args->h, y + ch)); - const int metric = extents * extents + area; - if (metric > args->best_metric) - continue; - // If metric is the same, pick the one closest to the origin. - if (metric == args->best_metric && max(x, y) >= max(args->best_x, args->best_y)) - continue; - if (!args->atlasBitImage->canBlit(r == 1 ? *(args->chartBitImageRotated) : *(args->chartBitImage), x, y)) - continue; - args->best_metric = metric; - args->best_insideAtlas = area == args->w * args->h; - args->best_x = x; - args->best_y = y; - args->best_w = cw; - args->best_h = ch; - args->best_r = r; - if (args->best_insideAtlas) { - args->finished->store(true); - break; - } - } - } - XA_PROFILE_END(packChartsFindLocationThread) -} - struct Atlas { ~Atlas() @@ -6975,6 +7856,7 @@ struct Atlas taskArgs.resize(chartCount); TaskGroupHandle taskGroup = taskScheduler->createTaskGroup(chartCount); uint32_t chartIndex = 0; + ThreadLocal<BoundingBox2D> boundingBox; for (uint32_t i = 0; i < chartGroupsCount; i++) { const param::ChartGroup *chartGroup = paramAtlas->chartGroupAt(i); if (chartGroup->isVertexMap()) @@ -6982,6 +7864,7 @@ struct Atlas const uint32_t count = chartGroup->chartCount(); for (uint32_t j = 0; j < count; j++) { AddChartTaskArgs &args = taskArgs[chartIndex]; + args.boundingBox = &boundingBox; args.paramChart = chartGroup->chartAt(j); Task task; task.userData = &taskArgs[chartIndex]; @@ -7000,8 +7883,6 @@ struct Atlas void addUvMeshCharts(UvMeshInstance *mesh) { BitArray vertexUsed(mesh->texcoords.size()); - Array<Vector2> boundary; - boundary.reserve(16); BoundingBox2D boundingBox; for (uint32_t c = 0; c < mesh->mesh->charts.size(); c++) { UvMeshChart *uvChart = mesh->mesh->charts[c]; @@ -7013,14 +7894,15 @@ struct Atlas chart->vertices = mesh->texcoords.data(); chart->vertexCount = mesh->texcoords.size(); chart->allowRotate = mesh->rotateCharts; + chart->boundaryEdges = nullptr; chart->faces.resize(uvChart->faces.size()); memcpy(chart->faces.data(), uvChart->faces.data(), sizeof(uint32_t) * uvChart->faces.size()); // Find unique vertices. - vertexUsed.clearAll(); + vertexUsed.zeroOutMemory(); for (uint32_t i = 0; i < chart->indexCount; i++) { const uint32_t vertex = chart->indices[i]; - if (!vertexUsed.bitAt(vertex)) { - vertexUsed.setBitAt(vertex); + if (!vertexUsed.get(vertex)) { + vertexUsed.set(vertex); chart->uniqueVertices.push_back(vertex); } } @@ -7045,24 +7927,22 @@ struct Atlas const Vector2 bounds = (maxCorner - minCorner) * 0.5f; chart->parametricArea = bounds.x * bounds.y; } - // Compute list of boundary vertices. + // Compute bounding box of chart. // Using all unique vertices for simplicity, can compute real boundaries if this is too slow. - boundary.clear(); + boundingBox.clear(); for (uint32_t v = 0; v < chart->uniqueVertexCount(); v++) - boundary.push_back(chart->uniqueVertexAt(v)); - XA_DEBUG_ASSERT(boundary.size() > 0); - // Compute bounding box of chart. - boundingBox.compute(boundary.data(), boundary.size(), boundary.data(), boundary.size()); - chart->majorAxis = boundingBox.majorAxis(); - chart->minorAxis = boundingBox.minorAxis(); - chart->minCorner = boundingBox.minCorner(); - chart->maxCorner = boundingBox.maxCorner(); + boundingBox.appendBoundaryVertex(chart->uniqueVertexAt(v)); + boundingBox.compute(); + chart->majorAxis = boundingBox.majorAxis; + chart->minorAxis = boundingBox.minorAxis; + chart->minCorner = boundingBox.minCorner; + chart->maxCorner = boundingBox.maxCorner; m_charts.push_back(chart); } } // Pack charts in the smallest possible rectangle. - bool packCharts(TaskScheduler *taskScheduler, const PackOptions &options, ProgressFunc progressFunc, void *progressUserData) + bool packCharts(const PackOptions &options, ProgressFunc progressFunc, void *progressUserData) { if (progressFunc) { if (!progressFunc(ProgressCategory::PackCharts, 0, progressUserData)) @@ -7107,10 +7987,11 @@ struct Atlas for (uint32_t c = 0; c < chartCount; c++) { Chart *chart = m_charts[c]; // Compute chart scale - float scale = (chart->surfaceArea / chart->parametricArea) * m_texelsPerUnit; - if (chart->parametricArea == 0.0f) - scale = 0; - XA_ASSERT(isFinite(scale)); + float scale = 1.0f; + if (chart->parametricArea != 0.0f) { + scale = (chart->surfaceArea / chart->parametricArea) * m_texelsPerUnit; + XA_ASSERT(isFinite(scale)); + } // Translate, rotate and scale vertices. Compute extents. Vector2 minCorner(FLT_MAX, FLT_MAX); if (!chart->allowRotate) { @@ -7181,6 +8062,8 @@ struct Atlas texcoord.y += 0.5f + options.padding; extents = max(extents, texcoord); } + if (extents.x > resolution || extents.y > resolution) + XA_PRINT(" Chart %u extents are large (%gx%g)\n", c, extents.x, extents.y); chartExtents[c] = extents; chartOrderArray[c] = extents.x + extents.y; // Use perimeter for chart sort key. minChartPerimeter = min(minChartPerimeter, chartOrderArray[c]); @@ -7207,6 +8090,7 @@ struct Atlas // Rotated versions swap x and y. BitImage chartImage, chartImageBilinear, chartImagePadding; BitImage chartImageRotated, chartImageBilinearRotated, chartImagePaddingRotated; + UniformGrid2 boundaryEdgeGrid; Array<Vector2i> atlasSizes; atlasSizes.push_back(Vector2i(0, 0)); int progress = 0; @@ -7249,7 +8133,7 @@ struct Atlas } // Expand chart by pixels sampled by bilinear interpolation. if (options.bilinear) - bilinearExpand(chart, &chartImage, &chartImageBilinear, chart->allowRotate ? &chartImageBilinearRotated : nullptr); + bilinearExpand(chart, &chartImage, &chartImageBilinear, chart->allowRotate ? &chartImageBilinearRotated : nullptr, boundaryEdgeGrid); // Expand chart by padding pixels (dilation). if (options.padding > 0) { // Copy into the same BitImage instances for every chart to avoid reallocating BitImage buffers (largest chart is packed first). @@ -7310,7 +8194,7 @@ struct Atlas chartStartPositions.push_back(Vector2i(0, 0)); } XA_PROFILE_START(packChartsFindLocation) - const bool foundLocation = findChartLocation(taskScheduler, chartStartPositions[currentAtlas], options.bruteForce, m_bitImages[currentAtlas], chartImageToPack, chartImageToPackRotated, atlasSizes[currentAtlas].x, atlasSizes[currentAtlas].y, &best_x, &best_y, &best_cw, &best_ch, &best_r, options.blockAlign, maxResolution, chart->allowRotate); + const bool foundLocation = findChartLocation(chartStartPositions[currentAtlas], options.bruteForce, m_bitImages[currentAtlas], chartImageToPack, chartImageToPackRotated, atlasSizes[currentAtlas].x, atlasSizes[currentAtlas].y, &best_x, &best_y, &best_cw, &best_ch, &best_r, options.blockAlign, maxResolution, chart->allowRotate); XA_PROFILE_END(packChartsFindLocation) XA_DEBUG_ASSERT(!(firstChartInBitImage && !foundLocation)); // Chart doesn't fit in an empty, newly allocated bitImage. Shouldn't happen, since charts are resized if they are too big to fit in the atlas. if (maxResolution == 0) { @@ -7359,6 +8243,13 @@ struct Atlas } else { m_atlasImages[currentAtlas]->addChart(c, &chartImageRotated, options.bilinear ? &chartImageBilinearRotated : nullptr, options.padding > 0 ? &chartImagePaddingRotated : nullptr, atlasSizes[currentAtlas].x, atlasSizes[currentAtlas].y, best_x, best_y); } +#if XA_DEBUG_EXPORT_ATLAS_IMAGES && XA_DEBUG_EXPORT_ATLAS_IMAGES_PER_CHART + for (uint32_t j = 0; j < m_atlasImages.size(); j++) { + char filename[256]; + XA_SPRINTF(filename, sizeof(filename), "debug_atlas_image%02u_chart%04u.tga", j, i); + m_atlasImages[j]->writeTga(filename, (uint32_t)atlasSizes[j].x, (uint32_t)atlasSizes[j].y); + } +#endif } chart->atlasIndex = (int32_t)currentAtlas; // Modify texture coordinates: @@ -7415,7 +8306,7 @@ struct Atlas uint32_t count = 0; for (uint32_t y = 0; y < m_height; y++) { for (uint32_t x = 0; x < m_width; x++) - count += m_bitImages[i]->bitAt(x, y); + count += m_bitImages[i]->get(x, y); } m_utilization[i] = float(count) / (m_width * m_height); } @@ -7445,70 +8336,56 @@ private: // is occupied at this point. At the end we have many small charts and a large atlas with sparse holes. Finding those holes randomly is slow. A better approach would be to // start stacking large charts as if they were tetris pieces. Once charts get small try to place them randomly. It may be interesting to try a intermediate strategy, first try // along one axis and then try exhaustively along that axis. - bool findChartLocation(TaskScheduler *taskScheduler, const Vector2i &startPosition, bool bruteForce, const BitImage *atlasBitImage, const BitImage *chartBitImage, const BitImage *chartBitImageRotated, int w, int h, int *best_x, int *best_y, int *best_w, int *best_h, int *best_r, bool blockAligned, uint32_t maxResolution, bool allowRotate) + bool findChartLocation(const Vector2i &startPosition, bool bruteForce, const BitImage *atlasBitImage, const BitImage *chartBitImage, const BitImage *chartBitImageRotated, int w, int h, int *best_x, int *best_y, int *best_w, int *best_h, int *best_r, bool blockAligned, uint32_t maxResolution, bool allowRotate) { const int attempts = 4096; if (bruteForce || attempts >= w * h) - return findChartLocation_bruteForce(taskScheduler, startPosition, atlasBitImage, chartBitImage, chartBitImageRotated, w, h, best_x, best_y, best_w, best_h, best_r, blockAligned, maxResolution, allowRotate); + return findChartLocation_bruteForce(startPosition, atlasBitImage, chartBitImage, chartBitImageRotated, w, h, best_x, best_y, best_w, best_h, best_r, blockAligned, maxResolution, allowRotate); return findChartLocation_random(atlasBitImage, chartBitImage, chartBitImageRotated, w, h, best_x, best_y, best_w, best_h, best_r, attempts, blockAligned, maxResolution, allowRotate); } - bool findChartLocation_bruteForce(TaskScheduler *taskScheduler, const Vector2i &startPosition, const BitImage *atlasBitImage, const BitImage *chartBitImage, const BitImage *chartBitImageRotated, int w, int h, int *best_x, int *best_y, int *best_w, int *best_h, int *best_r, bool blockAligned, uint32_t maxResolution, bool allowRotate) + bool findChartLocation_bruteForce(const Vector2i &startPosition, const BitImage *atlasBitImage, const BitImage *chartBitImage, const BitImage *chartBitImageRotated, int w, int h, int *best_x, int *best_y, int *best_w, int *best_h, int *best_r, bool blockAligned, uint32_t maxResolution, bool allowRotate) { const int stepSize = blockAligned ? 4 : 1; - const int chartMinHeight = min(chartBitImage->height(), chartBitImageRotated->height()); - uint32_t taskCount = 0; - for (int y = startPosition.y; y <= h + stepSize; y += stepSize) { - if (maxResolution > 0 && y > (int)maxResolution - chartMinHeight) - break; - taskCount++; - } - m_bruteForceTaskArgs.clear(); - m_bruteForceTaskArgs.resize(taskCount); - TaskGroupHandle taskGroup = taskScheduler->createTaskGroup(taskCount); - std::atomic<bool> finished(false); // One of the tasks found a location that doesn't expand the atlas. - uint32_t i = 0; - for (int y = startPosition.y; y <= h + stepSize; y += stepSize) { - if (maxResolution > 0 && y > (int)maxResolution - chartMinHeight) - break; - FindChartLocationBruteForceTaskArgs &args = m_bruteForceTaskArgs[i]; - args.finished = &finished; - args.startPosition = Vector2i(y == startPosition.y ? startPosition.x : 0, y); - args.atlasBitImage = atlasBitImage; - args.chartBitImage = chartBitImage; - args.chartBitImageRotated = chartBitImageRotated; - args.w = w; - args.h = h; - args.blockAligned = blockAligned; - args.allowRotate = allowRotate; - args.maxResolution = maxResolution; - Task task; - task.userData = &m_bruteForceTaskArgs[i]; - task.func = runFindChartLocationBruteForceTask; - taskScheduler->run(taskGroup, task); - i++; - } - taskScheduler->wait(&taskGroup); - // Find the task result with the best metric. int best_metric = INT_MAX; - bool best_insideAtlas = false; - for (i = 0; i < taskCount; i++) { - FindChartLocationBruteForceTaskArgs &args = m_bruteForceTaskArgs[i]; - if (args.best_metric > best_metric) - continue; - // A location that doesn't expand the atlas is always preferred. - if (!args.best_insideAtlas && best_insideAtlas) - continue; - // If metric is the same, pick the one closest to the origin. - if (args.best_insideAtlas == best_insideAtlas && args.best_metric == best_metric && max(args.best_x, args.best_y) >= max(*best_x, *best_y)) - continue; - best_metric = args.best_metric; - best_insideAtlas = args.best_insideAtlas; - *best_x = args.best_x; - *best_y = args.best_y; - *best_w = args.best_w; - *best_h = args.best_h; - *best_r = args.best_r; + // Try two different orientations. + for (int r = 0; r < 2; r++) { + int cw = chartBitImage->width(); + int ch = chartBitImage->height(); + if (r == 1) { + if (allowRotate) + swap(cw, ch); + else + break; + } + for (int y = startPosition.y; y <= h + stepSize; y += stepSize) { + if (maxResolution > 0 && y > (int)maxResolution - ch) + break; + for (int x = (y == startPosition.y ? startPosition.x : 0); x <= w + stepSize; x += stepSize) { + if (maxResolution > 0 && x > (int)maxResolution - cw) + break; + // Early out if metric is not better. + const int extentX = max(w, x + cw), extentY = max(h, y + ch); + const int area = extentX * extentY; + const int extents = max(extentX, extentY); + const int metric = extents * extents + area; + if (metric > best_metric) + continue; + // If metric is the same, pick the one closest to the origin. + if (metric == best_metric && max(x, y) >= max(*best_x, *best_y)) + continue; + if (!atlasBitImage->canBlit(r == 1 ? *chartBitImageRotated : *chartBitImage, x, y)) + continue; + best_metric = metric; + *best_x = x; + *best_y = y; + *best_w = cw; + *best_h = ch; + *best_r = r; + if (area == w * h) + return true; // Chart is completely inside, do not look at any other location. + } + } } return best_metric != INT_MAX; } @@ -7581,10 +8458,10 @@ private: for (int x = 0; x < w; x++) { int xx = x + offset_x; if (xx >= 0) { - if (image->bitAt(x, y)) { + if (image->get(x, y)) { if (xx < atlas_w && yy < atlas_h) { - XA_DEBUG_ASSERT(atlasBitImage->bitAt(xx, yy) == false); - atlasBitImage->setBitAt(xx, yy); + XA_DEBUG_ASSERT(atlasBitImage->get(xx, yy) == false); + atlasBitImage->set(xx, yy); } } } @@ -7593,14 +8470,23 @@ private: } } - void bilinearExpand(const Chart *chart, BitImage *source, BitImage *dest, BitImage *destRotated) const + void bilinearExpand(const Chart *chart, BitImage *source, BitImage *dest, BitImage *destRotated, UniformGrid2 &boundaryEdgeGrid) const { + boundaryEdgeGrid.reset(chart->vertices, chart->indices); + if (chart->boundaryEdges) { + const uint32_t edgeCount = chart->boundaryEdges->size(); + for (uint32_t i = 0; i < edgeCount; i++) + boundaryEdgeGrid.append((*chart->boundaryEdges)[i]); + } else { + for (uint32_t i = 0; i < chart->indexCount; i++) + boundaryEdgeGrid.append(i); + } const int xOffsets[] = { -1, 0, 1, -1, 1, -1, 0, 1 }; const int yOffsets[] = { -1, -1, -1, 0, 0, 1, 1, 1 }; for (uint32_t y = 0; y < source->height(); y++) { for (uint32_t x = 0; x < source->width(); x++) { // Copy pixels from source. - if (source->bitAt(x, y)) + if (source->get(x, y)) goto setPixel; // Empty pixel. If none of of the surrounding pixels are set, this pixel can't be sampled by bilinear interpolation. { @@ -7610,44 +8496,32 @@ private: const int sy = (int)y + yOffsets[s]; if (sx < 0 || sy < 0 || sx >= (int)source->width() || sy >= (int)source->height()) continue; - if (source->bitAt((uint32_t)sx, (uint32_t)sy)) + if (source->get((uint32_t)sx, (uint32_t)sy)) break; } if (s == 8) continue; } - // If a 2x2 square centered on the pixels centroid intersects the triangle, this pixel will be sampled by bilinear interpolation. - // See "Precomputed Global Illumination in Frostbite (GDC 2018)" page 95 - for (uint32_t f = 0; f < chart->indexCount / 3; f++) { + { + // If a 2x2 square centered on the pixels centroid intersects the triangle, this pixel will be sampled by bilinear interpolation. + // See "Precomputed Global Illumination in Frostbite (GDC 2018)" page 95 const Vector2 centroid((float)x + 0.5f, (float)y + 0.5f); - Vector2 vertices[3]; - for (uint32_t i = 0; i < 3; i++) - vertices[i] = chart->vertices[chart->indices[f * 3 + i]]; - // Test for triangle vertex in square bounds. - for (uint32_t i = 0; i < 3; i++) { - const Vector2 &v = vertices[i]; - if (v.x > centroid.x - 1.0f && v.x < centroid.x + 1.0f && v.y > centroid.y - 1.0f && v.y < centroid.y + 1.0f) - goto setPixel; - } - // Test for triangle edge intersection with square edge. const Vector2 squareVertices[4] = { Vector2(centroid.x - 1.0f, centroid.y - 1.0f), Vector2(centroid.x + 1.0f, centroid.y - 1.0f), Vector2(centroid.x + 1.0f, centroid.y + 1.0f), Vector2(centroid.x - 1.0f, centroid.y + 1.0f) }; - for (uint32_t i = 0; i < 3; i++) { - for (uint32_t j = 0; j < 4; j++) { - if (linesIntersect(vertices[i], vertices[(i + 1) % 3], squareVertices[j], squareVertices[(j + 1) % 4], 0.0f)) - goto setPixel; - } + for (uint32_t j = 0; j < 4; j++) { + if (boundaryEdgeGrid.intersect(squareVertices[j], squareVertices[(j + 1) % 4], 0.0f)) + goto setPixel; } } continue; setPixel: - dest->setBitAt(x, y); + dest->set(x, y); if (destRotated) - destRotated->setBitAt(y, x); + destRotated->set(y, x); } } } @@ -7660,9 +8534,9 @@ private: static bool drawTriangleCallback(void *param, int x, int y) { auto args = (DrawTriangleCallbackArgs *)param; - args->chartBitImage->setBitAt(x, y); + args->chartBitImage->set(x, y); if (args->chartBitImageRotated) - args->chartBitImageRotated->setBitAt(y, x); + args->chartBitImageRotated->set(y, x); return true; } @@ -7670,7 +8544,6 @@ private: Array<float> m_utilization; Array<BitImage *> m_bitImages; Array<Chart *> m_charts; - Array<FindChartLocationBruteForceTaskArgs> m_bruteForceTaskArgs; RadixSort m_radix; uint32_t m_width = 0; uint32_t m_height = 0; @@ -7789,13 +8662,6 @@ static void runAddMeshTask(void *userData) } if (progress->cancel) goto cleanup; - { - XA_PROFILE_START(addMeshCreateBoundaries) - mesh->createBoundaries(); - XA_PROFILE_END(addMeshCreateBoundaries) - } - if (progress->cancel) - goto cleanup; #if XA_DEBUG_EXPORT_OBJ_SOURCE_MESHES char filename[256]; XA_SPRINTF(filename, sizeof(filename), "debug_mesh_%03u.obj", mesh->id()); @@ -7805,22 +8671,22 @@ static void runAddMeshTask(void *userData) mesh->writeObjVertices(file); // groups uint32_t numGroups = 0; - for (uint32_t i = 0; i < mesh->faceGroupCount(); i++) { - if (mesh->faceGroupAt(i) != UINT32_MAX) + for (uint32_t i = 0; i < mesh->faceCount(); i++) { + if (mesh->faceGroupAt(i) != Mesh::kInvalidFaceGroup) numGroups = internal::max(numGroups, mesh->faceGroupAt(i) + 1); } for (uint32_t i = 0; i < numGroups; i++) { fprintf(file, "o group_%04d\n", i); fprintf(file, "s off\n"); - for (uint32_t f = 0; f < mesh->faceGroupCount(); f++) { + for (uint32_t f = 0; f < mesh->faceCount(); f++) { if (mesh->faceGroupAt(f) == i) mesh->writeObjFace(file, f); } } fprintf(file, "o group_ignored\n"); fprintf(file, "s off\n"); - for (uint32_t f = 0; f < mesh->faceGroupCount(); f++) { - if (mesh->faceGroupAt(f) == UINT32_MAX) + for (uint32_t f = 0; f < mesh->faceCount(); f++) { + if (mesh->faceGroupAt(f) == Mesh::kInvalidFaceGroup) mesh->writeObjFace(file, f); } mesh->writeObjBoundaryEges(file); @@ -8033,7 +8899,6 @@ void AddMeshJoin(Atlas *atlas) XA_PROFILE_PRINT_AND_RESET(" Total (thread): ", addMeshThread) XA_PROFILE_PRINT_AND_RESET(" Create colocals: ", addMeshCreateColocals) XA_PROFILE_PRINT_AND_RESET(" Create face groups: ", addMeshCreateFaceGroups) - XA_PROFILE_PRINT_AND_RESET(" Create boundaries: ", addMeshCreateBoundaries) XA_PROFILE_PRINT_AND_RESET(" Create chart groups (real): ", addMeshCreateChartGroupsReal) XA_PROFILE_PRINT_AND_RESET(" Create chart groups (thread): ", addMeshCreateChartGroupsThread) XA_PRINT_MEM_USAGE @@ -8044,16 +8909,7 @@ struct EdgeKey EdgeKey() {} EdgeKey(const EdgeKey &k) : v0(k.v0), v1(k.v1) {} EdgeKey(uint32_t v0, uint32_t v1) : v0(v0), v1(v1) {} - - void operator=(const EdgeKey &k) - { - v0 = k.v0; - v1 = k.v1; - } - bool operator==(const EdgeKey &k) const - { - return v0 == k.v0 && v1 == k.v1; - } + bool operator==(const EdgeKey &k) const { return v0 == k.v0 && v1 == k.v1; } uint32_t v0; uint32_t v1; @@ -8119,15 +8975,15 @@ AddMeshError::Enum AddUvMesh(Atlas *atlas, const UvMeshDecl &decl) for (uint32_t i = 0; i < indexCount; i++) vertexToFaceMap.add(meshInstance->texcoords[mesh->indices[i]]); internal::BitArray faceAssigned(faceCount); - faceAssigned.clearAll(); + faceAssigned.zeroOutMemory(); for (uint32_t f = 0; f < faceCount; f++) { - if (faceAssigned.bitAt(f)) + if (faceAssigned.get(f)) continue; // Found an unassigned face, create a new chart. internal::UvMeshChart *chart = XA_NEW(internal::MemTag::Default, internal::UvMeshChart); chart->material = decl.faceMaterialData ? decl.faceMaterialData[f] : 0; // Walk incident faces and assign them to the chart. - faceAssigned.setBitAt(f); + faceAssigned.set(f); chart->faces.push_back(f); for (;;) { bool newFaceAssigned = false; @@ -8140,8 +8996,8 @@ AddMeshError::Enum AddUvMesh(Atlas *atlas, const UvMeshDecl &decl) while (mapIndex != UINT32_MAX) { const uint32_t face2 = mapIndex / 3; // 3 vertices added per face. // Materials must match. - if (!faceAssigned.bitAt(face2) && (!decl.faceMaterialData || decl.faceMaterialData[face] == decl.faceMaterialData[face2])) { - faceAssigned.setBitAt(face2); + if (!faceAssigned.get(face2) && (!decl.faceMaterialData || decl.faceMaterialData[face] == decl.faceMaterialData[face2])) { + faceAssigned.set(face2); chart->faces.push_back(face2); newFaceAssigned = true; } @@ -8202,6 +9058,7 @@ void ComputeCharts(Atlas *atlas, ChartOptions chartOptions) continue; for (uint32_t k = 0; k < chartGroup->chartCount(); k++) { const internal::param::Chart *chart = chartGroup->chartAt(k); +#if XA_PRINT_CHART_WARNINGS if (chart->warningFlags() & internal::param::ChartWarningFlags::CloseHolesFailed) XA_PRINT_WARNING(" Chart %u (mesh %u, group %u, id %u): failed to close holes\n", chartCount, i, j, k); if (chart->warningFlags() & internal::param::ChartWarningFlags::FixTJunctionsDuplicatedEdge) @@ -8210,8 +9067,7 @@ void ComputeCharts(Atlas *atlas, ChartOptions chartOptions) XA_PRINT_WARNING(" Chart %u (mesh %u, group %u, id %u): fixing t-junctions failed\n", chartCount, i, j, k); if (chart->warningFlags() & internal::param::ChartWarningFlags::TriangulateDuplicatedEdge) XA_PRINT_WARNING(" Chart %u (mesh %u, group %u, id %u): triangulation created non-manifold geometry\n", chartCount, i, j, k); - if (!chart->isDisk()) - XA_PRINT_WARNING(" Chart %u (mesh %u, group %u, id %u): doesn't have disk topology\n", chartCount, i, j, k); +#endif holesCount += chart->closedHolesCount(); if (chart->closedHolesCount() > 0) chartsWithHolesCount++; @@ -8279,7 +9135,7 @@ void ParameterizeCharts(Atlas *atlas, ParameterizeFunc func) return; } XA_PROFILE_END(parameterizeChartsReal) - uint32_t chartCount = 0, orthoChartsCount = 0, planarChartsCount = 0, chartsAddedCount = 0, chartsDeletedCount = 0; + uint32_t chartCount = 0, orthoChartsCount = 0, planarChartsCount = 0, lscmChartsCount = 0, piecewiseChartsCount = 0, chartsAddedCount = 0, chartsDeletedCount = 0; for (uint32_t i = 0; i < ctx->meshCount; i++) { for (uint32_t j = 0; j < ctx->paramAtlas.chartGroupCount(i); j++) { const internal::param::ChartGroup *chartGroup = ctx->paramAtlas.chartGroupAt(i, j); @@ -8287,19 +9143,23 @@ void ParameterizeCharts(Atlas *atlas, ParameterizeFunc func) continue; for (uint32_t k = 0; k < chartGroup->chartCount(); k++) { const internal::param::Chart *chart = chartGroup->chartAt(k); - if (chart->isPlanar()) + if (chart->type() == ChartType::Planar) planarChartsCount++; - else if (chart->isOrtho()) + else if (chart->type() == ChartType::Ortho) orthoChartsCount++; + else if (chart->type() == ChartType::LSCM) + lscmChartsCount++; + else if (chart->type() == ChartType::Piecewise) + piecewiseChartsCount++; } chartCount += chartGroup->chartCount(); chartsAddedCount += chartGroup->paramAddedChartsCount(); chartsDeletedCount += chartGroup->paramDeletedChartsCount(); } } - XA_PRINT(" %u planar charts, %u ortho charts, %u other\n", planarChartsCount, orthoChartsCount, chartCount - (planarChartsCount + orthoChartsCount)); + XA_PRINT(" %u planar charts, %u ortho charts, %u LSCM charts, %u piecewise charts\n", planarChartsCount, orthoChartsCount, lscmChartsCount, piecewiseChartsCount); if (chartsDeletedCount > 0) { - XA_PRINT(" %u charts deleted due to invalid parameterizations, %u new charts added\n", chartsDeletedCount, chartsAddedCount); + XA_PRINT(" %u charts with invalid parameterizations replaced with %u new charts\n", chartsDeletedCount, chartsAddedCount); XA_PRINT(" %u charts\n", chartCount); } uint32_t chartIndex = 0, invalidParamCount = 0; @@ -8310,7 +9170,7 @@ void ParameterizeCharts(Atlas *atlas, ParameterizeFunc func) continue; for (uint32_t k = 0; k < chartGroup->chartCount(); k++) { const internal::param::Chart *chart = chartGroup->chartAt(k); - const internal::param::ParameterizationQuality &quality = chart->paramQuality(); + const internal::param::Quality &quality = chart->quality(); #if XA_DEBUG_EXPORT_OBJ_CHARTS_AFTER_PARAMETERIZATION { char filename[256]; @@ -8319,13 +9179,20 @@ void ParameterizeCharts(Atlas *atlas, ParameterizeFunc func) } #endif bool invalid = false; + const char *type = "LSCM"; + if (chart->type() == ChartType::Planar) + type = "planar"; + else if (chart->type() == ChartType::Ortho) + type = "ortho"; + else if (chart->type() == ChartType::Piecewise) + type = "piecewise"; if (quality.boundaryIntersection) { invalid = true; - XA_PRINT_WARNING(" Chart %u (mesh %u, group %u, id %u) (%s): invalid parameterization, self-intersecting boundary.\n", chartIndex, i, j, k, chart->isPlanar() ? "planar" : chart->isOrtho() ? "ortho" : "other"); + XA_PRINT_WARNING(" Chart %u (mesh %u, group %u, id %u) (%s): invalid parameterization, self-intersecting boundary.\n", chartIndex, i, j, k, type); } if (quality.flippedTriangleCount > 0) { invalid = true; - XA_PRINT_WARNING(" Chart %u (mesh %u, group %u, id %u) (%s): invalid parameterization, %u / %u flipped triangles.\n", chartIndex, i, j, k, chart->isPlanar() ? "planar" : chart->isOrtho() ? "ortho" : "other", quality.flippedTriangleCount, quality.totalTriangleCount); + XA_PRINT_WARNING(" Chart %u (mesh %u, group %u, id %u) (%s): invalid parameterization, %u / %u flipped triangles.\n", chartIndex, i, j, k, type, quality.flippedTriangleCount, quality.totalTriangleCount); } if (invalid) invalidParamCount++; @@ -8415,7 +9282,7 @@ void PackCharts(Atlas *atlas, PackOptions packOptions) packAtlas.addCharts(ctx->taskScheduler, &ctx->paramAtlas); XA_PROFILE_END(packChartsAddCharts) XA_PROFILE_START(packCharts) - if (!packAtlas.packCharts(ctx->taskScheduler, packOptions, ctx->progressFunc, ctx->progressUserData)) + if (!packAtlas.packCharts(packOptions, ctx->progressFunc, ctx->progressUserData)) return; XA_PROFILE_END(packCharts) // Populate atlas object with pack results. @@ -8440,8 +9307,7 @@ void PackCharts(Atlas *atlas, PackOptions packOptions) XA_PROFILE_PRINT_AND_RESET(" Restore texcoords: ", packChartsAddChartsRestoreTexcoords) XA_PROFILE_PRINT_AND_RESET(" Rasterize: ", packChartsRasterize) XA_PROFILE_PRINT_AND_RESET(" Dilate (padding): ", packChartsDilate) - XA_PROFILE_PRINT_AND_RESET(" Find location (real): ", packChartsFindLocation) - XA_PROFILE_PRINT_AND_RESET(" Find location (thread): ", packChartsFindLocationThread) + XA_PROFILE_PRINT_AND_RESET(" Find location: ", packChartsFindLocation) XA_PROFILE_PRINT_AND_RESET(" Blit: ", packChartsBlit) XA_PRINT_MEM_USAGE XA_PRINT("Building output meshes\n"); @@ -8527,9 +9393,7 @@ void PackCharts(Atlas *atlas, PackOptions packOptions) const int32_t atlasIndex = packAtlas.getChart(chartIndex)->atlasIndex; XA_DEBUG_ASSERT(atlasIndex >= 0); outputChart->atlasIndex = (uint32_t)atlasIndex; - outputChart->flags = 0; - if (chart->paramQuality().boundaryIntersection || chart->paramQuality().flippedTriangleCount > 0) - outputChart->flags |= ChartFlags::Invalid; + outputChart->type = chart->type(); outputChart->faceCount = mesh->faceCount(); outputChart->faceArray = XA_ALLOC_ARRAY(internal::MemTag::Default, uint32_t, outputChart->faceCount); for (uint32_t f = 0; f < outputChart->faceCount; f++) diff --git a/thirdparty/xatlas/xatlas.h b/thirdparty/xatlas/xatlas.h index 7be165e7e5..e59f493287 100644 --- a/thirdparty/xatlas/xatlas.h +++ b/thirdparty/xatlas/xatlas.h @@ -35,11 +35,14 @@ Copyright NVIDIA Corporation 2006 -- Ignacio Castano <icastano@nvidia.com> namespace xatlas { -struct ChartFlags +struct ChartType { - enum + enum Enum { - Invalid = 1 << 0 + Planar, + Ortho, + LSCM, + Piecewise }; }; @@ -47,10 +50,10 @@ struct ChartFlags struct Chart { uint32_t atlasIndex; // Sub-atlas index. - uint32_t flags; uint32_t *faceArray; uint32_t faceCount; uint32_t material; + ChartType::Enum type; }; // Output vertex. diff --git a/version.py b/version.py index fee6809551..930981f7af 100644 --- a/version.py +++ b/version.py @@ -2,7 +2,8 @@ short_name = "godot" name = "Godot Engine" major = 3 minor = 2 +patch = 0 status = "beta" module_config = "" -year = 2019 +year = 2020 website = "https://godotengine.org" |